![Ronnie Sahlberg](/assets/img/avatar_default.png)
to reduce the number of compiler warnings. update some template and cnf files to use _U_ as well svn path=/trunk/; revision=21088
1944 lines
85 KiB
C
1944 lines
85 KiB
C
/* Do not modify this file. */
|
|
/* It is created automatically by the ASN.1 to Wireshark dissector compiler */
|
|
/* ./packet-gsm_ss.c */
|
|
/* ../../tools/asn2wrs.py -b -e -p gsm_ss -c gsm_ss.cnf -s packet-gsm_ss-template SS-Operations.asn */
|
|
|
|
/* Input file: packet-gsm_ss-template.c */
|
|
|
|
#line 1 "packet-gsm_ss-template.c"
|
|
/* packet-gsm_ss-template.c
|
|
* Routines for GSM Supplementary Services dissection
|
|
* Copyright 2005, Anders Broman <anders.broman@ericsson.com>
|
|
* Based on the dissector by:
|
|
* Michael Lum <mlum [AT] telostech.com>
|
|
* In association with Telos Technology Inc.
|
|
*
|
|
* Title 3GPP Other
|
|
*
|
|
* Reference [1]
|
|
* Mobile radio Layer 3 supplementary service specification;
|
|
* Formats and coding
|
|
* (3GPP TS 24.080 version )
|
|
* $Id$
|
|
*
|
|
* Wireshark - Network traffic analyzer
|
|
* By Gerald Combs <gerald@wireshark.org>
|
|
* Copyright 1998 Gerald Combs
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
* References: ETSI TS 129 002
|
|
*/
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
# include "config.h"
|
|
#endif
|
|
|
|
#include <glib.h>
|
|
#include <epan/packet.h>
|
|
#include <epan/prefs.h>
|
|
#include <epan/conversation.h>
|
|
#include <epan/tap.h>
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#include "packet-ber.h"
|
|
#include "packet-gsm_ss.h"
|
|
#include "packet-gsm_map.h"
|
|
|
|
#define PNAME "GSM_SS"
|
|
#define PSNAME "GSM_SS"
|
|
#define PFNAME "gsm_ss"
|
|
|
|
const value_string gsm_ss_err_code_strings[] = {
|
|
{ 1, "Unknown Subscriber" },
|
|
{ 3, "Unknown MSC" },
|
|
{ 5, "Unidentified Subscriber" },
|
|
{ 6, "Absent Subscriber SM" },
|
|
{ 7, "Unknown Equipment" },
|
|
{ 8, "Roaming Not Allowed" },
|
|
{ 9, "Illegal Subscriber" },
|
|
{ 10, "Bearer Service Not Provisioned" },
|
|
{ 11, "Teleservice Not Provisioned" },
|
|
{ 12, "Illegal Equipment" },
|
|
{ 13, "Call Barred" },
|
|
{ 14, "Forwarding Violation" },
|
|
{ 15, "CUG Reject" },
|
|
{ 16, "Illegal SS Operation" },
|
|
{ 17, "SS Error Status" },
|
|
{ 18, "SS Not Available" },
|
|
{ 19, "SS Subscription Violation" },
|
|
{ 20, "SS Incompatibility" },
|
|
{ 21, "Facility Not Supported" },
|
|
{ 25, "No Handover Number Available" },
|
|
{ 26, "Subsequent Handover Failure" },
|
|
{ 27, "Absent Subscriber" },
|
|
{ 28, "Incompatible Terminal" },
|
|
{ 29, "Short Term Denial" },
|
|
{ 30, "Long Term Denial" },
|
|
{ 31, "Subscriber Busy For MT SMS" },
|
|
{ 32, "SM Delivery Failure" },
|
|
{ 33, "Message Waiting List Full" },
|
|
{ 34, "System Failure" },
|
|
{ 35, "Data Missing" },
|
|
{ 36, "Unexpected Data Value" },
|
|
{ 37, "PW Registration Failure" },
|
|
{ 38, "Negative PW Check" },
|
|
{ 39, "No Roaming Number Available" },
|
|
{ 40, "Tracing Buffer Full" },
|
|
{ 42, "Target Cell Outside Group Call Area" },
|
|
{ 43, "Number Of PW Attempts Violation" },
|
|
{ 44, "Number Changed" },
|
|
{ 45, "Busy Subscriber" },
|
|
{ 46, "No Subscriber Reply" },
|
|
{ 47, "Forwarding Failed" },
|
|
{ 48, "OR Not Allowed" },
|
|
{ 49, "ATI Not Allowed" },
|
|
{ 50, "No Group Call Number Available" },
|
|
{ 51, "Resource Limitation" },
|
|
{ 52, "Unauthorized Requesting Network" },
|
|
{ 53, "Unauthorized LCS Client" },
|
|
{ 54, "Position Method Failure" },
|
|
{ 58, "Unknown Or Unreachable LCS Client" },
|
|
{ 59, "MM Event Not Supported" },
|
|
{ 60, "ATSI Not Allowed" },
|
|
{ 61, "ATM Not Allowed" },
|
|
{ 62, "Information Not Available" },
|
|
{ 71, "Unknown Alphabet" },
|
|
{ 72, "USSD Busy" },
|
|
{ 120, "Nbr Sb Exceeded" },
|
|
{ 121, "Rejected By User" },
|
|
{ 122, "Rejected By Network" },
|
|
{ 123, "Deflection To Served Subscriber" },
|
|
{ 124, "Special Service Code" },
|
|
{ 125, "Invalid Deflected To Number" },
|
|
{ 126, "Max Number Of MPTY Participants Exceeded" },
|
|
{ 127, "Resources Not Available" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
const value_string gsm_ss_opr_code_strings[] = {
|
|
{ 10, "Register SS" },
|
|
{ 11, "Erase SS" },
|
|
{ 12, "Activate SS" },
|
|
{ 13, "Deactivate SS" },
|
|
{ 14, "Interrogate SS" },
|
|
{ 16, "Notify SS" },
|
|
{ 17, "Register Password" },
|
|
{ 18, "Get Password" },
|
|
{ 19, "Process Unstructured SS Data" },
|
|
{ 38, "Forward Check SS Indication" },
|
|
{ 59, "Process Unstructured SS Request" },
|
|
{ 60, "Unstructured SS Request" },
|
|
{ 61, "Unstructured SS Notify" },
|
|
{ 77, "Erase CC Entry" },
|
|
{ 112, "lcs-AreaEventCancellation" },
|
|
{ 113, "lcs-AreaEventReport" },
|
|
{ 114, "LCS-AreaEventRequest" },
|
|
{ 115, "LCS MOLR" },
|
|
{ 116, "LCS Location Notification" },
|
|
{ 117, "Call Deflection" },
|
|
{ 118, "User User Service" },
|
|
{ 119, "Access Register CC Entry" },
|
|
{ 120, "Forward CUG Info" },
|
|
{ 121, "Split MPTY" },
|
|
{ 122, "Retrieve MPTY" },
|
|
{ 123, "Hold MPTY" },
|
|
{ 124, "Build MPTY" },
|
|
{ 125, "Forward Charge Advice" },
|
|
{ 126, "Explicit CT" },
|
|
|
|
{ 0, NULL }
|
|
};
|
|
|
|
/* Initialize the protocol and registered fields */
|
|
int proto_gsm_ss = -1;
|
|
|
|
static int hf_gsm_ss_getPassword = -1;
|
|
static int hf_gsm_ss_currentPassword = -1;
|
|
static int hf_gsm_ss_SS_Code = -1;
|
|
|
|
/*--- Included file: packet-gsm_ss-hf.c ---*/
|
|
#line 1 "packet-gsm_ss-hf.c"
|
|
static int hf_gsm_ss_notifySS = -1; /* NotifySS_Arg */
|
|
static int hf_gsm_ss_processUnstructuredSS_Data = -1; /* SS_UserData */
|
|
static int hf_gsm_ss_forwardCUG_Info = -1; /* ForwardCUG_InfoArg */
|
|
static int hf_gsm_ss_accessRegisterCCEntry = -1; /* AccessRegisterCCEntryArg */
|
|
static int hf_gsm_ss_forwardChargeAdvice = -1; /* ForwardChargeAdviceArg */
|
|
static int hf_gsm_ss_callDeflection = -1; /* CallDeflectionArg */
|
|
static int hf_gsm_ss_lcs_LocationNotification = -1; /* LocationNotificationArg */
|
|
static int hf_gsm_ss_lcs_MOLR = -1; /* LCS_MOLRArg */
|
|
static int hf_gsm_ss_lcs_AreaEventRequest = -1; /* LCS_AreaEventRequestArg */
|
|
static int hf_gsm_ss_lcs_AreaEventReport = -1; /* LCS_AreaEventReportArg */
|
|
static int hf_gsm_ss_lcs_AreaEventCancellation = -1; /* LCS_AreaEventCancellationArg */
|
|
static int hf_gsm_ss_registerCC_EntryRes = -1; /* RegisterCC_EntryRes */
|
|
static int hf_gsm_ss_lcs_LocationNotification_res = -1; /* LocationNotificationRes */
|
|
static int hf_gsm_ss_lcs_MOLR_res = -1; /* LCS_MOLRRes */
|
|
static int hf_gsm_ss_ss_Code = -1; /* SS_Code */
|
|
static int hf_gsm_ss_ss_Status = -1; /* SS_Status */
|
|
static int hf_gsm_ss_ss_Notification = -1; /* SS_Notification */
|
|
static int hf_gsm_ss_callIsWaiting_Indicator = -1; /* NULL */
|
|
static int hf_gsm_ss_callOnHold_Indicator = -1; /* CallOnHold_Indicator */
|
|
static int hf_gsm_ss_mpty_Indicator = -1; /* NULL */
|
|
static int hf_gsm_ss_cug_Index = -1; /* CUG_Index */
|
|
static int hf_gsm_ss_clirSuppressionRejected = -1; /* NULL */
|
|
static int hf_gsm_ss_ect_Indicator = -1; /* ECT_Indicator */
|
|
static int hf_gsm_ss_nameIndicator = -1; /* NameIndicator */
|
|
static int hf_gsm_ss_ccbs_Feature = -1; /* CCBS_Feature */
|
|
static int hf_gsm_ss_alertingPattern = -1; /* AlertingPattern */
|
|
static int hf_gsm_ss_multicall_Indicator = -1; /* Multicall_Indicator */
|
|
static int hf_gsm_ss_chargingInformation = -1; /* ChargingInformation */
|
|
static int hf_gsm_ss_e1 = -1; /* E1 */
|
|
static int hf_gsm_ss_e2 = -1; /* E2 */
|
|
static int hf_gsm_ss_e3 = -1; /* E3 */
|
|
static int hf_gsm_ss_e4 = -1; /* E4 */
|
|
static int hf_gsm_ss_e5 = -1; /* E5 */
|
|
static int hf_gsm_ss_e6 = -1; /* E6 */
|
|
static int hf_gsm_ss_e7 = -1; /* E7 */
|
|
static int hf_gsm_ss_suppressPrefCUG = -1; /* NULL */
|
|
static int hf_gsm_ss_suppressOA = -1; /* NULL */
|
|
static int hf_gsm_ss_ect_CallState = -1; /* ECT_CallState */
|
|
static int hf_gsm_ss_rdn = -1; /* RDN */
|
|
static int hf_gsm_ss_callingName = -1; /* Name */
|
|
static int hf_gsm_ss_namePresentationAllowed = -1; /* NameSet */
|
|
static int hf_gsm_ss_presentationRestricted = -1; /* NULL */
|
|
static int hf_gsm_ss_nameUnavailable = -1; /* NULL */
|
|
static int hf_gsm_ss_namePresentationRestricted = -1; /* NameSet */
|
|
static int hf_gsm_ss_dataCodingScheme = -1; /* USSD_DataCodingScheme */
|
|
static int hf_gsm_ss_lengthInCharacters = -1; /* INTEGER */
|
|
static int hf_gsm_ss_nameString = -1; /* USSD_String */
|
|
static int hf_gsm_ss_presentationAllowedAddress = -1; /* RemotePartyNumber */
|
|
static int hf_gsm_ss_numberNotAvailableDueToInterworking = -1; /* NULL */
|
|
static int hf_gsm_ss_presentationRestrictedAddress = -1; /* RemotePartyNumber */
|
|
static int hf_gsm_ss_partyNumber = -1; /* ISDN_AddressString */
|
|
static int hf_gsm_ss_partyNumberSubaddress = -1; /* ISDN_SubaddressString */
|
|
static int hf_gsm_ss_ccbs_Feature1 = -1; /* T_ccbs_Feature */
|
|
static int hf_gsm_ss_ccbs_Index = -1; /* INTEGER_1_5 */
|
|
static int hf_gsm_ss_b_subscriberNumber = -1; /* T_b_subscriberNumber */
|
|
static int hf_gsm_ss_b_subscriberSubaddress = -1; /* OCTET_STRING_SIZE_1_21 */
|
|
static int hf_gsm_ss_basicServiceGroup = -1; /* T_basicServiceGroup */
|
|
static int hf_gsm_ss_bearerService = -1; /* OCTET_STRING_SIZE_1 */
|
|
static int hf_gsm_ss_teleservice = -1; /* OCTET_STRING_SIZE_1 */
|
|
static int hf_gsm_ss_deflectedToNumber = -1; /* AddressString */
|
|
static int hf_gsm_ss_deflectedToSubaddress = -1; /* ISDN_SubaddressString */
|
|
static int hf_gsm_ss_uUS_Service = -1; /* UUS_Service */
|
|
static int hf_gsm_ss_uUS_Required = -1; /* BOOLEAN */
|
|
static int hf_gsm_ss_notificationType = -1; /* NotificationToMSUser */
|
|
static int hf_gsm_ss_locationType = -1; /* LocationType */
|
|
static int hf_gsm_ss_lcsClientExternalID = -1; /* LCSClientExternalID */
|
|
static int hf_gsm_ss_lcsClientName = -1; /* LCSClientName */
|
|
static int hf_gsm_ss_lcsRequestorID = -1; /* LCSRequestorID */
|
|
static int hf_gsm_ss_lcsCodeword = -1; /* LCSCodeword */
|
|
static int hf_gsm_ss_lcsServiceTypeID = -1; /* LCSServiceTypeID */
|
|
static int hf_gsm_ss_verificationResponse = -1; /* VerificationResponse */
|
|
static int hf_gsm_ss_molr_Type = -1; /* MOLR_Type */
|
|
static int hf_gsm_ss_locationMethod = -1; /* LocationMethod */
|
|
static int hf_gsm_ss_lcs_QoS = -1; /* LCS_QoS */
|
|
static int hf_gsm_ss_mlc_Number = -1; /* ISDN_AddressString */
|
|
static int hf_gsm_ss_gpsAssistanceData = -1; /* GPSAssistanceData */
|
|
static int hf_gsm_ss_supportedGADShapes = -1; /* SupportedGADShapes */
|
|
static int hf_gsm_ss_ageOfLocationInfo = -1; /* AgeOfLocationInformation */
|
|
static int hf_gsm_ss_pseudonymIndicator = -1; /* NULL */
|
|
static int hf_gsm_ss_locationEstimate = -1; /* Ext_GeographicalInformation */
|
|
static int hf_gsm_ss_decipheringKeys = -1; /* DecipheringKeys */
|
|
static int hf_gsm_ss_add_LocationEstimate = -1; /* Add_GeographicalInformation */
|
|
static int hf_gsm_ss_referenceNumber = -1; /* LCS_ReferenceNumber */
|
|
static int hf_gsm_ss_h_gmlc_address = -1; /* GSN_Address */
|
|
static int hf_gsm_ss_deferredLocationEventType = -1; /* DeferredLocationEventType */
|
|
static int hf_gsm_ss_areaEventInfo = -1; /* AreaEventInfo */
|
|
|
|
/*--- End of included file: packet-gsm_ss-hf.c ---*/
|
|
#line 165 "packet-gsm_ss-template.c"
|
|
|
|
/* Initialize the subtree pointers */
|
|
|
|
/*--- Included file: packet-gsm_ss-ett.c ---*/
|
|
#line 1 "packet-gsm_ss-ett.c"
|
|
static gint ett_gsm_ss_DummySS_operationsArg = -1;
|
|
static gint ett_gsm_ss_DummySS_operationsRes = -1;
|
|
static gint ett_gsm_ss_NotifySS_Arg = -1;
|
|
static gint ett_gsm_ss_ForwardChargeAdviceArg = -1;
|
|
static gint ett_gsm_ss_ChargingInformation = -1;
|
|
static gint ett_gsm_ss_ForwardCUG_InfoArg = -1;
|
|
static gint ett_gsm_ss_ECT_Indicator = -1;
|
|
static gint ett_gsm_ss_NameIndicator = -1;
|
|
static gint ett_gsm_ss_Name = -1;
|
|
static gint ett_gsm_ss_NameSet = -1;
|
|
static gint ett_gsm_ss_RDN = -1;
|
|
static gint ett_gsm_ss_RemotePartyNumber = -1;
|
|
static gint ett_gsm_ss_AccessRegisterCCEntryArg = -1;
|
|
static gint ett_gsm_ss_RegisterCC_EntryRes = -1;
|
|
static gint ett_gsm_ss_T_ccbs_Feature = -1;
|
|
static gint ett_gsm_ss_T_basicServiceGroup = -1;
|
|
static gint ett_gsm_ss_CallDeflectionArg = -1;
|
|
static gint ett_gsm_ss_UserUserServiceArg = -1;
|
|
static gint ett_gsm_ss_LocationNotificationArg = -1;
|
|
static gint ett_gsm_ss_LocationNotificationRes = -1;
|
|
static gint ett_gsm_ss_LCS_MOLRArg = -1;
|
|
static gint ett_gsm_ss_LCS_MOLRRes = -1;
|
|
static gint ett_gsm_ss_LCS_AreaEventRequestArg = -1;
|
|
static gint ett_gsm_ss_LCS_AreaEventReportArg = -1;
|
|
static gint ett_gsm_ss_LCS_AreaEventCancellationArg = -1;
|
|
|
|
/*--- End of included file: packet-gsm_ss-ett.c ---*/
|
|
#line 168 "packet-gsm_ss-template.c"
|
|
|
|
|
|
/*--- Included file: packet-gsm_ss-fn.c ---*/
|
|
#line 1 "packet-gsm_ss-fn.c"
|
|
/*--- Fields for imported types ---*/
|
|
|
|
static int dissect_ss_Code_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_SS_Code(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ss_Code);
|
|
}
|
|
static int dissect_ss_Status_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_SS_Status(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ss_Status);
|
|
}
|
|
static int dissect_cug_Index_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_CUG_Index(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_cug_Index);
|
|
}
|
|
static int dissect_ccbs_Feature_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_CCBS_Feature(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ccbs_Feature);
|
|
}
|
|
static int dissect_alertingPattern_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_AlertingPattern(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_alertingPattern);
|
|
}
|
|
static int dissect_dataCodingScheme_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_USSD_DataCodingScheme(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_dataCodingScheme);
|
|
}
|
|
static int dissect_nameString_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_USSD_String(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_nameString);
|
|
}
|
|
static int dissect_partyNumber_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_partyNumber);
|
|
}
|
|
static int dissect_partyNumberSubaddress_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_ISDN_SubaddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_partyNumberSubaddress);
|
|
}
|
|
static int dissect_deflectedToNumber_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_deflectedToNumber);
|
|
}
|
|
static int dissect_deflectedToSubaddress_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_ISDN_SubaddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_deflectedToSubaddress);
|
|
}
|
|
static int dissect_notificationType_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_NotificationToMSUser(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_notificationType);
|
|
}
|
|
static int dissect_locationType_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_LocationType(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_locationType);
|
|
}
|
|
static int dissect_lcsClientExternalID_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_LCSClientExternalID(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_lcsClientExternalID);
|
|
}
|
|
static int dissect_lcsClientName_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_LCSClientName(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_lcsClientName);
|
|
}
|
|
static int dissect_lcsRequestorID_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_LCSRequestorID(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_lcsRequestorID);
|
|
}
|
|
static int dissect_lcsCodeword_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_LCSCodeword(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_lcsCodeword);
|
|
}
|
|
static int dissect_lcsServiceTypeID_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_LCSServiceTypeID(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_lcsServiceTypeID);
|
|
}
|
|
static int dissect_lcs_QoS_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_LCS_QoS(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_QoS);
|
|
}
|
|
static int dissect_mlc_Number_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_mlc_Number);
|
|
}
|
|
static int dissect_supportedGADShapes_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_SupportedGADShapes(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_supportedGADShapes);
|
|
}
|
|
static int dissect_ageOfLocationInfo_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_AgeOfLocationInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ageOfLocationInfo);
|
|
}
|
|
static int dissect_locationEstimate_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_Ext_GeographicalInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_locationEstimate);
|
|
}
|
|
static int dissect_add_LocationEstimate_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_Add_GeographicalInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_add_LocationEstimate);
|
|
}
|
|
static int dissect_referenceNumber_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_LCS_ReferenceNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_referenceNumber);
|
|
}
|
|
static int dissect_h_gmlc_address_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_h_gmlc_address);
|
|
}
|
|
static int dissect_deferredLocationEventType_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_DeferredLocationEventType(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_deferredLocationEventType);
|
|
}
|
|
static int dissect_areaEventInfo_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_map_AreaEventInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_areaEventInfo);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_SS_Notification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_ss_Notification_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_SS_Notification(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ss_Notification);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_callIsWaiting_Indicator_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_callIsWaiting_Indicator);
|
|
}
|
|
static int dissect_mpty_Indicator_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_mpty_Indicator);
|
|
}
|
|
static int dissect_clirSuppressionRejected_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_clirSuppressionRejected);
|
|
}
|
|
static int dissect_suppressPrefCUG_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_suppressPrefCUG);
|
|
}
|
|
static int dissect_suppressOA_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_suppressOA);
|
|
}
|
|
static int dissect_presentationRestricted_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_presentationRestricted);
|
|
}
|
|
static int dissect_nameUnavailable_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_nameUnavailable);
|
|
}
|
|
static int dissect_numberNotAvailableDueToInterworking_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_numberNotAvailableDueToInterworking);
|
|
}
|
|
static int dissect_pseudonymIndicator_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_pseudonymIndicator);
|
|
}
|
|
|
|
|
|
static const value_string gsm_ss_CallOnHold_Indicator_vals[] = {
|
|
{ 0, "callRetrieved" },
|
|
{ 1, "callOnHold" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_CallOnHold_Indicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_callOnHold_Indicator_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_CallOnHold_Indicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_callOnHold_Indicator);
|
|
}
|
|
|
|
|
|
static const value_string gsm_ss_ECT_CallState_vals[] = {
|
|
{ 0, "alerting" },
|
|
{ 1, "active" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_ECT_CallState(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_ect_CallState_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_ECT_CallState(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ect_CallState);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t RemotePartyNumber_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_partyNumber_impl },
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_partyNumberSubaddress_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_RemotePartyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
RemotePartyNumber_sequence, hf_index, ett_gsm_ss_RemotePartyNumber);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_presentationAllowedAddress_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_RemotePartyNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_presentationAllowedAddress);
|
|
}
|
|
static int dissect_presentationRestrictedAddress_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_RemotePartyNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_presentationRestrictedAddress);
|
|
}
|
|
|
|
|
|
static const value_string gsm_ss_RDN_vals[] = {
|
|
{ 0, "presentationAllowedAddress" },
|
|
{ 1, "presentationRestricted" },
|
|
{ 2, "numberNotAvailableDueToInterworking" },
|
|
{ 3, "presentationRestrictedAddress" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
static const ber_choice_t RDN_choice[] = {
|
|
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_presentationAllowedAddress_impl },
|
|
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_presentationRestricted_impl },
|
|
{ 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_numberNotAvailableDueToInterworking_impl },
|
|
{ 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_presentationRestrictedAddress_impl },
|
|
{ 0, 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_RDN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
|
|
RDN_choice, hf_index, ett_gsm_ss_RDN,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_rdn_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_RDN(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_rdn);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t ECT_Indicator_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ect_CallState_impl },
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_rdn_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_ECT_Indicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
ECT_Indicator_sequence, hf_index, ett_gsm_ss_ECT_Indicator);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_ect_Indicator_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_ECT_Indicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ect_Indicator);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_lengthInCharacters_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_lengthInCharacters);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t NameSet_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_dataCodingScheme_impl },
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lengthInCharacters_impl },
|
|
{ BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_nameString_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_NameSet(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
NameSet_sequence, hf_index, ett_gsm_ss_NameSet);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_namePresentationAllowed_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_NameSet(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_namePresentationAllowed);
|
|
}
|
|
static int dissect_namePresentationRestricted_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_NameSet(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_namePresentationRestricted);
|
|
}
|
|
|
|
|
|
static const value_string gsm_ss_Name_vals[] = {
|
|
{ 0, "namePresentationAllowed" },
|
|
{ 1, "presentationRestricted" },
|
|
{ 2, "nameUnavailable" },
|
|
{ 3, "namePresentationRestricted" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
static const ber_choice_t Name_choice[] = {
|
|
{ 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_namePresentationAllowed_impl },
|
|
{ 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_presentationRestricted_impl },
|
|
{ 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_nameUnavailable_impl },
|
|
{ 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_namePresentationRestricted_impl },
|
|
{ 0, 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_Name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
|
|
Name_choice, hf_index, ett_gsm_ss_Name,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_callingName_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_Name(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_callingName);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t NameIndicator_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_callingName_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_NameIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
NameIndicator_sequence, hf_index, ett_gsm_ss_NameIndicator);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_nameIndicator_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_NameIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_nameIndicator);
|
|
}
|
|
|
|
|
|
static const value_string gsm_ss_Multicall_Indicator_vals[] = {
|
|
{ 0, "nbr-SNexceeded" },
|
|
{ 1, "nbr-Userexceeded" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_Multicall_Indicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_multicall_Indicator_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_Multicall_Indicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_multicall_Indicator);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t NotifySS_Arg_sequence[] = {
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
|
|
{ BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
|
|
{ BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Notification_impl },
|
|
{ BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callIsWaiting_Indicator_impl },
|
|
{ BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callOnHold_Indicator_impl },
|
|
{ BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mpty_Indicator_impl },
|
|
{ BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_Index_impl },
|
|
{ BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_clirSuppressionRejected_impl },
|
|
{ BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ect_Indicator_impl },
|
|
{ BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nameIndicator_impl },
|
|
{ BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Feature_impl },
|
|
{ BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
|
|
{ BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_multicall_Indicator_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_NotifySS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
NotifySS_Arg_sequence, hf_index, ett_gsm_ss_NotifySS_Arg);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_notifySS(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_NotifySS_Arg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_notifySS);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_SS_UserData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
|
|
pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_processUnstructuredSS_Data(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_SS_UserData(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_processUnstructuredSS_Data);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t ForwardCUG_InfoArg_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_Index_impl },
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppressPrefCUG_impl },
|
|
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppressOA_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_ForwardCUG_InfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
ForwardCUG_InfoArg_sequence, hf_index, ett_gsm_ss_ForwardCUG_InfoArg);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_forwardCUG_Info(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_ForwardCUG_InfoArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_forwardCUG_Info);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t AccessRegisterCCEntryArg_sequence[] = {
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_AccessRegisterCCEntryArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
AccessRegisterCCEntryArg_sequence, hf_index, ett_gsm_ss_AccessRegisterCCEntryArg);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_accessRegisterCCEntry(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_AccessRegisterCCEntryArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_accessRegisterCCEntry);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_E1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_e1_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_E1(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_e1);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_E2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_e2_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_E2(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_e2);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_E3(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_e3_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_E3(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_e3);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_E4(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_e4_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_E4(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_e4);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_E5(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_e5_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_E5(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_e5);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_E6(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_e6_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_E6(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_e6);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_E7(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_e7_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_E7(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_e7);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t ChargingInformation_sequence[] = {
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_e1_impl },
|
|
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_e2_impl },
|
|
{ BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_e3_impl },
|
|
{ BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_e4_impl },
|
|
{ BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_e5_impl },
|
|
{ BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_e6_impl },
|
|
{ BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_e7_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_ChargingInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
ChargingInformation_sequence, hf_index, ett_gsm_ss_ChargingInformation);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_chargingInformation_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_ChargingInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_chargingInformation);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t ForwardChargeAdviceArg_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_chargingInformation_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_ForwardChargeAdviceArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
ForwardChargeAdviceArg_sequence, hf_index, ett_gsm_ss_ForwardChargeAdviceArg);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_forwardChargeAdvice(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_ForwardChargeAdviceArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_forwardChargeAdvice);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t CallDeflectionArg_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_deflectedToNumber_impl },
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deflectedToSubaddress_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_CallDeflectionArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
CallDeflectionArg_sequence, hf_index, ett_gsm_ss_CallDeflectionArg);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_callDeflection(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_CallDeflectionArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_callDeflection);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t LocationNotificationArg_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_notificationType_impl },
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_locationType_impl },
|
|
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientExternalID_impl },
|
|
{ BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientName_impl },
|
|
{ BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsRequestorID_impl },
|
|
{ BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsCodeword_impl },
|
|
{ BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsServiceTypeID_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_LocationNotificationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
LocationNotificationArg_sequence, hf_index, ett_gsm_ss_LocationNotificationArg);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_lcs_LocationNotification(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_LocationNotificationArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_LocationNotification);
|
|
}
|
|
|
|
|
|
static const value_string gsm_ss_MOLR_Type_vals[] = {
|
|
{ 0, "locationEstimate" },
|
|
{ 1, "assistanceData" },
|
|
{ 2, "deCipheringKeys" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_MOLR_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_molr_Type_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_MOLR_Type(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_molr_Type);
|
|
}
|
|
|
|
|
|
static const value_string gsm_ss_LocationMethod_vals[] = {
|
|
{ 0, "msBasedEOTD" },
|
|
{ 1, "msAssistedEOTD" },
|
|
{ 2, "assistedGPS" },
|
|
{ 3, "msBasedOTDOA" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_LocationMethod(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_locationMethod_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_LocationMethod(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_locationMethod);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_GPSAssistanceData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_gpsAssistanceData_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_GPSAssistanceData(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_gpsAssistanceData);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t LCS_MOLRArg_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_molr_Type_impl },
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationMethod_impl },
|
|
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_QoS_impl },
|
|
{ BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientExternalID_impl },
|
|
{ BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mlc_Number_impl },
|
|
{ BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gpsAssistanceData_impl },
|
|
{ BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedGADShapes_impl },
|
|
{ BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsServiceTypeID_impl },
|
|
{ BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ageOfLocationInfo_impl },
|
|
{ BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationType_impl },
|
|
{ BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pseudonymIndicator_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_LCS_MOLRArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
LCS_MOLRArg_sequence, hf_index, ett_gsm_ss_LCS_MOLRArg);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_lcs_MOLR(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_LCS_MOLRArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_MOLR);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t LCS_AreaEventRequestArg_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_referenceNumber_impl },
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h_gmlc_address_impl },
|
|
{ BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_deferredLocationEventType_impl },
|
|
{ BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_areaEventInfo_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_LCS_AreaEventRequestArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
LCS_AreaEventRequestArg_sequence, hf_index, ett_gsm_ss_LCS_AreaEventRequestArg);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_lcs_AreaEventRequest(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_LCS_AreaEventRequestArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_AreaEventRequest);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t LCS_AreaEventReportArg_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_referenceNumber_impl },
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h_gmlc_address_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_LCS_AreaEventReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
LCS_AreaEventReportArg_sequence, hf_index, ett_gsm_ss_LCS_AreaEventReportArg);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_lcs_AreaEventReport(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_LCS_AreaEventReportArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_AreaEventReport);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t LCS_AreaEventCancellationArg_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_referenceNumber_impl },
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_h_gmlc_address_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_LCS_AreaEventCancellationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
LCS_AreaEventCancellationArg_sequence, hf_index, ett_gsm_ss_LCS_AreaEventCancellationArg);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_lcs_AreaEventCancellation(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_LCS_AreaEventCancellationArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_AreaEventCancellation);
|
|
}
|
|
|
|
|
|
static const value_string gsm_ss_DummySS_operationsArg_vals[] = {
|
|
{ 0, "notifySS" },
|
|
{ 1, "processUnstructuredSS-Data" },
|
|
{ 2, "forwardCUG-Info" },
|
|
{ 3, "accessRegisterCCEntry" },
|
|
{ 4, "forwardChargeAdvice" },
|
|
{ 5, "callDeflection" },
|
|
{ 6, "lcs-LocationNotification" },
|
|
{ 7, "lcs-MOLR" },
|
|
{ 8, "lcs-AreaEventRequest" },
|
|
{ 9, "lcs-AreaEventReport" },
|
|
{ 10, "lcs-AreaEventCancellation" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
static const ber_choice_t DummySS_operationsArg_choice[] = {
|
|
{ 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_notifySS },
|
|
{ 1, BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_NOOWNTAG, dissect_processUnstructuredSS_Data },
|
|
{ 2, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardCUG_Info },
|
|
{ 3, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_accessRegisterCCEntry },
|
|
{ 4, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardChargeAdvice },
|
|
{ 5, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_callDeflection },
|
|
{ 6, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_LocationNotification },
|
|
{ 7, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_MOLR },
|
|
{ 8, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_AreaEventRequest },
|
|
{ 9, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_AreaEventReport },
|
|
{ 10, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_AreaEventCancellation },
|
|
{ 0, 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_DummySS_operationsArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
|
|
DummySS_operationsArg_choice, hf_index, ett_gsm_ss_DummySS_operationsArg,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_INTEGER_1_5(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_ccbs_Index_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_INTEGER_1_5(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ccbs_Index);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_T_b_subscriberNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_b_subscriberNumber_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_T_b_subscriberNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_b_subscriberNumber);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_OCTET_STRING_SIZE_1_21(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_b_subscriberSubaddress_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_OCTET_STRING_SIZE_1_21(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_b_subscriberSubaddress);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_OCTET_STRING_SIZE_1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_bearerService_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_bearerService);
|
|
}
|
|
static int dissect_teleservice_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_teleservice);
|
|
}
|
|
|
|
|
|
static const value_string gsm_ss_T_basicServiceGroup_vals[] = {
|
|
{ 2, "bearerService" },
|
|
{ 3, "teleservice" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
static const ber_choice_t T_basicServiceGroup_choice[] = {
|
|
{ 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_bearerService_impl },
|
|
{ 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_teleservice_impl },
|
|
{ 0, 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_T_basicServiceGroup(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
|
|
T_basicServiceGroup_choice, hf_index, ett_gsm_ss_T_basicServiceGroup,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_basicServiceGroup_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_T_basicServiceGroup(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_basicServiceGroup);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t T_ccbs_Feature_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Index_impl },
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberNumber_impl },
|
|
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberSubaddress_impl },
|
|
{ BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceGroup_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_T_ccbs_Feature(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
T_ccbs_Feature_sequence, hf_index, ett_gsm_ss_T_ccbs_Feature);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_ccbs_Feature1_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_T_ccbs_Feature(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_ccbs_Feature1);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t RegisterCC_EntryRes_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Feature1_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_RegisterCC_EntryRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
RegisterCC_EntryRes_sequence, hf_index, ett_gsm_ss_RegisterCC_EntryRes);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_registerCC_EntryRes(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_RegisterCC_EntryRes(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_registerCC_EntryRes);
|
|
}
|
|
|
|
|
|
static const value_string gsm_ss_VerificationResponse_vals[] = {
|
|
{ 0, "permissionDenied" },
|
|
{ 1, "permissionGranted" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_VerificationResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_verificationResponse_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_VerificationResponse(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_verificationResponse);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t LocationNotificationRes_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_verificationResponse_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_LocationNotificationRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
LocationNotificationRes_sequence, hf_index, ett_gsm_ss_LocationNotificationRes);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_lcs_LocationNotification_res(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_LocationNotificationRes(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_LocationNotification_res);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_DecipheringKeys(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_decipheringKeys_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_DecipheringKeys(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_decipheringKeys);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t LCS_MOLRRes_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationEstimate_impl },
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_decipheringKeys_impl },
|
|
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_add_LocationEstimate_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_LCS_MOLRRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
LCS_MOLRRes_sequence, hf_index, ett_gsm_ss_LCS_MOLRRes);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_lcs_MOLR_res(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_LCS_MOLRRes(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_lcs_MOLR_res);
|
|
}
|
|
|
|
|
|
static const value_string gsm_ss_DummySS_operationsRes_vals[] = {
|
|
{ 0, "registerCC-EntryRes" },
|
|
{ 1, "lcs-LocationNotification-res" },
|
|
{ 2, "lcs-MOLR-res" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
static const ber_choice_t DummySS_operationsRes_choice[] = {
|
|
{ 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_registerCC_EntryRes },
|
|
{ 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_LocationNotification_res },
|
|
{ 2, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_MOLR_res },
|
|
{ 0, 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_DummySS_operationsRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
|
|
DummySS_operationsRes_choice, hf_index, ett_gsm_ss_DummySS_operationsRes,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
|
|
|
|
static const value_string gsm_ss_UUS_Service_vals[] = {
|
|
{ 1, "uUS1" },
|
|
{ 2, "uUS2" },
|
|
{ 3, "uUS3" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_UUS_Service(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
|
NULL);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_uUS_Service_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_UUS_Service(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_uUS_Service);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_gsm_ss_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
|
|
|
|
return offset;
|
|
}
|
|
static int dissect_uUS_Required_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
|
|
return dissect_gsm_ss_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_gsm_ss_uUS_Required);
|
|
}
|
|
|
|
|
|
static const ber_sequence_t UserUserServiceArg_sequence[] = {
|
|
{ BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_uUS_Service_impl },
|
|
{ BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_uUS_Required_impl },
|
|
{ 0, 0, 0, NULL }
|
|
};
|
|
|
|
static int
|
|
dissect_gsm_ss_UserUserServiceArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
|
|
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
|
|
UserUserServiceArg_sequence, hf_index, ett_gsm_ss_UserUserServiceArg);
|
|
|
|
return offset;
|
|
}
|
|
|
|
|
|
/*--- End of included file: packet-gsm_ss-fn.c ---*/
|
|
#line 170 "packet-gsm_ss-template.c"
|
|
|
|
|
|
int
|
|
gsm_ss_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset,guint32 opcode, gint comp_type_tag)
|
|
{
|
|
switch (comp_type_tag){
|
|
case 1: /* invoke */
|
|
switch (opcode){
|
|
case 10: /* Register SS -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_RegisterSS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 11: /* Erase SS -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 12: /* Activate SS -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 13: /*Deactivate SS -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 14: /*Interrogate SS -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 16: /*Notify SS */
|
|
offset = dissect_notifySS(pinfo, tree, tvb, offset);
|
|
break;
|
|
case 17: /*Register Password -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_SS_Code(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 18: /*Get Password -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_GetPasswordArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_getPassword);
|
|
break;
|
|
case 19: /*Process Unstructured SS Data */
|
|
offset = dissect_processUnstructuredSS_Data(pinfo, tree, tvb, offset);
|
|
break;
|
|
case 38: /*Forward Check SS Indication -- imports operation from MAP-MobileServiceOperations*/
|
|
break;
|
|
case 59: /*Process Unstructured SS Request -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 60: /*Unstructured SS Request -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 61: /*Unstructured SS Notify -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 77: /*Erase CC Entry -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_EraseCC_EntryArg(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 112: /*lcs-AreaEventCancellation */
|
|
offset = dissect_lcs_AreaEventCancellation(pinfo, tree, tvb, offset);
|
|
break;
|
|
case 113: /*lcs-AreaEventReport */
|
|
offset = dissect_lcs_AreaEventReport(pinfo, tree, tvb, offset);
|
|
break;
|
|
case 114: /*LCS-AreaEventRequest */
|
|
offset = dissect_lcs_AreaEventRequest(pinfo, tree, tvb, offset);
|
|
break;
|
|
case 115: /*LCS MOLR */
|
|
offset = dissect_lcs_MOLR(pinfo, tree, tvb, offset);
|
|
break;
|
|
case 116: /*LCS Location Notification */
|
|
offset = dissect_lcs_LocationNotification(pinfo, tree, tvb,offset);
|
|
break;
|
|
case 117: /*Call Deflection */
|
|
offset = dissect_callDeflection(pinfo, tree, tvb,offset);
|
|
break;
|
|
case 118: /*User User Service */
|
|
offset = dissect_gsm_ss_UserUserServiceArg(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 119: /* Access Register CC Entry */
|
|
offset = dissect_gsm_ss_AccessRegisterCCEntryArg(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 120: /*Forward CUG Info */
|
|
offset = dissect_forwardCUG_Info(pinfo, tree, tvb,offset);
|
|
break;
|
|
case 121: /*Split MPTY */
|
|
break;
|
|
case 122: /*Retrieve MPTY */
|
|
break;
|
|
case 123: /*Hold MPTY */
|
|
break;
|
|
case 124: /*Build MPTY */
|
|
break;
|
|
case 125: /*Forward Charge Advice */
|
|
dissect_forwardChargeAdvice(pinfo, tree, tvb,offset);
|
|
break;
|
|
case 126: /*Explicit CT */
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case 2: /* returnResultLast */
|
|
switch (opcode){
|
|
case 10: /*registerSS*/
|
|
offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 11: /*eraseSS*/
|
|
offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 12: /*activateSS*/
|
|
offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 13: /*deactivateSS*/
|
|
offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 14: /*interrogateSS*/
|
|
offset=dissect_gsm_map_InterrogateSS_Res(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 16: /*Notify SS */
|
|
break;
|
|
case 17: /*Register Password -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_NewPassword(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_SS_Code);
|
|
break;
|
|
case 18: /*Get Password -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_CurrentPassword(FALSE, tvb, offset, pinfo, tree, hf_gsm_ss_currentPassword);
|
|
break;
|
|
case 19: /*Process Unstructured SS Data */
|
|
offset=dissect_gsm_ss_SS_UserData(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 38: /*Forward Check SS Indication -- imports operation from MAP-MobileServiceOperations*/
|
|
break;
|
|
case 59: /*Process Unstructured SS Request -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 60: /*Unstructured SS Request -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 61: /*Unstructured SS Notify -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 77: /*Erase CC Entry -- imports operations from MAP-SupplementaryServiceOperations*/
|
|
offset=dissect_gsm_map_EraseCC_EntryRes(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 112: /*lcs-AreaEventCancellation */
|
|
break;
|
|
case 113: /*lcs-AreaEventReport */
|
|
break;
|
|
case 114: /*LCS-AreaEventRequest */
|
|
break;
|
|
case 115: /*LCS MOLR */
|
|
offset=dissect_gsm_ss_LCS_MOLRRes(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 116: /*LCS Location Notification */
|
|
offset=dissect_gsm_ss_LocationNotificationRes(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 117: /*Call Deflection */
|
|
break;
|
|
case 118: /*User User Service */
|
|
break;
|
|
case 119: /* Access Register CC Entry */
|
|
offset=dissect_gsm_map_RegisterCC_EntryRes(FALSE, tvb, offset, pinfo, tree, -1);
|
|
break;
|
|
case 120: /*Forward CUG Info */
|
|
break;
|
|
case 121: /*Split MPTY */
|
|
break;
|
|
case 122: /*Retrieve MPTY */
|
|
break;
|
|
case 123: /*Hold MPTY */
|
|
break;
|
|
case 124: /*Build MPTY */
|
|
break;
|
|
case 125: /*Forward Charge Advice */
|
|
break;
|
|
case 126: /*Explicit CT */
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case 3: /* returnError */
|
|
break;
|
|
case 4: /* reject */
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return offset;
|
|
}
|
|
|
|
static void
|
|
dissect_gsm_ss(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
|
|
{
|
|
|
|
}
|
|
|
|
/*--- proto_reg_handoff_gsm_ss ---------------------------------------
|
|
This proto is called directly from packet-gsm_a and needs to know component type */
|
|
void proto_reg_handoff_gsm_ss(void) {
|
|
dissector_handle_t gsm_ss_handle;
|
|
|
|
gsm_ss_handle = create_dissector_handle(dissect_gsm_ss, proto_gsm_ss);
|
|
|
|
|
|
}
|
|
|
|
/*--- proto_register_gsm_ss -------------------------------------------*/
|
|
void proto_register_gsm_ss(void) {
|
|
|
|
/* List of fields */
|
|
static hf_register_info hf[] = {
|
|
{ &hf_gsm_ss_getPassword,
|
|
{ "Password", "gsm_ss.password",
|
|
FT_UINT8, BASE_DEC, VALS(gsm_map_GetPasswordArg_vals), 0,
|
|
"Password", HFILL }},
|
|
{ &hf_gsm_ss_currentPassword,
|
|
{ "currentPassword", "gsm_ss.currentPassword",
|
|
FT_STRING, BASE_NONE, NULL, 0,
|
|
"", HFILL }},
|
|
{ &hf_gsm_ss_SS_Code,
|
|
{ "ss-Code", "gsm_ss.ss_Code",
|
|
FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
|
|
"", HFILL }},
|
|
|
|
|
|
/*--- Included file: packet-gsm_ss-hfarr.c ---*/
|
|
#line 1 "packet-gsm_ss-hfarr.c"
|
|
{ &hf_gsm_ss_notifySS,
|
|
{ "notifySS", "gsm_ss.notifySS",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.NotifySS_Arg", HFILL }},
|
|
{ &hf_gsm_ss_processUnstructuredSS_Data,
|
|
{ "processUnstructuredSS-Data", "gsm_ss.processUnstructuredSS_Data",
|
|
FT_STRING, BASE_NONE, NULL, 0,
|
|
"gsm_ss.SS_UserData", HFILL }},
|
|
{ &hf_gsm_ss_forwardCUG_Info,
|
|
{ "forwardCUG-Info", "gsm_ss.forwardCUG_Info",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.ForwardCUG_InfoArg", HFILL }},
|
|
{ &hf_gsm_ss_accessRegisterCCEntry,
|
|
{ "accessRegisterCCEntry", "gsm_ss.accessRegisterCCEntry",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.AccessRegisterCCEntryArg", HFILL }},
|
|
{ &hf_gsm_ss_forwardChargeAdvice,
|
|
{ "forwardChargeAdvice", "gsm_ss.forwardChargeAdvice",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.ForwardChargeAdviceArg", HFILL }},
|
|
{ &hf_gsm_ss_callDeflection,
|
|
{ "callDeflection", "gsm_ss.callDeflection",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.CallDeflectionArg", HFILL }},
|
|
{ &hf_gsm_ss_lcs_LocationNotification,
|
|
{ "lcs-LocationNotification", "gsm_ss.lcs_LocationNotification",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.LocationNotificationArg", HFILL }},
|
|
{ &hf_gsm_ss_lcs_MOLR,
|
|
{ "lcs-MOLR", "gsm_ss.lcs_MOLR",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.LCS_MOLRArg", HFILL }},
|
|
{ &hf_gsm_ss_lcs_AreaEventRequest,
|
|
{ "lcs-AreaEventRequest", "gsm_ss.lcs_AreaEventRequest",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.LCS_AreaEventRequestArg", HFILL }},
|
|
{ &hf_gsm_ss_lcs_AreaEventReport,
|
|
{ "lcs-AreaEventReport", "gsm_ss.lcs_AreaEventReport",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.LCS_AreaEventReportArg", HFILL }},
|
|
{ &hf_gsm_ss_lcs_AreaEventCancellation,
|
|
{ "lcs-AreaEventCancellation", "gsm_ss.lcs_AreaEventCancellation",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.LCS_AreaEventCancellationArg", HFILL }},
|
|
{ &hf_gsm_ss_registerCC_EntryRes,
|
|
{ "registerCC-EntryRes", "gsm_ss.registerCC_EntryRes",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.RegisterCC_EntryRes", HFILL }},
|
|
{ &hf_gsm_ss_lcs_LocationNotification_res,
|
|
{ "lcs-LocationNotification-res", "gsm_ss.lcs_LocationNotification_res",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.LocationNotificationRes", HFILL }},
|
|
{ &hf_gsm_ss_lcs_MOLR_res,
|
|
{ "lcs-MOLR-res", "gsm_ss.lcs_MOLR_res",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.LCS_MOLRRes", HFILL }},
|
|
{ &hf_gsm_ss_ss_Code,
|
|
{ "ss-Code", "gsm_ss.ss_Code",
|
|
FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
|
|
"gsm_map.SS_Code", HFILL }},
|
|
{ &hf_gsm_ss_ss_Status,
|
|
{ "ss-Status", "gsm_ss.ss_Status",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_map.SS_Status", HFILL }},
|
|
{ &hf_gsm_ss_ss_Notification,
|
|
{ "ss-Notification", "gsm_ss.ss_Notification",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_ss.SS_Notification", HFILL }},
|
|
{ &hf_gsm_ss_callIsWaiting_Indicator,
|
|
{ "callIsWaiting-Indicator", "gsm_ss.callIsWaiting_Indicator",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.NULL", HFILL }},
|
|
{ &hf_gsm_ss_callOnHold_Indicator,
|
|
{ "callOnHold-Indicator", "gsm_ss.callOnHold_Indicator",
|
|
FT_UINT32, BASE_DEC, VALS(gsm_ss_CallOnHold_Indicator_vals), 0,
|
|
"gsm_ss.CallOnHold_Indicator", HFILL }},
|
|
{ &hf_gsm_ss_mpty_Indicator,
|
|
{ "mpty-Indicator", "gsm_ss.mpty_Indicator",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.NULL", HFILL }},
|
|
{ &hf_gsm_ss_cug_Index,
|
|
{ "cug-Index", "gsm_ss.cug_Index",
|
|
FT_UINT32, BASE_DEC, NULL, 0,
|
|
"gsm_map.CUG_Index", HFILL }},
|
|
{ &hf_gsm_ss_clirSuppressionRejected,
|
|
{ "clirSuppressionRejected", "gsm_ss.clirSuppressionRejected",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.NULL", HFILL }},
|
|
{ &hf_gsm_ss_ect_Indicator,
|
|
{ "ect-Indicator", "gsm_ss.ect_Indicator",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.ECT_Indicator", HFILL }},
|
|
{ &hf_gsm_ss_nameIndicator,
|
|
{ "nameIndicator", "gsm_ss.nameIndicator",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.NameIndicator", HFILL }},
|
|
{ &hf_gsm_ss_ccbs_Feature,
|
|
{ "ccbs-Feature", "gsm_ss.ccbs_Feature",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_map.CCBS_Feature", HFILL }},
|
|
{ &hf_gsm_ss_alertingPattern,
|
|
{ "alertingPattern", "gsm_ss.alertingPattern",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_map.AlertingPattern", HFILL }},
|
|
{ &hf_gsm_ss_multicall_Indicator,
|
|
{ "multicall-Indicator", "gsm_ss.multicall_Indicator",
|
|
FT_UINT32, BASE_DEC, VALS(gsm_ss_Multicall_Indicator_vals), 0,
|
|
"gsm_ss.Multicall_Indicator", HFILL }},
|
|
{ &hf_gsm_ss_chargingInformation,
|
|
{ "chargingInformation", "gsm_ss.chargingInformation",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.ChargingInformation", HFILL }},
|
|
{ &hf_gsm_ss_e1,
|
|
{ "e1", "gsm_ss.e1",
|
|
FT_UINT32, BASE_DEC, NULL, 0,
|
|
"gsm_ss.E1", HFILL }},
|
|
{ &hf_gsm_ss_e2,
|
|
{ "e2", "gsm_ss.e2",
|
|
FT_UINT32, BASE_DEC, NULL, 0,
|
|
"gsm_ss.E2", HFILL }},
|
|
{ &hf_gsm_ss_e3,
|
|
{ "e3", "gsm_ss.e3",
|
|
FT_UINT32, BASE_DEC, NULL, 0,
|
|
"gsm_ss.E3", HFILL }},
|
|
{ &hf_gsm_ss_e4,
|
|
{ "e4", "gsm_ss.e4",
|
|
FT_UINT32, BASE_DEC, NULL, 0,
|
|
"gsm_ss.E4", HFILL }},
|
|
{ &hf_gsm_ss_e5,
|
|
{ "e5", "gsm_ss.e5",
|
|
FT_UINT32, BASE_DEC, NULL, 0,
|
|
"gsm_ss.E5", HFILL }},
|
|
{ &hf_gsm_ss_e6,
|
|
{ "e6", "gsm_ss.e6",
|
|
FT_UINT32, BASE_DEC, NULL, 0,
|
|
"gsm_ss.E6", HFILL }},
|
|
{ &hf_gsm_ss_e7,
|
|
{ "e7", "gsm_ss.e7",
|
|
FT_UINT32, BASE_DEC, NULL, 0,
|
|
"gsm_ss.E7", HFILL }},
|
|
{ &hf_gsm_ss_suppressPrefCUG,
|
|
{ "suppressPrefCUG", "gsm_ss.suppressPrefCUG",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.NULL", HFILL }},
|
|
{ &hf_gsm_ss_suppressOA,
|
|
{ "suppressOA", "gsm_ss.suppressOA",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.NULL", HFILL }},
|
|
{ &hf_gsm_ss_ect_CallState,
|
|
{ "ect-CallState", "gsm_ss.ect_CallState",
|
|
FT_UINT32, BASE_DEC, VALS(gsm_ss_ECT_CallState_vals), 0,
|
|
"gsm_ss.ECT_CallState", HFILL }},
|
|
{ &hf_gsm_ss_rdn,
|
|
{ "rdn", "gsm_ss.rdn",
|
|
FT_UINT32, BASE_DEC, VALS(gsm_ss_RDN_vals), 0,
|
|
"gsm_ss.RDN", HFILL }},
|
|
{ &hf_gsm_ss_callingName,
|
|
{ "callingName", "gsm_ss.callingName",
|
|
FT_UINT32, BASE_DEC, VALS(gsm_ss_Name_vals), 0,
|
|
"gsm_ss.Name", HFILL }},
|
|
{ &hf_gsm_ss_namePresentationAllowed,
|
|
{ "namePresentationAllowed", "gsm_ss.namePresentationAllowed",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.NameSet", HFILL }},
|
|
{ &hf_gsm_ss_presentationRestricted,
|
|
{ "presentationRestricted", "gsm_ss.presentationRestricted",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.NULL", HFILL }},
|
|
{ &hf_gsm_ss_nameUnavailable,
|
|
{ "nameUnavailable", "gsm_ss.nameUnavailable",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.NULL", HFILL }},
|
|
{ &hf_gsm_ss_namePresentationRestricted,
|
|
{ "namePresentationRestricted", "gsm_ss.namePresentationRestricted",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.NameSet", HFILL }},
|
|
{ &hf_gsm_ss_dataCodingScheme,
|
|
{ "dataCodingScheme", "gsm_ss.dataCodingScheme",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_map.USSD_DataCodingScheme", HFILL }},
|
|
{ &hf_gsm_ss_lengthInCharacters,
|
|
{ "lengthInCharacters", "gsm_ss.lengthInCharacters",
|
|
FT_INT32, BASE_DEC, NULL, 0,
|
|
"gsm_ss.INTEGER", HFILL }},
|
|
{ &hf_gsm_ss_nameString,
|
|
{ "nameString", "gsm_ss.nameString",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_map.USSD_String", HFILL }},
|
|
{ &hf_gsm_ss_presentationAllowedAddress,
|
|
{ "presentationAllowedAddress", "gsm_ss.presentationAllowedAddress",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.RemotePartyNumber", HFILL }},
|
|
{ &hf_gsm_ss_numberNotAvailableDueToInterworking,
|
|
{ "numberNotAvailableDueToInterworking", "gsm_ss.numberNotAvailableDueToInterworking",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.NULL", HFILL }},
|
|
{ &hf_gsm_ss_presentationRestrictedAddress,
|
|
{ "presentationRestrictedAddress", "gsm_ss.presentationRestrictedAddress",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.RemotePartyNumber", HFILL }},
|
|
{ &hf_gsm_ss_partyNumber,
|
|
{ "partyNumber", "gsm_ss.partyNumber",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_map.ISDN_AddressString", HFILL }},
|
|
{ &hf_gsm_ss_partyNumberSubaddress,
|
|
{ "partyNumberSubaddress", "gsm_ss.partyNumberSubaddress",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_map.ISDN_SubaddressString", HFILL }},
|
|
{ &hf_gsm_ss_ccbs_Feature1,
|
|
{ "ccbs-Feature", "gsm_ss.ccbs_Feature",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.T_ccbs_Feature", HFILL }},
|
|
{ &hf_gsm_ss_ccbs_Index,
|
|
{ "ccbs-Index", "gsm_ss.ccbs_Index",
|
|
FT_UINT32, BASE_DEC, NULL, 0,
|
|
"gsm_ss.INTEGER_1_5", HFILL }},
|
|
{ &hf_gsm_ss_b_subscriberNumber,
|
|
{ "b-subscriberNumber", "gsm_ss.b_subscriberNumber",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_ss.T_b_subscriberNumber", HFILL }},
|
|
{ &hf_gsm_ss_b_subscriberSubaddress,
|
|
{ "b-subscriberSubaddress", "gsm_ss.b_subscriberSubaddress",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_ss.OCTET_STRING_SIZE_1_21", HFILL }},
|
|
{ &hf_gsm_ss_basicServiceGroup,
|
|
{ "basicServiceGroup", "gsm_ss.basicServiceGroup",
|
|
FT_UINT32, BASE_DEC, VALS(gsm_ss_T_basicServiceGroup_vals), 0,
|
|
"gsm_ss.T_basicServiceGroup", HFILL }},
|
|
{ &hf_gsm_ss_bearerService,
|
|
{ "bearerService", "gsm_ss.bearerService",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_ss.OCTET_STRING_SIZE_1", HFILL }},
|
|
{ &hf_gsm_ss_teleservice,
|
|
{ "teleservice", "gsm_ss.teleservice",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_ss.OCTET_STRING_SIZE_1", HFILL }},
|
|
{ &hf_gsm_ss_deflectedToNumber,
|
|
{ "deflectedToNumber", "gsm_ss.deflectedToNumber",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_map.AddressString", HFILL }},
|
|
{ &hf_gsm_ss_deflectedToSubaddress,
|
|
{ "deflectedToSubaddress", "gsm_ss.deflectedToSubaddress",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_map.ISDN_SubaddressString", HFILL }},
|
|
{ &hf_gsm_ss_uUS_Service,
|
|
{ "uUS-Service", "gsm_ss.uUS_Service",
|
|
FT_UINT32, BASE_DEC, VALS(gsm_ss_UUS_Service_vals), 0,
|
|
"gsm_ss.UUS_Service", HFILL }},
|
|
{ &hf_gsm_ss_uUS_Required,
|
|
{ "uUS-Required", "gsm_ss.uUS_Required",
|
|
FT_BOOLEAN, 8, NULL, 0,
|
|
"gsm_ss.BOOLEAN", HFILL }},
|
|
{ &hf_gsm_ss_notificationType,
|
|
{ "notificationType", "gsm_ss.notificationType",
|
|
FT_UINT32, BASE_DEC, VALS(gsm_map_NotificationToMSUser_vals), 0,
|
|
"gsm_map.NotificationToMSUser", HFILL }},
|
|
{ &hf_gsm_ss_locationType,
|
|
{ "locationType", "gsm_ss.locationType",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_map.LocationType", HFILL }},
|
|
{ &hf_gsm_ss_lcsClientExternalID,
|
|
{ "lcsClientExternalID", "gsm_ss.lcsClientExternalID",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_map.LCSClientExternalID", HFILL }},
|
|
{ &hf_gsm_ss_lcsClientName,
|
|
{ "lcsClientName", "gsm_ss.lcsClientName",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_map.LCSClientName", HFILL }},
|
|
{ &hf_gsm_ss_lcsRequestorID,
|
|
{ "lcsRequestorID", "gsm_ss.lcsRequestorID",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_map.LCSRequestorID", HFILL }},
|
|
{ &hf_gsm_ss_lcsCodeword,
|
|
{ "lcsCodeword", "gsm_ss.lcsCodeword",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_map.LCSCodeword", HFILL }},
|
|
{ &hf_gsm_ss_lcsServiceTypeID,
|
|
{ "lcsServiceTypeID", "gsm_ss.lcsServiceTypeID",
|
|
FT_UINT32, BASE_DEC, NULL, 0,
|
|
"gsm_map.LCSServiceTypeID", HFILL }},
|
|
{ &hf_gsm_ss_verificationResponse,
|
|
{ "verificationResponse", "gsm_ss.verificationResponse",
|
|
FT_UINT32, BASE_DEC, VALS(gsm_ss_VerificationResponse_vals), 0,
|
|
"gsm_ss.VerificationResponse", HFILL }},
|
|
{ &hf_gsm_ss_molr_Type,
|
|
{ "molr-Type", "gsm_ss.molr_Type",
|
|
FT_UINT32, BASE_DEC, VALS(gsm_ss_MOLR_Type_vals), 0,
|
|
"gsm_ss.MOLR_Type", HFILL }},
|
|
{ &hf_gsm_ss_locationMethod,
|
|
{ "locationMethod", "gsm_ss.locationMethod",
|
|
FT_UINT32, BASE_DEC, VALS(gsm_ss_LocationMethod_vals), 0,
|
|
"gsm_ss.LocationMethod", HFILL }},
|
|
{ &hf_gsm_ss_lcs_QoS,
|
|
{ "lcs-QoS", "gsm_ss.lcs_QoS",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_map.LCS_QoS", HFILL }},
|
|
{ &hf_gsm_ss_mlc_Number,
|
|
{ "mlc-Number", "gsm_ss.mlc_Number",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_map.ISDN_AddressString", HFILL }},
|
|
{ &hf_gsm_ss_gpsAssistanceData,
|
|
{ "gpsAssistanceData", "gsm_ss.gpsAssistanceData",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_ss.GPSAssistanceData", HFILL }},
|
|
{ &hf_gsm_ss_supportedGADShapes,
|
|
{ "supportedGADShapes", "gsm_ss.supportedGADShapes",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_map.SupportedGADShapes", HFILL }},
|
|
{ &hf_gsm_ss_ageOfLocationInfo,
|
|
{ "ageOfLocationInfo", "gsm_ss.ageOfLocationInfo",
|
|
FT_UINT32, BASE_DEC, NULL, 0,
|
|
"gsm_map.AgeOfLocationInformation", HFILL }},
|
|
{ &hf_gsm_ss_pseudonymIndicator,
|
|
{ "pseudonymIndicator", "gsm_ss.pseudonymIndicator",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_ss.NULL", HFILL }},
|
|
{ &hf_gsm_ss_locationEstimate,
|
|
{ "locationEstimate", "gsm_ss.locationEstimate",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_map.Ext_GeographicalInformation", HFILL }},
|
|
{ &hf_gsm_ss_decipheringKeys,
|
|
{ "decipheringKeys", "gsm_ss.decipheringKeys",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_ss.DecipheringKeys", HFILL }},
|
|
{ &hf_gsm_ss_add_LocationEstimate,
|
|
{ "add-LocationEstimate", "gsm_ss.add_LocationEstimate",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_map.Add_GeographicalInformation", HFILL }},
|
|
{ &hf_gsm_ss_referenceNumber,
|
|
{ "referenceNumber", "gsm_ss.referenceNumber",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_map.LCS_ReferenceNumber", HFILL }},
|
|
{ &hf_gsm_ss_h_gmlc_address,
|
|
{ "h-gmlc-address", "gsm_ss.h_gmlc_address",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_map.GSN_Address", HFILL }},
|
|
{ &hf_gsm_ss_deferredLocationEventType,
|
|
{ "deferredLocationEventType", "gsm_ss.deferredLocationEventType",
|
|
FT_BYTES, BASE_HEX, NULL, 0,
|
|
"gsm_map.DeferredLocationEventType", HFILL }},
|
|
{ &hf_gsm_ss_areaEventInfo,
|
|
{ "areaEventInfo", "gsm_ss.areaEventInfo",
|
|
FT_NONE, BASE_NONE, NULL, 0,
|
|
"gsm_map.AreaEventInfo", HFILL }},
|
|
|
|
/*--- End of included file: packet-gsm_ss-hfarr.c ---*/
|
|
#line 387 "packet-gsm_ss-template.c"
|
|
};
|
|
|
|
/* List of subtrees */
|
|
static gint *ett[] = {
|
|
|
|
/*--- Included file: packet-gsm_ss-ettarr.c ---*/
|
|
#line 1 "packet-gsm_ss-ettarr.c"
|
|
&ett_gsm_ss_DummySS_operationsArg,
|
|
&ett_gsm_ss_DummySS_operationsRes,
|
|
&ett_gsm_ss_NotifySS_Arg,
|
|
&ett_gsm_ss_ForwardChargeAdviceArg,
|
|
&ett_gsm_ss_ChargingInformation,
|
|
&ett_gsm_ss_ForwardCUG_InfoArg,
|
|
&ett_gsm_ss_ECT_Indicator,
|
|
&ett_gsm_ss_NameIndicator,
|
|
&ett_gsm_ss_Name,
|
|
&ett_gsm_ss_NameSet,
|
|
&ett_gsm_ss_RDN,
|
|
&ett_gsm_ss_RemotePartyNumber,
|
|
&ett_gsm_ss_AccessRegisterCCEntryArg,
|
|
&ett_gsm_ss_RegisterCC_EntryRes,
|
|
&ett_gsm_ss_T_ccbs_Feature,
|
|
&ett_gsm_ss_T_basicServiceGroup,
|
|
&ett_gsm_ss_CallDeflectionArg,
|
|
&ett_gsm_ss_UserUserServiceArg,
|
|
&ett_gsm_ss_LocationNotificationArg,
|
|
&ett_gsm_ss_LocationNotificationRes,
|
|
&ett_gsm_ss_LCS_MOLRArg,
|
|
&ett_gsm_ss_LCS_MOLRRes,
|
|
&ett_gsm_ss_LCS_AreaEventRequestArg,
|
|
&ett_gsm_ss_LCS_AreaEventReportArg,
|
|
&ett_gsm_ss_LCS_AreaEventCancellationArg,
|
|
|
|
/*--- End of included file: packet-gsm_ss-ettarr.c ---*/
|
|
#line 392 "packet-gsm_ss-template.c"
|
|
};
|
|
|
|
/* Register protocol */
|
|
proto_gsm_ss = proto_register_protocol(PNAME, PSNAME, PFNAME);
|
|
/*XXX register_dissector("gsm_ss", dissect_gsm_ss, proto_gsm_ss);*/
|
|
/* Register fields and subtrees */
|
|
proto_register_field_array(proto_gsm_ss, hf, array_length(hf));
|
|
proto_register_subtree_array(ett, array_length(ett));
|
|
|
|
|
|
}
|
|
|
|
|