1 /* Do not modify this file. */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler */
3 /* ./packet-gsm_ss.c */
4 /* ../../tools/asn2eth.py -X -b -e -p gsm_ss -c gsm_ss.cnf -s packet-gsm_ss-template SS-Operations.asn */
6 /* Input file: packet-gsm_ss-template.c */
8 #line 1 "packet-gsm_ss-template.c"
9 /* packet-gsm_ss-template.c
10 * Routines for GSM Supplementary Services dissection
11 * Copyright 2005, Anders Broman <anders.broman@ericsson.com>
12 * Based on the dissector by:
13 * Michael Lum <mlum [AT] telostech.com>
14 * In association with Telos Technology Inc.
19 * Mobile radio Layer 3 supplementary service specification;
21 * (3GPP TS 24.080 version )
24 * Wireshark - Network traffic analyzer
25 * By Gerald Combs <gerald@wireshark.org>
26 * Copyright 1998 Gerald Combs
28 * This program is free software; you can redistribute it and/or
29 * modify it under the terms of the GNU General Public License
30 * as published by the Free Software Foundation; either version 2
31 * of the License, or (at your option) any later version.
33 * This program is distributed in the hope that it will be useful,
34 * but WITHOUT ANY WARRANTY; without even the implied warranty of
35 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
36 * GNU General Public License for more details.
38 * You should have received a copy of the GNU General Public License
39 * along with this program; if not, write to the Free Software
40 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
41 * References: ETSI TS 129 002
49 #include <epan/packet.h>
50 #include <epan/prefs.h>
51 #include <epan/conversation.h>
57 #include "packet-ber.h"
58 #include "packet-gsm_ss.h"
59 #include "packet-gsm_map.h"
61 #define PNAME "GSM_SS"
62 #define PSNAME "GSM_SS"
63 #define PFNAME "gsm_ss"
65 const value_string gsm_ss_err_code_strings[] = {
66 { 1, "Unknown Subscriber" },
68 { 5, "Unidentified Subscriber" },
69 { 6, "Absent Subscriber SM" },
70 { 7, "Unknown Equipment" },
71 { 8, "Roaming Not Allowed" },
72 { 9, "Illegal Subscriber" },
73 { 10, "Bearer Service Not Provisioned" },
74 { 11, "Teleservice Not Provisioned" },
75 { 12, "Illegal Equipment" },
76 { 13, "Call Barred" },
77 { 14, "Forwarding Violation" },
79 { 16, "Illegal SS Operation" },
80 { 17, "SS Error Status" },
81 { 18, "SS Not Available" },
82 { 19, "SS Subscription Violation" },
83 { 20, "SS Incompatibility" },
84 { 21, "Facility Not Supported" },
85 { 25, "No Handover Number Available" },
86 { 26, "Subsequent Handover Failure" },
87 { 27, "Absent Subscriber" },
88 { 28, "Incompatible Terminal" },
89 { 29, "Short Term Denial" },
90 { 30, "Long Term Denial" },
91 { 31, "Subscriber Busy For MT SMS" },
92 { 32, "SM Delivery Failure" },
93 { 33, "Message Waiting List Full" },
94 { 34, "System Failure" },
95 { 35, "Data Missing" },
96 { 36, "Unexpected Data Value" },
97 { 37, "PW Registration Failure" },
98 { 38, "Negative PW Check" },
99 { 39, "No Roaming Number Available" },
100 { 40, "Tracing Buffer Full" },
101 { 42, "Target Cell Outside Group Call Area" },
102 { 43, "Number Of PW Attempts Violation" },
103 { 44, "Number Changed" },
104 { 45, "Busy Subscriber" },
105 { 46, "No Subscriber Reply" },
106 { 47, "Forwarding Failed" },
107 { 48, "OR Not Allowed" },
108 { 49, "ATI Not Allowed" },
109 { 50, "No Group Call Number Available" },
110 { 51, "Resource Limitation" },
111 { 52, "Unauthorized Requesting Network" },
112 { 53, "Unauthorized LCS Client" },
113 { 54, "Position Method Failure" },
114 { 58, "Unknown Or Unreachable LCS Client" },
115 { 59, "MM Event Not Supported" },
116 { 60, "ATSI Not Allowed" },
117 { 61, "ATM Not Allowed" },
118 { 62, "Information Not Available" },
119 { 71, "Unknown Alphabet" },
121 { 120, "Nbr Sb Exceeded" },
122 { 121, "Rejected By User" },
123 { 122, "Rejected By Network" },
124 { 123, "Deflection To Served Subscriber" },
125 { 124, "Special Service Code" },
126 { 125, "Invalid Deflected To Number" },
127 { 126, "Max Number Of MPTY Participants Exceeded" },
128 { 127, "Resources Not Available" },
132 const value_string gsm_ss_opr_code_strings[] = {
133 { 10, "Register SS" },
135 { 12, "Activate SS" },
136 { 13, "Deactivate SS" },
137 { 14, "Interrogate SS" },
139 { 17, "Register Password" },
140 { 18, "Get Password" },
141 { 19, "Process Unstructured SS Data" },
142 { 38, "Forward Check SS Indication" },
143 { 59, "Process Unstructured SS Request" },
144 { 60, "Unstructured SS Request" },
145 { 61, "Unstructured SS Notify" },
146 { 77, "Erase CC Entry" },
147 { 112, "lcs-AreaEventCancellation" },
148 { 113, "lcs-AreaEventReport" },
149 { 114, "LCS-AreaEventRequest" },
151 { 116, "LCS Location Notification" },
152 { 117, "Call Deflection" },
153 { 118, "User User Service" },
154 { 119, "Access Register CC Entry" },
155 { 120, "Forward CUG Info" },
156 { 121, "Split MPTY" },
157 { 122, "Retrieve MPTY" },
158 { 123, "Hold MPTY" },
159 { 124, "Build MPTY" },
160 { 125, "Forward Charge Advice" },
161 { 126, "Explicit CT" },
166 /* Initialize the protocol and registered fields */
167 int proto_gsm_ss = -1;
169 static int hf_gsm_ss_getPassword = -1;
170 static int hf_gsm_ss_currentPassword = -1;
171 static int hf_gsm_ss_SS_Code = -1;
173 /*--- Included file: packet-gsm_ss-hf.c ---*/
174 #line 1 "packet-gsm_ss-hf.c"
175 static int hf_gsm_ss_notifySS = -1; /* NotifySS_Arg */
176 static int hf_gsm_ss_processUnstructuredSS_Data = -1; /* SS_UserData */
177 static int hf_gsm_ss_forwardCUG_Info = -1; /* ForwardCUG_InfoArg */
178 static int hf_gsm_ss_accessRegisterCCEntry = -1; /* AccessRegisterCCEntryArg */
179 static int hf_gsm_ss_forwardChargeAdvice = -1; /* ForwardChargeAdviceArg */
180 static int hf_gsm_ss_callDeflection = -1; /* CallDeflectionArg */
181 static int hf_gsm_ss_lcs_LocationNotification = -1; /* LocationNotificationArg */
182 static int hf_gsm_ss_lcs_MOLR = -1; /* LCS_MOLRArg */
183 static int hf_gsm_ss_lcs_AreaEventRequest = -1; /* LCS_AreaEventRequestArg */
184 static int hf_gsm_ss_lcs_AreaEventReport = -1; /* LCS_AreaEventReportArg */
185 static int hf_gsm_ss_lcs_AreaEventCancellation = -1; /* LCS_AreaEventCancellationArg */
186 static int hf_gsm_ss_registerCC_EntryRes = -1; /* RegisterCC_EntryRes */
187 static int hf_gsm_ss_lcs_LocationNotification_res = -1; /* LocationNotificationRes */
188 static int hf_gsm_ss_lcs_MOLR_res = -1; /* LCS_MOLRRes */
189 static int hf_gsm_ss_ss_Code = -1; /* SS_Code */
190 static int hf_gsm_ss_ss_Status = -1; /* SS_Status */
191 static int hf_gsm_ss_ss_Notification = -1; /* SS_Notification */
192 static int hf_gsm_ss_callIsWaiting_Indicator = -1; /* NULL */
193 static int hf_gsm_ss_callOnHold_Indicator = -1; /* CallOnHold_Indicator */
194 static int hf_gsm_ss_mpty_Indicator = -1; /* NULL */
195 static int hf_gsm_ss_cug_Index = -1; /* CUG_Index */
196 static int hf_gsm_ss_clirSuppressionRejected = -1; /* NULL */
197 static int hf_gsm_ss_ect_Indicator = -1; /* ECT_Indicator */
198 static int hf_gsm_ss_nameIndicator = -1; /* NameIndicator */
199 static int hf_gsm_ss_ccbs_Feature = -1; /* CCBS_Feature */
200 static int hf_gsm_ss_alertingPattern = -1; /* AlertingPattern */
201 static int hf_gsm_ss_multicall_Indicator = -1; /* Multicall_Indicator */
202 static int hf_gsm_ss_chargingInformation = -1; /* ChargingInformation */
203 static int hf_gsm_ss_e1 = -1; /* E1 */
204 static int hf_gsm_ss_e2 = -1; /* E2 */
205 static int hf_gsm_ss_e3 = -1; /* E3 */
206 static int hf_gsm_ss_e4 = -1; /* E4 */
207 static int hf_gsm_ss_e5 = -1; /* E5 */
208 static int hf_gsm_ss_e6 = -1; /* E6 */
209 static int hf_gsm_ss_e7 = -1; /* E7 */
210 static int hf_gsm_ss_suppressPrefCUG = -1; /* NULL */
211 static int hf_gsm_ss_suppressOA = -1; /* NULL */
212 static int hf_gsm_ss_ect_CallState = -1; /* ECT_CallState */
213 static int hf_gsm_ss_rdn = -1; /* RDN */
214 static int hf_gsm_ss_callingName = -1; /* Name */
215 static int hf_gsm_ss_namePresentationAllowed = -1; /* NameSet */
216 static int hf_gsm_ss_presentationRestricted = -1; /* NULL */
217 static int hf_gsm_ss_nameUnavailable = -1; /* NULL */
218 static int hf_gsm_ss_namePresentationRestricted = -1; /* NameSet */
219 static int hf_gsm_ss_dataCodingScheme = -1; /* USSD_DataCodingScheme */
220 static int hf_gsm_ss_lengthInCharacters = -1; /* INTEGER */
221 static int hf_gsm_ss_nameString = -1; /* USSD_String */
222 static int hf_gsm_ss_presentationAllowedAddress = -1; /* RemotePartyNumber */
223 static int hf_gsm_ss_numberNotAvailableDueToInterworking = -1; /* NULL */
224 static int hf_gsm_ss_presentationRestrictedAddress = -1; /* RemotePartyNumber */
225 static int hf_gsm_ss_partyNumber = -1; /* ISDN_AddressString */
226 static int hf_gsm_ss_partyNumberSubaddress = -1; /* ISDN_SubaddressString */
227 static int hf_gsm_ss_ccbs_Feature1 = -1; /* T_ccbs_Feature */
228 static int hf_gsm_ss_ccbs_Index = -1; /* INTEGER_1_5 */
229 static int hf_gsm_ss_b_subscriberNumber = -1; /* T_b_subscriberNumber */
230 static int hf_gsm_ss_b_subscriberSubaddress = -1; /* OCTET_STRING_SIZE_1_21 */
231 static int hf_gsm_ss_basicServiceGroup = -1; /* T_basicServiceGroup */
232 static int hf_gsm_ss_bearerService = -1; /* OCTET_STRING_SIZE_1 */
233 static int hf_gsm_ss_teleservice = -1; /* OCTET_STRING_SIZE_1 */
234 static int hf_gsm_ss_deflectedToNumber = -1; /* AddressString */
235 static int hf_gsm_ss_deflectedToSubaddress = -1; /* ISDN_SubaddressString */
236 static int hf_gsm_ss_uUS_Service = -1; /* UUS_Service */
237 static int hf_gsm_ss_uUS_Required = -1; /* BOOLEAN */
238 static int hf_gsm_ss_notificationType = -1; /* NotificationToMSUser */
239 static int hf_gsm_ss_locationType = -1; /* LocationType */
240 static int hf_gsm_ss_lcsClientExternalID = -1; /* LCSClientExternalID */
241 static int hf_gsm_ss_lcsClientName = -1; /* LCSClientName */
242 static int hf_gsm_ss_lcsRequestorID = -1; /* LCSRequestorID */
243 static int hf_gsm_ss_lcsCodeword = -1; /* LCSCodeword */
244 static int hf_gsm_ss_lcsServiceTypeID = -1; /* LCSServiceTypeID */
245 static int hf_gsm_ss_verificationResponse = -1; /* VerificationResponse */
246 static int hf_gsm_ss_molr_Type = -1; /* MOLR_Type */
247 static int hf_gsm_ss_locationMethod = -1; /* LocationMethod */
248 static int hf_gsm_ss_lcs_QoS = -1; /* LCS_QoS */
249 static int hf_gsm_ss_mlc_Number = -1; /* ISDN_AddressString */
250 static int hf_gsm_ss_gpsAssistanceData = -1; /* GPSAssistanceData */
251 static int hf_gsm_ss_supportedGADShapes = -1; /* SupportedGADShapes */
252 static int hf_gsm_ss_ageOfLocationInfo = -1; /* AgeOfLocationInformation */
253 static int hf_gsm_ss_pseudonymIndicator = -1; /* NULL */
254 static int hf_gsm_ss_locationEstimate = -1; /* Ext_GeographicalInformation */
255 static int hf_gsm_ss_decipheringKeys = -1; /* DecipheringKeys */
256 static int hf_gsm_ss_add_LocationEstimate = -1; /* Add_GeographicalInformation */
257 static int hf_gsm_ss_referenceNumber = -1; /* LCS_ReferenceNumber */
258 static int hf_gsm_ss_h_gmlc_address = -1; /* GSN_Address */
259 static int hf_gsm_ss_deferredLocationEventType = -1; /* DeferredLocationEventType */
260 static int hf_gsm_ss_areaEventInfo = -1; /* AreaEventInfo */
262 /*--- End of included file: packet-gsm_ss-hf.c ---*/
263 #line 165 "packet-gsm_ss-template.c"
265 /* Initialize the subtree pointers */
267 /*--- Included file: packet-gsm_ss-ett.c ---*/
268 #line 1 "packet-gsm_ss-ett.c"
269 static gint ett_gsm_ss_DummySS_operationsArg = -1;
270 static gint ett_gsm_ss_DummySS_operationsRes = -1;
271 static gint ett_gsm_ss_NotifySS_Arg = -1;
272 static gint ett_gsm_ss_ForwardChargeAdviceArg = -1;
273 static gint ett_gsm_ss_ChargingInformation = -1;
274 static gint ett_gsm_ss_ForwardCUG_InfoArg = -1;
275 static gint ett_gsm_ss_ECT_Indicator = -1;
276 static gint ett_gsm_ss_NameIndicator = -1;
277 static gint ett_gsm_ss_Name = -1;
278 static gint ett_gsm_ss_NameSet = -1;
279 static gint ett_gsm_ss_RDN = -1;
280 static gint ett_gsm_ss_RemotePartyNumber = -1;
281 static gint ett_gsm_ss_AccessRegisterCCEntryArg = -1;
282 static gint ett_gsm_ss_RegisterCC_EntryRes = -1;
283 static gint ett_gsm_ss_T_ccbs_Feature = -1;
284 static gint ett_gsm_ss_T_basicServiceGroup = -1;
285 static gint ett_gsm_ss_CallDeflectionArg = -1;
286 static gint ett_gsm_ss_UserUserServiceArg = -1;
287 static gint ett_gsm_ss_LocationNotificationArg = -1;
288 static gint ett_gsm_ss_LocationNotificationRes = -1;
289 static gint ett_gsm_ss_LCS_MOLRArg = -1;
290 static gint ett_gsm_ss_LCS_MOLRRes = -1;
291 static gint ett_gsm_ss_LCS_AreaEventRequestArg = -1;
292 static gint ett_gsm_ss_LCS_AreaEventReportArg = -1;
293 static gint ett_gsm_ss_LCS_AreaEventCancellationArg = -1;
295 /*--- End of included file: packet-gsm_ss-ett.c ---*/
296 #line 168 "packet-gsm_ss-template.c"
298 static dissector_table_t sms_dissector_table; /* SMS TPDU */
301 /*--- Included file: packet-gsm_ss-fn.c ---*/
302 #line 1 "packet-gsm_ss-fn.c"
303 /*--- Fields for imported types ---*/
305 static int dissect_ss_Code_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
306 return dissect_gsm_map_SS_Code(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ss_Code);
308 static int dissect_ss_Status_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
309 return dissect_gsm_map_SS_Status(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ss_Status);
311 static int dissect_cug_Index_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
312 return dissect_gsm_map_CUG_Index(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_cug_Index);
314 static int dissect_ccbs_Feature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
315 return dissect_gsm_map_CCBS_Feature(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ccbs_Feature);
317 static int dissect_alertingPattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
318 return dissect_gsm_map_AlertingPattern(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_alertingPattern);
320 static int dissect_dataCodingScheme_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
321 return dissect_gsm_map_USSD_DataCodingScheme(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_dataCodingScheme);
323 static int dissect_nameString_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
324 return dissect_gsm_map_USSD_String(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_nameString);
326 static int dissect_partyNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
327 return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_partyNumber);
329 static int dissect_partyNumberSubaddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
330 return dissect_gsm_map_ISDN_SubaddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_partyNumberSubaddress);
332 static int dissect_deflectedToNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
333 return dissect_gsm_map_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_deflectedToNumber);
335 static int dissect_deflectedToSubaddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
336 return dissect_gsm_map_ISDN_SubaddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_deflectedToSubaddress);
338 static int dissect_notificationType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
339 return dissect_gsm_map_NotificationToMSUser(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_notificationType);
341 static int dissect_locationType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
342 return dissect_gsm_map_LocationType(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_locationType);
344 static int dissect_lcsClientExternalID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
345 return dissect_gsm_map_LCSClientExternalID(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_lcsClientExternalID);
347 static int dissect_lcsClientName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
348 return dissect_gsm_map_LCSClientName(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_lcsClientName);
350 static int dissect_lcsRequestorID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
351 return dissect_gsm_map_LCSRequestorID(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_lcsRequestorID);
353 static int dissect_lcsCodeword_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
354 return dissect_gsm_map_LCSCodeword(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_lcsCodeword);
356 static int dissect_lcsServiceTypeID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
357 return dissect_gsm_map_LCSServiceTypeID(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_lcsServiceTypeID);
359 static int dissect_lcs_QoS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
360 return dissect_gsm_map_LCS_QoS(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_QoS);
362 static int dissect_mlc_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
363 return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_mlc_Number);
365 static int dissect_supportedGADShapes_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
366 return dissect_gsm_map_SupportedGADShapes(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_supportedGADShapes);
368 static int dissect_ageOfLocationInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
369 return dissect_gsm_map_AgeOfLocationInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ageOfLocationInfo);
371 static int dissect_locationEstimate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
372 return dissect_gsm_map_Ext_GeographicalInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_locationEstimate);
374 static int dissect_add_LocationEstimate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
375 return dissect_gsm_map_Add_GeographicalInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_add_LocationEstimate);
377 static int dissect_referenceNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
378 return dissect_gsm_map_LCS_ReferenceNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_referenceNumber);
380 static int dissect_h_gmlc_address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
381 return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_h_gmlc_address);
383 static int dissect_deferredLocationEventType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
384 return dissect_gsm_map_DeferredLocationEventType(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_deferredLocationEventType);
386 static int dissect_areaEventInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
387 return dissect_gsm_map_AreaEventInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_areaEventInfo);
393 dissect_gsm_ss_SS_Notification(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
394 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
399 static int dissect_ss_Notification_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
400 return dissect_gsm_ss_SS_Notification(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ss_Notification);
406 dissect_gsm_ss_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
407 offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
411 static int dissect_callIsWaiting_Indicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
412 return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_callIsWaiting_Indicator);
414 static int dissect_mpty_Indicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
415 return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_mpty_Indicator);
417 static int dissect_clirSuppressionRejected_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
418 return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_clirSuppressionRejected);
420 static int dissect_suppressPrefCUG_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
421 return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_suppressPrefCUG);
423 static int dissect_suppressOA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
424 return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_suppressOA);
426 static int dissect_presentationRestricted_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
427 return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_presentationRestricted);
429 static int dissect_nameUnavailable_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
430 return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_nameUnavailable);
432 static int dissect_numberNotAvailableDueToInterworking_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
433 return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_numberNotAvailableDueToInterworking);
435 static int dissect_pseudonymIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
436 return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_pseudonymIndicator);
440 static const value_string gsm_ss_CallOnHold_Indicator_vals[] = {
441 { 0, "callRetrieved" },
448 dissect_gsm_ss_CallOnHold_Indicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
449 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
454 static int dissect_callOnHold_Indicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
455 return dissect_gsm_ss_CallOnHold_Indicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_callOnHold_Indicator);
459 static const value_string gsm_ss_ECT_CallState_vals[] = {
467 dissect_gsm_ss_ECT_CallState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
468 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
473 static int dissect_ect_CallState_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
474 return dissect_gsm_ss_ECT_CallState(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ect_CallState);
478 static const ber_sequence_t RemotePartyNumber_sequence[] = {
479 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_partyNumber_impl },
480 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_partyNumberSubaddress_impl },
485 dissect_gsm_ss_RemotePartyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
486 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
487 RemotePartyNumber_sequence, hf_index, ett_gsm_ss_RemotePartyNumber);
491 static int dissect_presentationAllowedAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
492 return dissect_gsm_ss_RemotePartyNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_presentationAllowedAddress);
494 static int dissect_presentationRestrictedAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
495 return dissect_gsm_ss_RemotePartyNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_presentationRestrictedAddress);
499 static const value_string gsm_ss_RDN_vals[] = {
500 { 0, "presentationAllowedAddress" },
501 { 1, "presentationRestricted" },
502 { 2, "numberNotAvailableDueToInterworking" },
503 { 3, "presentationRestrictedAddress" },
507 static const ber_choice_t RDN_choice[] = {
508 { 0, BER_CLASS_CON, 0, 0, dissect_presentationAllowedAddress_impl },
509 { 1, BER_CLASS_CON, 1, 0, dissect_presentationRestricted_impl },
510 { 2, BER_CLASS_CON, 2, 0, dissect_numberNotAvailableDueToInterworking_impl },
511 { 3, BER_CLASS_CON, 3, 0, dissect_presentationRestrictedAddress_impl },
516 dissect_gsm_ss_RDN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
517 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
518 RDN_choice, hf_index, ett_gsm_ss_RDN,
523 static int dissect_rdn_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
524 return dissect_gsm_ss_RDN(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_rdn);
528 static const ber_sequence_t ECT_Indicator_sequence[] = {
529 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ect_CallState_impl },
530 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_rdn_impl },
535 dissect_gsm_ss_ECT_Indicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
536 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
537 ECT_Indicator_sequence, hf_index, ett_gsm_ss_ECT_Indicator);
541 static int dissect_ect_Indicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
542 return dissect_gsm_ss_ECT_Indicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ect_Indicator);
548 dissect_gsm_ss_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
549 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
554 static int dissect_lengthInCharacters_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
555 return dissect_gsm_ss_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_lengthInCharacters);
559 static const ber_sequence_t NameSet_sequence[] = {
560 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_dataCodingScheme_impl },
561 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lengthInCharacters_impl },
562 { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_nameString_impl },
567 dissect_gsm_ss_NameSet(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
568 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
569 NameSet_sequence, hf_index, ett_gsm_ss_NameSet);
573 static int dissect_namePresentationAllowed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
574 return dissect_gsm_ss_NameSet(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_namePresentationAllowed);
576 static int dissect_namePresentationRestricted_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
577 return dissect_gsm_ss_NameSet(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_namePresentationRestricted);
581 static const value_string gsm_ss_Name_vals[] = {
582 { 0, "namePresentationAllowed" },
583 { 1, "presentationRestricted" },
584 { 2, "nameUnavailable" },
585 { 3, "namePresentationRestricted" },
589 static const ber_choice_t Name_choice[] = {
590 { 0, BER_CLASS_CON, 0, 0, dissect_namePresentationAllowed_impl },
591 { 1, BER_CLASS_CON, 1, 0, dissect_presentationRestricted_impl },
592 { 2, BER_CLASS_CON, 2, 0, dissect_nameUnavailable_impl },
593 { 3, BER_CLASS_CON, 3, 0, dissect_namePresentationRestricted_impl },
598 dissect_gsm_ss_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
599 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
600 Name_choice, hf_index, ett_gsm_ss_Name,
605 static int dissect_callingName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
606 return dissect_gsm_ss_Name(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_callingName);
610 static const ber_sequence_t NameIndicator_sequence[] = {
611 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_callingName_impl },
616 dissect_gsm_ss_NameIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
617 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
618 NameIndicator_sequence, hf_index, ett_gsm_ss_NameIndicator);
622 static int dissect_nameIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
623 return dissect_gsm_ss_NameIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_nameIndicator);
627 static const value_string gsm_ss_Multicall_Indicator_vals[] = {
628 { 0, "nbr-SNexceeded" },
629 { 1, "nbr-Userexceeded" },
635 dissect_gsm_ss_Multicall_Indicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
636 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
641 static int dissect_multicall_Indicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
642 return dissect_gsm_ss_Multicall_Indicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_multicall_Indicator);
646 static const ber_sequence_t NotifySS_Arg_sequence[] = {
647 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
648 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
649 { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Notification_impl },
650 { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callIsWaiting_Indicator_impl },
651 { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callOnHold_Indicator_impl },
652 { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mpty_Indicator_impl },
653 { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_Index_impl },
654 { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_clirSuppressionRejected_impl },
655 { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ect_Indicator_impl },
656 { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nameIndicator_impl },
657 { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Feature_impl },
658 { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
659 { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_multicall_Indicator_impl },
664 dissect_gsm_ss_NotifySS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
665 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
666 NotifySS_Arg_sequence, hf_index, ett_gsm_ss_NotifySS_Arg);
670 static int dissect_notifySS(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
671 return dissect_gsm_ss_NotifySS_Arg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_notifySS);
677 dissect_gsm_ss_SS_UserData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
678 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
679 pinfo, tree, tvb, offset, hf_index,
684 static int dissect_processUnstructuredSS_Data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
685 return dissect_gsm_ss_SS_UserData(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_processUnstructuredSS_Data);
689 static const ber_sequence_t ForwardCUG_InfoArg_sequence[] = {
690 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_Index_impl },
691 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppressPrefCUG_impl },
692 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppressOA_impl },
697 dissect_gsm_ss_ForwardCUG_InfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
698 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
699 ForwardCUG_InfoArg_sequence, hf_index, ett_gsm_ss_ForwardCUG_InfoArg);
703 static int dissect_forwardCUG_Info(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
704 return dissect_gsm_ss_ForwardCUG_InfoArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_forwardCUG_Info);
708 static const ber_sequence_t AccessRegisterCCEntryArg_sequence[] = {
713 dissect_gsm_ss_AccessRegisterCCEntryArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
714 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
715 AccessRegisterCCEntryArg_sequence, hf_index, ett_gsm_ss_AccessRegisterCCEntryArg);
719 static int dissect_accessRegisterCCEntry(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
720 return dissect_gsm_ss_AccessRegisterCCEntryArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_accessRegisterCCEntry);
726 dissect_gsm_ss_E1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
727 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
732 static int dissect_e1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
733 return dissect_gsm_ss_E1(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_e1);
739 dissect_gsm_ss_E2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
740 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
745 static int dissect_e2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
746 return dissect_gsm_ss_E2(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_e2);
752 dissect_gsm_ss_E3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
753 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
758 static int dissect_e3_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
759 return dissect_gsm_ss_E3(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_e3);
765 dissect_gsm_ss_E4(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
766 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
771 static int dissect_e4_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
772 return dissect_gsm_ss_E4(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_e4);
778 dissect_gsm_ss_E5(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
779 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
784 static int dissect_e5_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
785 return dissect_gsm_ss_E5(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_e5);
791 dissect_gsm_ss_E6(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
792 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
797 static int dissect_e6_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
798 return dissect_gsm_ss_E6(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_e6);
804 dissect_gsm_ss_E7(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
805 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
810 static int dissect_e7_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
811 return dissect_gsm_ss_E7(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_e7);
815 static const ber_sequence_t ChargingInformation_sequence[] = {
816 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_e1_impl },
817 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_e2_impl },
818 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_e3_impl },
819 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_e4_impl },
820 { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_e5_impl },
821 { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_e6_impl },
822 { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_e7_impl },
827 dissect_gsm_ss_ChargingInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
828 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
829 ChargingInformation_sequence, hf_index, ett_gsm_ss_ChargingInformation);
833 static int dissect_chargingInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
834 return dissect_gsm_ss_ChargingInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_chargingInformation);
838 static const ber_sequence_t ForwardChargeAdviceArg_sequence[] = {
839 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
840 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_chargingInformation_impl },
845 dissect_gsm_ss_ForwardChargeAdviceArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
846 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
847 ForwardChargeAdviceArg_sequence, hf_index, ett_gsm_ss_ForwardChargeAdviceArg);
851 static int dissect_forwardChargeAdvice(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
852 return dissect_gsm_ss_ForwardChargeAdviceArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_forwardChargeAdvice);
856 static const ber_sequence_t CallDeflectionArg_sequence[] = {
857 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_deflectedToNumber_impl },
858 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deflectedToSubaddress_impl },
863 dissect_gsm_ss_CallDeflectionArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
864 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
865 CallDeflectionArg_sequence, hf_index, ett_gsm_ss_CallDeflectionArg);
869 static int dissect_callDeflection(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
870 return dissect_gsm_ss_CallDeflectionArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_callDeflection);
874 static const ber_sequence_t LocationNotificationArg_sequence[] = {
875 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_notificationType_impl },
876 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_locationType_impl },
877 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientExternalID_impl },
878 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientName_impl },
879 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsRequestorID_impl },
880 { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsCodeword_impl },
881 { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsServiceTypeID_impl },
886 dissect_gsm_ss_LocationNotificationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
887 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
888 LocationNotificationArg_sequence, hf_index, ett_gsm_ss_LocationNotificationArg);
892 static int dissect_lcs_LocationNotification(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
893 return dissect_gsm_ss_LocationNotificationArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_LocationNotification);
897 static const value_string gsm_ss_MOLR_Type_vals[] = {
898 { 0, "locationEstimate" },
899 { 1, "assistanceData" },
900 { 2, "deCipheringKeys" },
906 dissect_gsm_ss_MOLR_Type(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
907 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
912 static int dissect_molr_Type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
913 return dissect_gsm_ss_MOLR_Type(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_molr_Type);
917 static const value_string gsm_ss_LocationMethod_vals[] = {
918 { 0, "msBasedEOTD" },
919 { 1, "msAssistedEOTD" },
920 { 2, "assistedGPS" },
921 { 3, "msBasedOTDOA" },
927 dissect_gsm_ss_LocationMethod(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
928 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
933 static int dissect_locationMethod_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
934 return dissect_gsm_ss_LocationMethod(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_locationMethod);
940 dissect_gsm_ss_GPSAssistanceData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
941 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
946 static int dissect_gpsAssistanceData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
947 return dissect_gsm_ss_GPSAssistanceData(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_gpsAssistanceData);
951 static const ber_sequence_t LCS_MOLRArg_sequence[] = {
952 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_molr_Type_impl },
953 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationMethod_impl },
954 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_QoS_impl },
955 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientExternalID_impl },
956 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mlc_Number_impl },
957 { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gpsAssistanceData_impl },
958 { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedGADShapes_impl },
959 { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsServiceTypeID_impl },
960 { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ageOfLocationInfo_impl },
961 { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationType_impl },
962 { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pseudonymIndicator_impl },
967 dissect_gsm_ss_LCS_MOLRArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
968 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
969 LCS_MOLRArg_sequence, hf_index, ett_gsm_ss_LCS_MOLRArg);
973 static int dissect_lcs_MOLR(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
974 return dissect_gsm_ss_LCS_MOLRArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_MOLR);
978 static const ber_sequence_t LCS_AreaEventRequestArg_sequence[] = {
979 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_referenceNumber_impl },
980 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h_gmlc_address_impl },
981 { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_deferredLocationEventType_impl },
982 { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_areaEventInfo_impl },
987 dissect_gsm_ss_LCS_AreaEventRequestArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
988 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
989 LCS_AreaEventRequestArg_sequence, hf_index, ett_gsm_ss_LCS_AreaEventRequestArg);
993 static int dissect_lcs_AreaEventRequest(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
994 return dissect_gsm_ss_LCS_AreaEventRequestArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_AreaEventRequest);
998 static const ber_sequence_t LCS_AreaEventReportArg_sequence[] = {
999 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_referenceNumber_impl },
1000 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h_gmlc_address_impl },
1005 dissect_gsm_ss_LCS_AreaEventReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1006 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1007 LCS_AreaEventReportArg_sequence, hf_index, ett_gsm_ss_LCS_AreaEventReportArg);
1011 static int dissect_lcs_AreaEventReport(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1012 return dissect_gsm_ss_LCS_AreaEventReportArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_AreaEventReport);
1016 static const ber_sequence_t LCS_AreaEventCancellationArg_sequence[] = {
1017 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_referenceNumber_impl },
1018 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h_gmlc_address_impl },
1023 dissect_gsm_ss_LCS_AreaEventCancellationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1024 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1025 LCS_AreaEventCancellationArg_sequence, hf_index, ett_gsm_ss_LCS_AreaEventCancellationArg);
1029 static int dissect_lcs_AreaEventCancellation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1030 return dissect_gsm_ss_LCS_AreaEventCancellationArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_AreaEventCancellation);
1034 static const value_string gsm_ss_DummySS_operationsArg_vals[] = {
1036 { 1, "processUnstructuredSS-Data" },
1037 { 2, "forwardCUG-Info" },
1038 { 3, "accessRegisterCCEntry" },
1039 { 4, "forwardChargeAdvice" },
1040 { 5, "callDeflection" },
1041 { 6, "lcs-LocationNotification" },
1043 { 8, "lcs-AreaEventRequest" },
1044 { 9, "lcs-AreaEventReport" },
1045 { 10, "lcs-AreaEventCancellation" },
1049 static const ber_choice_t DummySS_operationsArg_choice[] = {
1050 { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_notifySS },
1051 { 1, BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_NOOWNTAG, dissect_processUnstructuredSS_Data },
1052 { 2, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardCUG_Info },
1053 { 3, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_accessRegisterCCEntry },
1054 { 4, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardChargeAdvice },
1055 { 5, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_callDeflection },
1056 { 6, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_LocationNotification },
1057 { 7, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_MOLR },
1058 { 8, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_AreaEventRequest },
1059 { 9, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_AreaEventReport },
1060 { 10, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_AreaEventCancellation },
1061 { 0, 0, 0, 0, NULL }
1065 dissect_gsm_ss_DummySS_operationsArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1066 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1067 DummySS_operationsArg_choice, hf_index, ett_gsm_ss_DummySS_operationsArg,
1076 dissect_gsm_ss_INTEGER_1_5(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1077 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1082 static int dissect_ccbs_Index_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1083 return dissect_gsm_ss_INTEGER_1_5(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ccbs_Index);
1089 dissect_gsm_ss_T_b_subscriberNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1090 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1095 static int dissect_b_subscriberNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1096 return dissect_gsm_ss_T_b_subscriberNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_b_subscriberNumber);
1102 dissect_gsm_ss_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_) {
1103 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1108 static int dissect_b_subscriberSubaddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1109 return dissect_gsm_ss_OCTET_STRING_SIZE_1_21(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_b_subscriberSubaddress);
1115 dissect_gsm_ss_OCTET_STRING_SIZE_1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1116 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1121 static int dissect_bearerService_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1122 return dissect_gsm_ss_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_bearerService);
1124 static int dissect_teleservice_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1125 return dissect_gsm_ss_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_teleservice);
1129 static const value_string gsm_ss_T_basicServiceGroup_vals[] = {
1130 { 2, "bearerService" },
1131 { 3, "teleservice" },
1135 static const ber_choice_t T_basicServiceGroup_choice[] = {
1136 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_bearerService_impl },
1137 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_teleservice_impl },
1138 { 0, 0, 0, 0, NULL }
1142 dissect_gsm_ss_T_basicServiceGroup(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1143 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1144 T_basicServiceGroup_choice, hf_index, ett_gsm_ss_T_basicServiceGroup,
1149 static int dissect_basicServiceGroup_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1150 return dissect_gsm_ss_T_basicServiceGroup(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_basicServiceGroup);
1154 static const ber_sequence_t T_ccbs_Feature_sequence[] = {
1155 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Index_impl },
1156 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberNumber_impl },
1157 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberSubaddress_impl },
1158 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceGroup_impl },
1163 dissect_gsm_ss_T_ccbs_Feature(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1164 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1165 T_ccbs_Feature_sequence, hf_index, ett_gsm_ss_T_ccbs_Feature);
1169 static int dissect_ccbs_Feature1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1170 return dissect_gsm_ss_T_ccbs_Feature(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ccbs_Feature1);
1174 static const ber_sequence_t RegisterCC_EntryRes_sequence[] = {
1175 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Feature1_impl },
1180 dissect_gsm_ss_RegisterCC_EntryRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1181 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1182 RegisterCC_EntryRes_sequence, hf_index, ett_gsm_ss_RegisterCC_EntryRes);
1186 static int dissect_registerCC_EntryRes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1187 return dissect_gsm_ss_RegisterCC_EntryRes(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_registerCC_EntryRes);
1191 static const value_string gsm_ss_VerificationResponse_vals[] = {
1192 { 0, "permissionDenied" },
1193 { 1, "permissionGranted" },
1199 dissect_gsm_ss_VerificationResponse(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1200 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1205 static int dissect_verificationResponse_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1206 return dissect_gsm_ss_VerificationResponse(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_verificationResponse);
1210 static const ber_sequence_t LocationNotificationRes_sequence[] = {
1211 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_verificationResponse_impl },
1216 dissect_gsm_ss_LocationNotificationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1217 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1218 LocationNotificationRes_sequence, hf_index, ett_gsm_ss_LocationNotificationRes);
1222 static int dissect_lcs_LocationNotification_res(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1223 return dissect_gsm_ss_LocationNotificationRes(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_LocationNotification_res);
1229 dissect_gsm_ss_DecipheringKeys(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1230 offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1235 static int dissect_decipheringKeys_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1236 return dissect_gsm_ss_DecipheringKeys(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_decipheringKeys);
1240 static const ber_sequence_t LCS_MOLRRes_sequence[] = {
1241 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationEstimate_impl },
1242 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_decipheringKeys_impl },
1243 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_add_LocationEstimate_impl },
1248 dissect_gsm_ss_LCS_MOLRRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1249 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1250 LCS_MOLRRes_sequence, hf_index, ett_gsm_ss_LCS_MOLRRes);
1254 static int dissect_lcs_MOLR_res(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1255 return dissect_gsm_ss_LCS_MOLRRes(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_MOLR_res);
1259 static const value_string gsm_ss_DummySS_operationsRes_vals[] = {
1260 { 0, "registerCC-EntryRes" },
1261 { 1, "lcs-LocationNotification-res" },
1262 { 2, "lcs-MOLR-res" },
1266 static const ber_choice_t DummySS_operationsRes_choice[] = {
1267 { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_registerCC_EntryRes },
1268 { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_LocationNotification_res },
1269 { 2, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_MOLR_res },
1270 { 0, 0, 0, 0, NULL }
1274 dissect_gsm_ss_DummySS_operationsRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1275 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1276 DummySS_operationsRes_choice, hf_index, ett_gsm_ss_DummySS_operationsRes,
1283 static const value_string gsm_ss_UUS_Service_vals[] = {
1292 dissect_gsm_ss_UUS_Service(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1293 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1298 static int dissect_uUS_Service_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1299 return dissect_gsm_ss_UUS_Service(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_uUS_Service);
1305 dissect_gsm_ss_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1306 offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
1310 static int dissect_uUS_Required_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1311 return dissect_gsm_ss_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_uUS_Required);
1315 static const ber_sequence_t UserUserServiceArg_sequence[] = {
1316 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_uUS_Service_impl },
1317 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_uUS_Required_impl },
1322 dissect_gsm_ss_UserUserServiceArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1323 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1324 UserUserServiceArg_sequence, hf_index, ett_gsm_ss_UserUserServiceArg);
1330 /*--- End of included file: packet-gsm_ss-fn.c ---*/
1331 #line 172 "packet-gsm_ss-template.c"
1335 gsm_ss_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset,guint32 opcode, gint comp_type_tag)
1337 switch (comp_type_tag){
1338 case 1: /* invoke */
1340 case 10: /* Register SS -- imports operations from MAP-SupplementaryServiceOperations*/
1341 offset=dissect_gsm_map_RegisterSS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
1343 case 11: /* Erase SS -- imports operations from MAP-SupplementaryServiceOperations*/
1344 offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
1346 case 12: /* Activate SS -- imports operations from MAP-SupplementaryServiceOperations*/
1347 offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
1349 case 13: /*Deactivate SS -- imports operations from MAP-SupplementaryServiceOperations*/
1350 offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
1352 case 14: /*Interrogate SS -- imports operations from MAP-SupplementaryServiceOperations*/
1353 offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
1355 case 16: /*Notify SS */
1356 offset = dissect_notifySS(pinfo, tree, tvb, offset);
1358 case 17: /*Register Password -- imports operations from MAP-SupplementaryServiceOperations*/
1359 offset=dissect_gsm_map_SS_Code(FALSE, tvb, offset, pinfo, tree, -1);
1361 case 18: /*Get Password -- imports operations from MAP-SupplementaryServiceOperations*/
1362 offset=dissect_gsm_map_GetPasswordArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_getPassword);
1364 case 19: /*Process Unstructured SS Data */
1365 offset = dissect_processUnstructuredSS_Data(pinfo, tree, tvb, offset);
1367 case 38: /*Forward Check SS Indication -- imports operation from MAP-MobileServiceOperations*/
1369 case 59: /*Process Unstructured SS Request -- imports operations from MAP-SupplementaryServiceOperations*/
1370 offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
1372 case 60: /*Unstructured SS Request -- imports operations from MAP-SupplementaryServiceOperations*/
1373 offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
1375 case 61: /*Unstructured SS Notify -- imports operations from MAP-SupplementaryServiceOperations*/
1376 offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
1378 case 77: /*Erase CC Entry -- imports operations from MAP-SupplementaryServiceOperations*/
1379 offset=dissect_gsm_map_EraseCC_EntryArg(FALSE, tvb, offset, pinfo, tree, -1);
1381 case 112: /*lcs-AreaEventCancellation */
1382 offset = dissect_lcs_AreaEventCancellation(pinfo, tree, tvb, offset);
1384 case 113: /*lcs-AreaEventReport */
1385 offset = dissect_lcs_AreaEventReport(pinfo, tree, tvb, offset);
1387 case 114: /*LCS-AreaEventRequest */
1388 offset = dissect_lcs_AreaEventRequest(pinfo, tree, tvb, offset);
1390 case 115: /*LCS MOLR */
1391 offset = dissect_lcs_MOLR(pinfo, tree, tvb, offset);
1393 case 116: /*LCS Location Notification */
1394 offset = dissect_lcs_LocationNotification(pinfo, tree, tvb,offset);
1396 case 117: /*Call Deflection */
1397 offset = dissect_callDeflection(pinfo, tree, tvb,offset);
1399 case 118: /*User User Service */
1400 offset = dissect_gsm_ss_UserUserServiceArg(FALSE, tvb, offset, pinfo, tree, -1);
1402 case 119: /* Access Register CC Entry */
1403 offset = dissect_gsm_ss_AccessRegisterCCEntryArg(FALSE, tvb, offset, pinfo, tree, -1);
1405 case 120: /*Forward CUG Info */
1406 offset = dissect_forwardCUG_Info(pinfo, tree, tvb,offset);
1408 case 121: /*Split MPTY */
1410 case 122: /*Retrieve MPTY */
1412 case 123: /*Hold MPTY */
1414 case 124: /*Build MPTY */
1416 case 125: /*Forward Charge Advice */
1417 dissect_forwardChargeAdvice(pinfo, tree, tvb,offset);
1419 case 126: /*Explicit CT */
1425 case 2: /* returnResultLast */
1427 case 10: /*registerSS*/
1428 offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
1430 case 11: /*eraseSS*/
1431 offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
1433 case 12: /*activateSS*/
1434 offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
1436 case 13: /*deactivateSS*/
1437 offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
1439 case 14: /*interrogateSS*/
1440 offset=dissect_gsm_map_InterrogateSS_Res(FALSE, tvb, offset, pinfo, tree, -1);
1442 case 16: /*Notify SS */
1444 case 17: /*Register Password -- imports operations from MAP-SupplementaryServiceOperations*/
1445 offset=dissect_gsm_map_NewPassword(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_SS_Code);
1447 case 18: /*Get Password -- imports operations from MAP-SupplementaryServiceOperations*/
1448 offset=dissect_gsm_map_CurrentPassword(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_currentPassword);
1450 case 19: /*Process Unstructured SS Data */
1451 offset=dissect_gsm_ss_SS_UserData(FALSE, tvb, offset, pinfo, tree, -1);
1453 case 38: /*Forward Check SS Indication -- imports operation from MAP-MobileServiceOperations*/
1455 case 59: /*Process Unstructured SS Request -- imports operations from MAP-SupplementaryServiceOperations*/
1456 offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
1458 case 60: /*Unstructured SS Request -- imports operations from MAP-SupplementaryServiceOperations*/
1459 offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
1461 case 61: /*Unstructured SS Notify -- imports operations from MAP-SupplementaryServiceOperations*/
1462 offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
1464 case 77: /*Erase CC Entry -- imports operations from MAP-SupplementaryServiceOperations*/
1465 offset=dissect_gsm_map_EraseCC_EntryRes(FALSE, tvb, offset, pinfo, tree, -1);
1467 case 112: /*lcs-AreaEventCancellation */
1469 case 113: /*lcs-AreaEventReport */
1471 case 114: /*LCS-AreaEventRequest */
1473 case 115: /*LCS MOLR */
1474 offset=dissect_gsm_ss_LCS_MOLRRes(FALSE, tvb, offset, pinfo, tree, -1);
1476 case 116: /*LCS Location Notification */
1477 offset=dissect_gsm_ss_LocationNotificationRes(FALSE, tvb, offset, pinfo, tree, -1);
1479 case 117: /*Call Deflection */
1481 case 118: /*User User Service */
1483 case 119: /* Access Register CC Entry */
1484 offset=dissect_gsm_map_RegisterCC_EntryRes(FALSE, tvb, offset, pinfo, tree, -1);
1486 case 120: /*Forward CUG Info */
1488 case 121: /*Split MPTY */
1490 case 122: /*Retrieve MPTY */
1492 case 123: /*Hold MPTY */
1494 case 124: /*Build MPTY */
1496 case 125: /*Forward Charge Advice */
1498 case 126: /*Explicit CT */
1504 case 3: /* returnError */
1506 case 4: /* reject */
1515 dissect_gsm_ss(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1520 /*--- proto_reg_handoff_gsm_ss ---------------------------------------
1521 This proto is called directly from packet-gsm_a and needs to know component type */
1522 void proto_reg_handoff_gsm_ss(void) {
1523 dissector_handle_t gsm_ss_handle;
1525 gsm_ss_handle = create_dissector_handle(dissect_gsm_ss, proto_gsm_ss);
1530 /*--- proto_register_gsm_ss -------------------------------------------*/
1531 void proto_register_gsm_ss(void) {
1533 /* List of fields */
1534 static hf_register_info hf[] = {
1535 { &hf_gsm_ss_getPassword,
1536 { "Password", "gsm_ss.password",
1537 FT_UINT8, BASE_DEC, VALS(gsm_map_GetPasswordArg_vals), 0,
1538 "Password", HFILL }},
1539 { &hf_gsm_ss_currentPassword,
1540 { "currentPassword", "gsm_ss.currentPassword",
1541 FT_STRING, BASE_NONE, NULL, 0,
1543 { &hf_gsm_ss_SS_Code,
1544 { "ss-Code", "gsm_ss.ss_Code",
1545 FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
1549 /*--- Included file: packet-gsm_ss-hfarr.c ---*/
1550 #line 1 "packet-gsm_ss-hfarr.c"
1551 { &hf_gsm_ss_notifySS,
1552 { "notifySS", "gsm_ss.notifySS",
1553 FT_NONE, BASE_NONE, NULL, 0,
1554 "DummySS-operationsArg/notifySS", HFILL }},
1555 { &hf_gsm_ss_processUnstructuredSS_Data,
1556 { "processUnstructuredSS-Data", "gsm_ss.processUnstructuredSS_Data",
1557 FT_STRING, BASE_NONE, NULL, 0,
1558 "DummySS-operationsArg/processUnstructuredSS-Data", HFILL }},
1559 { &hf_gsm_ss_forwardCUG_Info,
1560 { "forwardCUG-Info", "gsm_ss.forwardCUG_Info",
1561 FT_NONE, BASE_NONE, NULL, 0,
1562 "DummySS-operationsArg/forwardCUG-Info", HFILL }},
1563 { &hf_gsm_ss_accessRegisterCCEntry,
1564 { "accessRegisterCCEntry", "gsm_ss.accessRegisterCCEntry",
1565 FT_NONE, BASE_NONE, NULL, 0,
1566 "DummySS-operationsArg/accessRegisterCCEntry", HFILL }},
1567 { &hf_gsm_ss_forwardChargeAdvice,
1568 { "forwardChargeAdvice", "gsm_ss.forwardChargeAdvice",
1569 FT_NONE, BASE_NONE, NULL, 0,
1570 "DummySS-operationsArg/forwardChargeAdvice", HFILL }},
1571 { &hf_gsm_ss_callDeflection,
1572 { "callDeflection", "gsm_ss.callDeflection",
1573 FT_NONE, BASE_NONE, NULL, 0,
1574 "DummySS-operationsArg/callDeflection", HFILL }},
1575 { &hf_gsm_ss_lcs_LocationNotification,
1576 { "lcs-LocationNotification", "gsm_ss.lcs_LocationNotification",
1577 FT_NONE, BASE_NONE, NULL, 0,
1578 "DummySS-operationsArg/lcs-LocationNotification", HFILL }},
1579 { &hf_gsm_ss_lcs_MOLR,
1580 { "lcs-MOLR", "gsm_ss.lcs_MOLR",
1581 FT_NONE, BASE_NONE, NULL, 0,
1582 "DummySS-operationsArg/lcs-MOLR", HFILL }},
1583 { &hf_gsm_ss_lcs_AreaEventRequest,
1584 { "lcs-AreaEventRequest", "gsm_ss.lcs_AreaEventRequest",
1585 FT_NONE, BASE_NONE, NULL, 0,
1586 "DummySS-operationsArg/lcs-AreaEventRequest", HFILL }},
1587 { &hf_gsm_ss_lcs_AreaEventReport,
1588 { "lcs-AreaEventReport", "gsm_ss.lcs_AreaEventReport",
1589 FT_NONE, BASE_NONE, NULL, 0,
1590 "DummySS-operationsArg/lcs-AreaEventReport", HFILL }},
1591 { &hf_gsm_ss_lcs_AreaEventCancellation,
1592 { "lcs-AreaEventCancellation", "gsm_ss.lcs_AreaEventCancellation",
1593 FT_NONE, BASE_NONE, NULL, 0,
1594 "DummySS-operationsArg/lcs-AreaEventCancellation", HFILL }},
1595 { &hf_gsm_ss_registerCC_EntryRes,
1596 { "registerCC-EntryRes", "gsm_ss.registerCC_EntryRes",
1597 FT_NONE, BASE_NONE, NULL, 0,
1598 "DummySS-operationsRes/registerCC-EntryRes", HFILL }},
1599 { &hf_gsm_ss_lcs_LocationNotification_res,
1600 { "lcs-LocationNotification-res", "gsm_ss.lcs_LocationNotification_res",
1601 FT_NONE, BASE_NONE, NULL, 0,
1602 "DummySS-operationsRes/lcs-LocationNotification-res", HFILL }},
1603 { &hf_gsm_ss_lcs_MOLR_res,
1604 { "lcs-MOLR-res", "gsm_ss.lcs_MOLR_res",
1605 FT_NONE, BASE_NONE, NULL, 0,
1606 "DummySS-operationsRes/lcs-MOLR-res", HFILL }},
1607 { &hf_gsm_ss_ss_Code,
1608 { "ss-Code", "gsm_ss.ss_Code",
1609 FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
1611 { &hf_gsm_ss_ss_Status,
1612 { "ss-Status", "gsm_ss.ss_Status",
1613 FT_BYTES, BASE_HEX, NULL, 0,
1614 "NotifySS-Arg/ss-Status", HFILL }},
1615 { &hf_gsm_ss_ss_Notification,
1616 { "ss-Notification", "gsm_ss.ss_Notification",
1617 FT_BYTES, BASE_HEX, NULL, 0,
1618 "NotifySS-Arg/ss-Notification", HFILL }},
1619 { &hf_gsm_ss_callIsWaiting_Indicator,
1620 { "callIsWaiting-Indicator", "gsm_ss.callIsWaiting_Indicator",
1621 FT_NONE, BASE_NONE, NULL, 0,
1622 "NotifySS-Arg/callIsWaiting-Indicator", HFILL }},
1623 { &hf_gsm_ss_callOnHold_Indicator,
1624 { "callOnHold-Indicator", "gsm_ss.callOnHold_Indicator",
1625 FT_UINT32, BASE_DEC, VALS(gsm_ss_CallOnHold_Indicator_vals), 0,
1626 "NotifySS-Arg/callOnHold-Indicator", HFILL }},
1627 { &hf_gsm_ss_mpty_Indicator,
1628 { "mpty-Indicator", "gsm_ss.mpty_Indicator",
1629 FT_NONE, BASE_NONE, NULL, 0,
1630 "NotifySS-Arg/mpty-Indicator", HFILL }},
1631 { &hf_gsm_ss_cug_Index,
1632 { "cug-Index", "gsm_ss.cug_Index",
1633 FT_UINT32, BASE_DEC, NULL, 0,
1635 { &hf_gsm_ss_clirSuppressionRejected,
1636 { "clirSuppressionRejected", "gsm_ss.clirSuppressionRejected",
1637 FT_NONE, BASE_NONE, NULL, 0,
1638 "NotifySS-Arg/clirSuppressionRejected", HFILL }},
1639 { &hf_gsm_ss_ect_Indicator,
1640 { "ect-Indicator", "gsm_ss.ect_Indicator",
1641 FT_NONE, BASE_NONE, NULL, 0,
1642 "NotifySS-Arg/ect-Indicator", HFILL }},
1643 { &hf_gsm_ss_nameIndicator,
1644 { "nameIndicator", "gsm_ss.nameIndicator",
1645 FT_NONE, BASE_NONE, NULL, 0,
1646 "NotifySS-Arg/nameIndicator", HFILL }},
1647 { &hf_gsm_ss_ccbs_Feature,
1648 { "ccbs-Feature", "gsm_ss.ccbs_Feature",
1649 FT_NONE, BASE_NONE, NULL, 0,
1650 "NotifySS-Arg/ccbs-Feature", HFILL }},
1651 { &hf_gsm_ss_alertingPattern,
1652 { "alertingPattern", "gsm_ss.alertingPattern",
1653 FT_BYTES, BASE_HEX, NULL, 0,
1654 "NotifySS-Arg/alertingPattern", HFILL }},
1655 { &hf_gsm_ss_multicall_Indicator,
1656 { "multicall-Indicator", "gsm_ss.multicall_Indicator",
1657 FT_UINT32, BASE_DEC, VALS(gsm_ss_Multicall_Indicator_vals), 0,
1658 "NotifySS-Arg/multicall-Indicator", HFILL }},
1659 { &hf_gsm_ss_chargingInformation,
1660 { "chargingInformation", "gsm_ss.chargingInformation",
1661 FT_NONE, BASE_NONE, NULL, 0,
1662 "ForwardChargeAdviceArg/chargingInformation", HFILL }},
1664 { "e1", "gsm_ss.e1",
1665 FT_UINT32, BASE_DEC, NULL, 0,
1666 "ChargingInformation/e1", HFILL }},
1668 { "e2", "gsm_ss.e2",
1669 FT_UINT32, BASE_DEC, NULL, 0,
1670 "ChargingInformation/e2", HFILL }},
1672 { "e3", "gsm_ss.e3",
1673 FT_UINT32, BASE_DEC, NULL, 0,
1674 "ChargingInformation/e3", HFILL }},
1676 { "e4", "gsm_ss.e4",
1677 FT_UINT32, BASE_DEC, NULL, 0,
1678 "ChargingInformation/e4", HFILL }},
1680 { "e5", "gsm_ss.e5",
1681 FT_UINT32, BASE_DEC, NULL, 0,
1682 "ChargingInformation/e5", HFILL }},
1684 { "e6", "gsm_ss.e6",
1685 FT_UINT32, BASE_DEC, NULL, 0,
1686 "ChargingInformation/e6", HFILL }},
1688 { "e7", "gsm_ss.e7",
1689 FT_UINT32, BASE_DEC, NULL, 0,
1690 "ChargingInformation/e7", HFILL }},
1691 { &hf_gsm_ss_suppressPrefCUG,
1692 { "suppressPrefCUG", "gsm_ss.suppressPrefCUG",
1693 FT_NONE, BASE_NONE, NULL, 0,
1694 "ForwardCUG-InfoArg/suppressPrefCUG", HFILL }},
1695 { &hf_gsm_ss_suppressOA,
1696 { "suppressOA", "gsm_ss.suppressOA",
1697 FT_NONE, BASE_NONE, NULL, 0,
1698 "ForwardCUG-InfoArg/suppressOA", HFILL }},
1699 { &hf_gsm_ss_ect_CallState,
1700 { "ect-CallState", "gsm_ss.ect_CallState",
1701 FT_UINT32, BASE_DEC, VALS(gsm_ss_ECT_CallState_vals), 0,
1702 "ECT-Indicator/ect-CallState", HFILL }},
1704 { "rdn", "gsm_ss.rdn",
1705 FT_UINT32, BASE_DEC, VALS(gsm_ss_RDN_vals), 0,
1706 "ECT-Indicator/rdn", HFILL }},
1707 { &hf_gsm_ss_callingName,
1708 { "callingName", "gsm_ss.callingName",
1709 FT_UINT32, BASE_DEC, VALS(gsm_ss_Name_vals), 0,
1710 "NameIndicator/callingName", HFILL }},
1711 { &hf_gsm_ss_namePresentationAllowed,
1712 { "namePresentationAllowed", "gsm_ss.namePresentationAllowed",
1713 FT_NONE, BASE_NONE, NULL, 0,
1714 "Name/namePresentationAllowed", HFILL }},
1715 { &hf_gsm_ss_presentationRestricted,
1716 { "presentationRestricted", "gsm_ss.presentationRestricted",
1717 FT_NONE, BASE_NONE, NULL, 0,
1719 { &hf_gsm_ss_nameUnavailable,
1720 { "nameUnavailable", "gsm_ss.nameUnavailable",
1721 FT_NONE, BASE_NONE, NULL, 0,
1722 "Name/nameUnavailable", HFILL }},
1723 { &hf_gsm_ss_namePresentationRestricted,
1724 { "namePresentationRestricted", "gsm_ss.namePresentationRestricted",
1725 FT_NONE, BASE_NONE, NULL, 0,
1726 "Name/namePresentationRestricted", HFILL }},
1727 { &hf_gsm_ss_dataCodingScheme,
1728 { "dataCodingScheme", "gsm_ss.dataCodingScheme",
1729 FT_BYTES, BASE_HEX, NULL, 0,
1730 "NameSet/dataCodingScheme", HFILL }},
1731 { &hf_gsm_ss_lengthInCharacters,
1732 { "lengthInCharacters", "gsm_ss.lengthInCharacters",
1733 FT_INT32, BASE_DEC, NULL, 0,
1734 "NameSet/lengthInCharacters", HFILL }},
1735 { &hf_gsm_ss_nameString,
1736 { "nameString", "gsm_ss.nameString",
1737 FT_BYTES, BASE_HEX, NULL, 0,
1738 "NameSet/nameString", HFILL }},
1739 { &hf_gsm_ss_presentationAllowedAddress,
1740 { "presentationAllowedAddress", "gsm_ss.presentationAllowedAddress",
1741 FT_NONE, BASE_NONE, NULL, 0,
1742 "RDN/presentationAllowedAddress", HFILL }},
1743 { &hf_gsm_ss_numberNotAvailableDueToInterworking,
1744 { "numberNotAvailableDueToInterworking", "gsm_ss.numberNotAvailableDueToInterworking",
1745 FT_NONE, BASE_NONE, NULL, 0,
1746 "RDN/numberNotAvailableDueToInterworking", HFILL }},
1747 { &hf_gsm_ss_presentationRestrictedAddress,
1748 { "presentationRestrictedAddress", "gsm_ss.presentationRestrictedAddress",
1749 FT_NONE, BASE_NONE, NULL, 0,
1750 "RDN/presentationRestrictedAddress", HFILL }},
1751 { &hf_gsm_ss_partyNumber,
1752 { "partyNumber", "gsm_ss.partyNumber",
1753 FT_BYTES, BASE_HEX, NULL, 0,
1754 "RemotePartyNumber/partyNumber", HFILL }},
1755 { &hf_gsm_ss_partyNumberSubaddress,
1756 { "partyNumberSubaddress", "gsm_ss.partyNumberSubaddress",
1757 FT_BYTES, BASE_HEX, NULL, 0,
1758 "RemotePartyNumber/partyNumberSubaddress", HFILL }},
1759 { &hf_gsm_ss_ccbs_Feature1,
1760 { "ccbs-Feature", "gsm_ss.ccbs_Feature",
1761 FT_NONE, BASE_NONE, NULL, 0,
1762 "RegisterCC-EntryRes/ccbs-Feature", HFILL }},
1763 { &hf_gsm_ss_ccbs_Index,
1764 { "ccbs-Index", "gsm_ss.ccbs_Index",
1765 FT_UINT32, BASE_DEC, NULL, 0,
1766 "RegisterCC-EntryRes/ccbs-Feature/ccbs-Index", HFILL }},
1767 { &hf_gsm_ss_b_subscriberNumber,
1768 { "b-subscriberNumber", "gsm_ss.b_subscriberNumber",
1769 FT_BYTES, BASE_HEX, NULL, 0,
1770 "RegisterCC-EntryRes/ccbs-Feature/b-subscriberNumber", HFILL }},
1771 { &hf_gsm_ss_b_subscriberSubaddress,
1772 { "b-subscriberSubaddress", "gsm_ss.b_subscriberSubaddress",
1773 FT_BYTES, BASE_HEX, NULL, 0,
1774 "RegisterCC-EntryRes/ccbs-Feature/b-subscriberSubaddress", HFILL }},
1775 { &hf_gsm_ss_basicServiceGroup,
1776 { "basicServiceGroup", "gsm_ss.basicServiceGroup",
1777 FT_UINT32, BASE_DEC, VALS(gsm_ss_T_basicServiceGroup_vals), 0,
1778 "RegisterCC-EntryRes/ccbs-Feature/basicServiceGroup", HFILL }},
1779 { &hf_gsm_ss_bearerService,
1780 { "bearerService", "gsm_ss.bearerService",
1781 FT_BYTES, BASE_HEX, NULL, 0,
1782 "RegisterCC-EntryRes/ccbs-Feature/basicServiceGroup/bearerService", HFILL }},
1783 { &hf_gsm_ss_teleservice,
1784 { "teleservice", "gsm_ss.teleservice",
1785 FT_BYTES, BASE_HEX, NULL, 0,
1786 "RegisterCC-EntryRes/ccbs-Feature/basicServiceGroup/teleservice", HFILL }},
1787 { &hf_gsm_ss_deflectedToNumber,
1788 { "deflectedToNumber", "gsm_ss.deflectedToNumber",
1789 FT_BYTES, BASE_HEX, NULL, 0,
1790 "CallDeflectionArg/deflectedToNumber", HFILL }},
1791 { &hf_gsm_ss_deflectedToSubaddress,
1792 { "deflectedToSubaddress", "gsm_ss.deflectedToSubaddress",
1793 FT_BYTES, BASE_HEX, NULL, 0,
1794 "CallDeflectionArg/deflectedToSubaddress", HFILL }},
1795 { &hf_gsm_ss_uUS_Service,
1796 { "uUS-Service", "gsm_ss.uUS_Service",
1797 FT_UINT32, BASE_DEC, VALS(gsm_ss_UUS_Service_vals), 0,
1798 "UserUserServiceArg/uUS-Service", HFILL }},
1799 { &hf_gsm_ss_uUS_Required,
1800 { "uUS-Required", "gsm_ss.uUS_Required",
1801 FT_BOOLEAN, 8, NULL, 0,
1802 "UserUserServiceArg/uUS-Required", HFILL }},
1803 { &hf_gsm_ss_notificationType,
1804 { "notificationType", "gsm_ss.notificationType",
1805 FT_UINT32, BASE_DEC, VALS(gsm_map_NotificationToMSUser_vals), 0,
1806 "LocationNotificationArg/notificationType", HFILL }},
1807 { &hf_gsm_ss_locationType,
1808 { "locationType", "gsm_ss.locationType",
1809 FT_NONE, BASE_NONE, NULL, 0,
1811 { &hf_gsm_ss_lcsClientExternalID,
1812 { "lcsClientExternalID", "gsm_ss.lcsClientExternalID",
1813 FT_NONE, BASE_NONE, NULL, 0,
1815 { &hf_gsm_ss_lcsClientName,
1816 { "lcsClientName", "gsm_ss.lcsClientName",
1817 FT_NONE, BASE_NONE, NULL, 0,
1818 "LocationNotificationArg/lcsClientName", HFILL }},
1819 { &hf_gsm_ss_lcsRequestorID,
1820 { "lcsRequestorID", "gsm_ss.lcsRequestorID",
1821 FT_NONE, BASE_NONE, NULL, 0,
1822 "LocationNotificationArg/lcsRequestorID", HFILL }},
1823 { &hf_gsm_ss_lcsCodeword,
1824 { "lcsCodeword", "gsm_ss.lcsCodeword",
1825 FT_NONE, BASE_NONE, NULL, 0,
1826 "LocationNotificationArg/lcsCodeword", HFILL }},
1827 { &hf_gsm_ss_lcsServiceTypeID,
1828 { "lcsServiceTypeID", "gsm_ss.lcsServiceTypeID",
1829 FT_UINT32, BASE_DEC, NULL, 0,
1831 { &hf_gsm_ss_verificationResponse,
1832 { "verificationResponse", "gsm_ss.verificationResponse",
1833 FT_UINT32, BASE_DEC, VALS(gsm_ss_VerificationResponse_vals), 0,
1834 "LocationNotificationRes/verificationResponse", HFILL }},
1835 { &hf_gsm_ss_molr_Type,
1836 { "molr-Type", "gsm_ss.molr_Type",
1837 FT_UINT32, BASE_DEC, VALS(gsm_ss_MOLR_Type_vals), 0,
1838 "LCS-MOLRArg/molr-Type", HFILL }},
1839 { &hf_gsm_ss_locationMethod,
1840 { "locationMethod", "gsm_ss.locationMethod",
1841 FT_UINT32, BASE_DEC, VALS(gsm_ss_LocationMethod_vals), 0,
1842 "LCS-MOLRArg/locationMethod", HFILL }},
1843 { &hf_gsm_ss_lcs_QoS,
1844 { "lcs-QoS", "gsm_ss.lcs_QoS",
1845 FT_NONE, BASE_NONE, NULL, 0,
1846 "LCS-MOLRArg/lcs-QoS", HFILL }},
1847 { &hf_gsm_ss_mlc_Number,
1848 { "mlc-Number", "gsm_ss.mlc_Number",
1849 FT_BYTES, BASE_HEX, NULL, 0,
1850 "LCS-MOLRArg/mlc-Number", HFILL }},
1851 { &hf_gsm_ss_gpsAssistanceData,
1852 { "gpsAssistanceData", "gsm_ss.gpsAssistanceData",
1853 FT_BYTES, BASE_HEX, NULL, 0,
1854 "LCS-MOLRArg/gpsAssistanceData", HFILL }},
1855 { &hf_gsm_ss_supportedGADShapes,
1856 { "supportedGADShapes", "gsm_ss.supportedGADShapes",
1857 FT_BYTES, BASE_HEX, NULL, 0,
1858 "LCS-MOLRArg/supportedGADShapes", HFILL }},
1859 { &hf_gsm_ss_ageOfLocationInfo,
1860 { "ageOfLocationInfo", "gsm_ss.ageOfLocationInfo",
1861 FT_UINT32, BASE_DEC, NULL, 0,
1862 "LCS-MOLRArg/ageOfLocationInfo", HFILL }},
1863 { &hf_gsm_ss_pseudonymIndicator,
1864 { "pseudonymIndicator", "gsm_ss.pseudonymIndicator",
1865 FT_NONE, BASE_NONE, NULL, 0,
1866 "LCS-MOLRArg/pseudonymIndicator", HFILL }},
1867 { &hf_gsm_ss_locationEstimate,
1868 { "locationEstimate", "gsm_ss.locationEstimate",
1869 FT_BYTES, BASE_HEX, NULL, 0,
1870 "LCS-MOLRRes/locationEstimate", HFILL }},
1871 { &hf_gsm_ss_decipheringKeys,
1872 { "decipheringKeys", "gsm_ss.decipheringKeys",
1873 FT_BYTES, BASE_HEX, NULL, 0,
1874 "LCS-MOLRRes/decipheringKeys", HFILL }},
1875 { &hf_gsm_ss_add_LocationEstimate,
1876 { "add-LocationEstimate", "gsm_ss.add_LocationEstimate",
1877 FT_BYTES, BASE_HEX, NULL, 0,
1878 "LCS-MOLRRes/add-LocationEstimate", HFILL }},
1879 { &hf_gsm_ss_referenceNumber,
1880 { "referenceNumber", "gsm_ss.referenceNumber",
1881 FT_BYTES, BASE_HEX, NULL, 0,
1883 { &hf_gsm_ss_h_gmlc_address,
1884 { "h-gmlc-address", "gsm_ss.h_gmlc_address",
1885 FT_BYTES, BASE_HEX, NULL, 0,
1887 { &hf_gsm_ss_deferredLocationEventType,
1888 { "deferredLocationEventType", "gsm_ss.deferredLocationEventType",
1889 FT_BYTES, BASE_HEX, NULL, 0,
1890 "LCS-AreaEventRequestArg/deferredLocationEventType", HFILL }},
1891 { &hf_gsm_ss_areaEventInfo,
1892 { "areaEventInfo", "gsm_ss.areaEventInfo",
1893 FT_NONE, BASE_NONE, NULL, 0,
1894 "LCS-AreaEventRequestArg/areaEventInfo", HFILL }},
1896 /*--- End of included file: packet-gsm_ss-hfarr.c ---*/
1897 #line 389 "packet-gsm_ss-template.c"
1900 /* List of subtrees */
1901 static gint *ett[] = {
1903 /*--- Included file: packet-gsm_ss-ettarr.c ---*/
1904 #line 1 "packet-gsm_ss-ettarr.c"
1905 &ett_gsm_ss_DummySS_operationsArg,
1906 &ett_gsm_ss_DummySS_operationsRes,
1907 &ett_gsm_ss_NotifySS_Arg,
1908 &ett_gsm_ss_ForwardChargeAdviceArg,
1909 &ett_gsm_ss_ChargingInformation,
1910 &ett_gsm_ss_ForwardCUG_InfoArg,
1911 &ett_gsm_ss_ECT_Indicator,
1912 &ett_gsm_ss_NameIndicator,
1914 &ett_gsm_ss_NameSet,
1916 &ett_gsm_ss_RemotePartyNumber,
1917 &ett_gsm_ss_AccessRegisterCCEntryArg,
1918 &ett_gsm_ss_RegisterCC_EntryRes,
1919 &ett_gsm_ss_T_ccbs_Feature,
1920 &ett_gsm_ss_T_basicServiceGroup,
1921 &ett_gsm_ss_CallDeflectionArg,
1922 &ett_gsm_ss_UserUserServiceArg,
1923 &ett_gsm_ss_LocationNotificationArg,
1924 &ett_gsm_ss_LocationNotificationRes,
1925 &ett_gsm_ss_LCS_MOLRArg,
1926 &ett_gsm_ss_LCS_MOLRRes,
1927 &ett_gsm_ss_LCS_AreaEventRequestArg,
1928 &ett_gsm_ss_LCS_AreaEventReportArg,
1929 &ett_gsm_ss_LCS_AreaEventCancellationArg,
1931 /*--- End of included file: packet-gsm_ss-ettarr.c ---*/
1932 #line 394 "packet-gsm_ss-template.c"
1935 /* Register protocol */
1936 proto_gsm_ss = proto_register_protocol(PNAME, PSNAME, PFNAME);
1937 /*XXX register_dissector("gsm_ss", dissect_gsm_ss, proto_gsm_ss);*/
1938 /* Register fields and subtrees */
1939 proto_register_field_array(proto_gsm_ss, hf, array_length(hf));
1940 proto_register_subtree_array(ett, array_length(ett));