summaryrefslogtreecommitdiff
path: root/asn1
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2005-08-03 20:49:52 +0000
committerAnders Broman <anders.broman@ericsson.com>2005-08-03 20:49:52 +0000
commit92588a098fa337aed646486da94c10136dd88380 (patch)
treeb82c8c800e1a4c948ba9718e5c2b67ca88ae1319 /asn1
parent32f826a7cea1a6b72d1eea03866274fc39b59580 (diff)
downloadwireshark-92588a098fa337aed646486da94c10136dd88380.tar.gz
First checkin of asn2eth generated gsm ss dissector - work in progress not ready to replace the existing
dissector yet. svn path=/trunk/; revision=15202
Diffstat (limited to 'asn1')
-rw-r--r--asn1/gsm_ss/Makefile.nmake41
-rw-r--r--asn1/gsm_ss/SS-Operations.asn543
-rw-r--r--asn1/gsm_ss/gsm_ss.cnf50
-rw-r--r--asn1/gsm_ss/packet-gsm_ss-template.c410
-rw-r--r--asn1/gsm_ss/packet-gsm_ss-template.h42
5 files changed, 1086 insertions, 0 deletions
diff --git a/asn1/gsm_ss/Makefile.nmake b/asn1/gsm_ss/Makefile.nmake
new file mode 100644
index 0000000000..265fe10bc1
--- /dev/null
+++ b/asn1/gsm_ss/Makefile.nmake
@@ -0,0 +1,41 @@
+## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
+#
+# $Id$
+
+include ../../config.nmake
+
+UNIX2DOS=$(PERL) ../../tools/unix2dos.pl
+
+PROTOCOL_NAME=gsm_ss
+DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).h
+
+all: generate_dissector
+
+generate_dissector: $(DISSECTOR_FILES)
+
+$(DISSECTOR_FILES): ../../tools/asn2eth.py SS-Operations.asn packet-$(PROTOCOL_NAME)-template.c packet-$(PROTOCOL_NAME)-template.h gsm_ss.cnf
+!IFDEF PYTHON
+ $(PYTHON) ../../tools/asn2eth.py -X -b -e -p $(PROTOCOL_NAME) -c gsm_ss.cnf -s packet-$(PROTOCOL_NAME)-template SS-Operations.asn
+!ELSE
+ @echo Error: You need Python to use asn2eth.py
+ @exit 1
+!ENDIF
+
+clean:
+ rm -f parsetab.py $(DISSECTOR_FILES)
+
+# Fix EOL in generated dissectors. Cygwin's python generates files with
+# mixed EOL styles, which can't be commited to the SVN repository.
+# Stuff included from template and "cnf" files has "\r\n" on windows, while
+# the generated stuff has "\n".
+
+fix_eol: generate_dissector
+ move packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).c.tmp
+ move packet-$(PROTOCOL_NAME).h packet-$(PROTOCOL_NAME).h.tmp
+ $(UNIX2DOS) < packet-$(PROTOCOL_NAME).c.tmp > packet-$(PROTOCOL_NAME).c
+ $(UNIX2DOS) < packet-$(PROTOCOL_NAME).h.tmp > packet-$(PROTOCOL_NAME).h
+ del /f packet-$(PROTOCOL_NAME).c.tmp packet-$(PROTOCOL_NAME).h.tmp
+
+copy_files: generate_dissector fix_eol
+ xcopy packet-$(PROTOCOL_NAME).c ..\..\epan\dissectors /d /y
+ xcopy packet-$(PROTOCOL_NAME).h ..\..\epan\dissectors /d /y
diff --git a/asn1/gsm_ss/SS-Operations.asn b/asn1/gsm_ss/SS-Operations.asn
new file mode 100644
index 0000000000..883aadb75d
--- /dev/null
+++ b/asn1/gsm_ss/SS-Operations.asn
@@ -0,0 +1,543 @@
+-- Expanded ASN1 Module 'SS-Operations'
+--SIEMENS ASN.1 Compiler R5.70 (Production_5.70)
+-- Date: 2004-03-19 Time: 12:34:55
+
+SS-Operations{ 0 identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3) ss-Operations (0) version9 (9) }
+
+DEFINITIONS
+
+::=
+
+BEGIN
+
+EXPORTS
+ processUnstructuredSS-Data,
+ notifySS,
+ forwardChargeAdvice,
+ forwardCUG-Info,
+ buildMPTY,
+ holdMPTY,
+ retrieveMPTY,
+ splitMPTY,
+ explicitCT,
+ accessRegisterCCEntry,
+ callDeflection,
+ userUserService,
+ lcs-LocationNotification,
+ lcs-MOLR,
+ lcs-AreaEventRequest,
+ lcs-AreaEventReport,
+ lcs-AreaEventCancellation;
+
+IMPORTS
+
+ SS-Code,
+ SS-Status,
+ CUG-Index,
+ CCBS-Feature,
+ AlertingPattern,
+ USSD-DataCodingScheme,
+ USSD-String,
+ ISDN-AddressString,
+ ISDN-SubaddressString,
+ AddressString,
+ NotificationToMSUser,
+ LocationType,
+ LCSClientExternalID,
+ LCSClientName,
+ LCSRequestorID,
+ LCSCodeword,
+ LCSServiceTypeID,
+ LCS-QoS,
+ SupportedGADShapes,
+ AgeOfLocationInformation,
+ Ext-GeographicalInformation,
+ Add-GeographicalInformation,
+ LCS-ReferenceNumber,
+ GSN-Address,
+ DeferredLocationEventType,
+ AreaEventInfo
+
+ FROM MAP-Protocol{ 0 identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) map-Protocol (4) version5 (5) }
+ ;
+
+
+
+-- processUnstructuredSS-Data OPERATION ::= {
+-- ARGUMENT IA5String ( SIZE( 1 .. 200 ) )
+-- RESULT IA5String ( SIZE( 1 .. 200 ) )
+-- ERRORS {
+-- systemFailure |
+-- unexpectedDataValue }
+-- CODE local : 19
+-- }
+SS-UserData ::= IA5String (SIZE (1.. 200))
+
+-- notifySS OPERATION ::= {
+-- ARGUMENT SEQUENCE {
+NotifySS-Arg ::= SEQUENCE{
+ ss-Code [1] SS-Code OPTIONAL,
+ ss-Status [4] SS-Status OPTIONAL,
+ ss-Notification [5] SS-Notification OPTIONAL,
+ callIsWaiting-Indicator [14] NULL OPTIONAL,
+ callOnHold-Indicator [15] CallOnHold-Indicator OPTIONAL,
+ mpty-Indicator [16] NULL OPTIONAL,
+ cug-Index [17] CUG-Index OPTIONAL,
+ clirSuppressionRejected [18] NULL OPTIONAL,
+ ... ,
+ ect-Indicator [19] ECT-Indicator OPTIONAL,
+ nameIndicator [20] NameIndicator OPTIONAL,
+ ccbs-Feature [21] CCBS-Feature OPTIONAL,
+ alertingPattern [22] AlertingPattern OPTIONAL,
+ multicall-Indicator [23] Multicall-Indicator OPTIONAL}
+-- CODE local : 16
+-- }
+-- The nameIndicator is defined because of CNAP.
+
+Multicall-Indicator ::= ENUMERATED {
+ nbr-SNexceeded (0),
+ nbr-Userexceeded (1)}
+
+--forwardChargeAdvice OPERATION ::= {
+-- ARGUMENT SEQUENCE {
+ForwardChargeAdviceArg ::= SEQUENCE{
+ ss-Code [0] SS-Code,
+ chargingInformation [1] ChargingInformation,
+ ...}
+
+-- RETURN RESULT TRUE
+-- CODE local : 125
+-- }
+
+SS-Notification ::= OCTET STRING (SIZE (1))
+-- Bit 8 7 6 5 4 00000 (Unused)
+-- Bit 3 Call is forwarded indication to A-subscriber
+-- (calling subscriber)
+-- 0 No information content
+-- 1 Outgoing call has been forwarded to C
+-- Bit 2 Call is forwarded indication to B-subscriber
+-- (forwarding subscriber)
+-- 0 No information content
+-- 1 Incoming call has been forwarded to C
+-- Bit 1 Call is forwarded indication to C-subscriber
+-- (forwarded-to subscriber)
+-- 0 No information content
+-- 1 Incoming call is a forwarded call
+
+ChargingInformation ::= SEQUENCE{
+ e1 [1] E1 OPTIONAL,
+ e2 [2] E2 OPTIONAL,
+ e3 [3] E3 OPTIONAL,
+ e4 [4] E4 OPTIONAL,
+ e5 [5] E5 OPTIONAL,
+ e6 [6] E6 OPTIONAL,
+ e7 [7] E7 OPTIONAL,
+...}
+
+E1 ::= INTEGER (0..max10TimesUnitsPerTime)
+
+max10TimesUnitsPerTime INTEGER ::= 8191
+
+E2 ::= INTEGER (0..max10TimesTimeInterval)
+
+max10TimesTimeInterval INTEGER ::= 8191
+
+E3 ::= INTEGER (0..max100TimesScalingFactor)
+
+max100TimesScalingFactor INTEGER ::= 8191
+
+E4 ::= INTEGER (0..max10TimesIncrement)
+
+max10TimesIncrement INTEGER ::= 8191
+
+E5 ::= INTEGER (0..max10TimesIncrementPerDataInterval)
+
+max10TimesIncrementPerDataInterval INTEGER ::= 8191
+
+E6 ::= INTEGER (0..maxNumberOfSegmentsPerDataInterval)
+
+maxNumberOfSegmentsPerDataInterval INTEGER ::= 8191
+
+E7 ::= INTEGER (0..max10TimesInitialTime)
+
+max10TimesInitialTime INTEGER ::= 8191
+
+CallOnHold-Indicator ::= ENUMERATED {
+ callRetrieved (0),
+ callOnHold (1)}
+
+-- forwardCUG-Info OPERATION ::= {
+-- ARGUMENT SEQUENCE {
+ForwardCUG-InfoArg ::= SEQUENCE {
+ cug-Index [0] CUG-Index OPTIONAL,
+ suppressPrefCUG [1] NULL OPTIONAL,
+ suppressOA [2] NULL OPTIONAL,
+...}
+-- CODE local : 120
+-- }
+
+
+ECT-Indicator ::= SEQUENCE {
+ ect-CallState [0] ECT-CallState,
+ rdn [1] RDN OPTIONAL,
+ ...}
+
+ECT-CallState ::= ENUMERATED {
+ alerting (0),
+ active (1)}
+
+NameIndicator ::= SEQUENCE {
+ callingName [0] Name OPTIONAL,
+...}
+
+Name ::= CHOICE {
+ namePresentationAllowed [0] NameSet,
+ presentationRestricted [1] NULL,
+ nameUnavailable [2] NULL,
+ namePresentationRestricted [3] NameSet}
+
+NameSet ::= SEQUENCE {
+ dataCodingScheme [0] USSD-DataCodingScheme,
+ lengthInCharacters [1] INTEGER,
+ nameString [2] USSD-String,
+...}
+
+-- NameIndicator, Name and NameSet are defined because of CNAP.
+-- The USSD-DataCodingScheme shall indicate use of the default alphabet through the
+-- following encoding:
+-- bit 7 6 5 4 3 2 1 0
+-- | 0 0 0 0 | 1 1 1 1|
+
+RDN ::= CHOICE {
+ presentationAllowedAddress [0] RemotePartyNumber,
+ presentationRestricted [1] NULL,
+ numberNotAvailableDueToInterworking [2] NULL,
+ presentationRestrictedAddress [3] RemotePartyNumber}
+
+RemotePartyNumber ::= SEQUENCE {
+ partyNumber [0] ISDN-AddressString,
+ partyNumberSubaddress [1] ISDN-SubaddressString OPTIONAL,
+...}
+
+-- accessRegisterCCEntry OPERATION ::= {
+-- ARGUMENT SEQUENCE {
+-- ... }
+
+AccessRegisterCCEntryArg ::= SEQUENCE {
+ ...}
+
+-- RegisterCC-EntryRes ::=
+-- RESULT SEQUENCE {
+-- ccbs-Feature [0] IMPLICIT SEQUENCE {
+-- ccbs-Index [0] IMPLICIT INTEGER ( 1 .. 5 ) OPTIONAL,
+-- b-subscriberNumber [1] IMPLICIT OCTET STRING ( SIZE( 1 .. 20 ) ) ( SIZE( 1 .. 9 ) ) OPTIONAL,
+-- b-subscriberSubaddress [2] IMPLICIT OCTET STRING ( SIZE( 1 .. 21 ) ) OPTIONAL,
+-- basicServiceGroup [3] CHOICE {
+-- bearerService [2] IMPLICIT OCTET STRING ( SIZE( 1 ) ),
+-- teleservice [3] IMPLICIT OCTET STRING ( SIZE( 1 ) )} OPTIONAL,
+-- ... } OPTIONAL,
+-- ... }
+-- ERRORS {
+-- systemFailure |
+-- dataMissing |
+-- unexpectedDataValue |
+-- callBarred |
+-- illegalSS-Operation |
+-- ss-ErrorStatus |
+-- ss-Incompatibility |
+-- shortTermDenial |
+-- longTermDenial |
+-- facilityNotSupported }
+-- CODE local : 119
+-- }
+
+-- callDeflection OPERATION ::= {
+-- ARGUMENT SEQUENCE {
+
+CallDeflectionArg ::= SEQUENCE {
+ deflectedToNumber [0] AddressString,
+ deflectedToSubaddress [1] ISDN-SubaddressString OPTIONAL,
+...}
+
+-- RETURN RESULT TRUE
+-- ERRORS {
+-- illegalSS-Operation |
+-- ss-ErrorStatus |
+-- ss-NotAvailable |
+-- ss-Incompatibility |
+-- facilityNotSupported |
+-- systemFailure |
+-- resourcesNotAvailable |
+-- forwardingViolation |
+-- callBarred |
+-- deflectionToServedSubscriber |
+-- invalidDeflectedToNumber |
+-- specialServiceCode |
+-- forwardingFailed }
+-- CODE local : 117
+-- }
+
+
+--userUserService OPERATION ::= {
+-- ARGUMENT SEQUENCE {
+
+UserUserServiceArg ::= SEQUENCE {
+ uUS-Service [0] UUS-Service,
+ uUS-Required [1] BOOLEAN,
+... }
+
+-- RETURN RESULT TRUE
+-- ERRORS {
+-- illegalSS-Operation |
+-- ss-ErrorStatus |
+-- ss-NotAvailable |
+-- ss-Incompatibility |
+-- facilityNotSupported |
+-- systemFailure |
+-- resourcesNotAvailable |
+-- rejectedByNetwork |
+-- rejectedByUser }
+-- CODE local : 118
+-- }
+
+
+UUS-Service ::= ENUMERATED {
+ uUS1 (1),
+ uUS2 (2),
+ uUS3 (3),
+... }
+
+-- exception handling:
+-- In case of UUS-Service with any other value, indicated as "UUS required",
+-- but not understood by the MS, the call will be cleared.
+
+-- lcs-LocationNotification OPERATION ::= {
+-- ARGUMENT SEQUENCE {
+LocationNotificationArg ::= SEQUENCE {
+ notificationType [0] NotificationToMSUser,
+ locationType [1] LocationType,
+ lcsClientExternalID [2] LCSClientExternalID OPTIONAL,
+ lcsClientName [3] LCSClientName OPTIONAL,
+ ... ,
+ lcsRequestorID [4] LCSRequestorID OPTIONAL,
+ lcsCodeword [5] LCSCodeword OPTIONAL,
+ lcsServiceTypeID [6] LCSServiceTypeID OPTIONAL }
+
+-- exception handling:
+-- At reception of an unrecognised notificationType value the receiver shall reject the
+-- operation with a return error cause of unexpected data value.
+-- At reception of an unrecognised locationType value the receiver shall reject the
+-- operation with a return error cause of unexpected data value.
+
+-- RESULT SEQUENCE {
+LocationNotificationRes ::= SEQUENCE {
+ verificationResponse [0] VerificationResponse OPTIONAL,
+ ...}
+-- ERRORS {
+-- systemFailure |
+-- unexpectedDataValue }
+-- CODE local : 116
+-- }
+
+VerificationResponse::= ENUMERATED {
+ permissionDenied (0),
+ permissionGranted (1),
+... }
+-- exception handling:
+-- an unrecognized value shall be treated the same as value 0 (permissionDenied)
+
+
+-- lcs-MOLR OPERATION ::= {
+-- ARGUMENT SEQUENCE {
+-- RESULT SEQUENCE {
+
+LCS-MOLRArg ::= SEQUENCE {
+ molr-Type [0] MOLR-Type,
+ locationMethod [1] LocationMethod OPTIONAL,
+ lcs-QoS [2] LCS-QoS OPTIONAL,
+ lcsClientExternalID [3] LCSClientExternalID OPTIONAL,
+ mlc-Number [4] ISDN-AddressString OPTIONAL,
+ gpsAssistanceData [5] GPSAssistanceData OPTIONAL,
+ ...,
+ supportedGADShapes [6] SupportedGADShapes OPTIONAL,
+ lcsServiceTypeID [7] LCSServiceTypeID OPTIONAL,
+ ageOfLocationInfo [8] AgeOfLocationInformation OPTIONAL,
+ locationType [9] LocationType OPTIONAL,
+ pseudonymIndicator [10] NULL OPTIONAL }
+-- The parameter locationMethod shall be included if and only if the molr-Type is set to value
+-- deCipheringKeys or assistanceData.
+-- The parameter gpsAssistanceData shall be included if and only if the molr-Type is set to value
+-- assistanceData and locationMethod is set to value assistedGPS.
+
+MOLR-Type::= ENUMERATED {
+ locationEstimate (0),
+ assistanceData (1),
+ deCipheringKeys (2),
+... }
+-- exception handling:
+-- an unrecognized value shall be rejected by the receiver with a return error cause of
+-- unexpected data value.
+
+LocationMethod::= ENUMERATED {
+ msBasedEOTD (0),
+ msAssistedEOTD (1),
+ assistedGPS (2),
+ ...,
+ msBasedOTDOA (3)
+}
+-- exception handling:
+-- When this parameter is received with value msBasedEOTD or msAssistedEOTD and the MS
+-- is camped on an UMTS Service Area then the receiver shall reject it
+-- with a return error cause of unexpected data value.
+-- When this parameter is received with value msBasedOTDOA and the MS
+-- is camped on a GSM Cell then the receiver shall reject it with a return error cause of
+-- unexpected data value.
+-- an unrecognized value shall be rejected by the receiver with a return error cause of
+-- unexpected data value.
+
+GPSAssistanceData::= OCTET STRING (SIZE (1..38))
+
+-- Octets 1 to 38 are coded in the same way as the octets 3 to 7+2n of Requested GPS Data IE
+-- in 3GPP TS 49.031.
+
+LCS-MOLRRes::= SEQUENCE {
+ locationEstimate [0] Ext-GeographicalInformation OPTIONAL,
+ decipheringKeys [1] DecipheringKeys OPTIONAL,
+ ...,
+ add-LocationEstimate [2] Add-GeographicalInformation OPTIONAL}
+
+-- ERRORS {
+-- systemFailure |
+-- unexpectedDataValue |
+-- dataMissing |
+-- facilityNotSupported |
+-- ss-SubscriptionViolation |
+-- positionMethodFailure }
+-- CODE local : 115
+-- }
+
+-- Parameters locationEstimate or add-LocationEstimate (one but not both)
+-- shall be included if and only if the
+-- molr-Type in LocationRequestArg was set to value locationEstimate.
+-- Parameter add-LocationEstimate shall not be included if the supportedGADShapes
+-- parameter was not received in the LCS-MOLRArg.
+-- The locationEstimate and the add-locationEstimate parameters shall not be sent if
+-- the supportedGADShapes parameter has been received in LCS-MOLRArg
+-- and the shape encoded in locationEstimate or add-LocationEstimate is not marked
+-- as supported in supportedGADShapes. In such a case LCS-MOLRArg
+-- shall be rejected with error FacilityNotSupported with additional indication
+-- shapeOfLocationEstimateNotSupported.
+-- Parameter decipheringKeys shall be included if and only if the molr-Type
+-- in LocationRequestArg was set to value deCipheringKeys.
+
+DecipheringKeys::= OCTET STRING (SIZE (15))
+
+-- Octets in DecipheringKeys are coded in the same way as the octets 3 to 17 of Deciphering Key IE
+-- in 3GPP TS 49.031. I.e. these octets contain Current Deciphering Key, Next Deciphering Key and
+-- Ciphering Key Flag.
+
+-- lcs-AreaEventRequest OPERATION ::= {
+-- ARGUMENT SEQUENCE {
+
+LCS-AreaEventRequestArg ::= SEQUENCE {
+ referenceNumber [0] LCS-ReferenceNumber,
+ h-gmlc-address [1] GSN-Address,
+ deferredLocationEventType [3] DeferredLocationEventType,
+ areaEventInfo [4] AreaEventInfo,
+... }
+-- RETURN RESULT TRUE
+-- ERRORS {
+-- systemFailure |
+-- facilityNotSupported |
+-- unexpectedDataValue }
+-- CODE local : 114
+-- }
+
+-- the msAvailableValue in the DeferredLocationEventType is not applicable for this procedure
+
+-- lcs-AreaEventReport OPERATION ::= {
+-- ARGUMENT SEQUENCE {
+
+LCS-AreaEventReportArg ::= SEQUENCE {
+ referenceNumber [0] LCS-ReferenceNumber,
+ h-gmlc-address [1] GSN-Address,
+... }
+-- RETURN RESULT TRUE
+-- ERRORS {
+-- systemFailure |
+-- unexpectedDataValue |
+-- facilityNotSupported }
+-- CODE local : 113
+-- }
+
+-- lcs-AreaEventCancellation OPERATION ::= {
+-- ARGUMENT SEQUENCE {
+LCS-AreaEventCancellationArg ::= SEQUENCE {
+ referenceNumber [0] LCS-ReferenceNumber,
+ h-gmlc-address [1] GSN-Address,
+... }
+-- CODE local : 112
+-- }
+
+
+--buildMPTY OPERATION ::= {
+-- RETURN RESULT TRUE
+-- ERRORS {
+-- illegalSS-Operation |
+-- ss-ErrorStatus |
+-- ss-NotAvailable |
+-- ss-Incompatibility |
+-- systemFailure |
+-- resourcesNotAvailable |
+-- maxNumberOfMPTY-ParticipantsExceeded }
+-- CODE local : 124
+-- }
+
+--holdMPTY OPERATION ::= {
+-- RETURN RESULT TRUE
+-- ERRORS {
+-- illegalSS-Operation |
+-- ss-ErrorStatus |
+-- ss-Incompatibility |
+-- facilityNotSupported |
+-- systemFailure }
+-- CODE local : 123
+-- }
+
+--retrieveMPTY OPERATION ::= {
+-- RETURN RESULT TRUE
+-- ERRORS {
+-- illegalSS-Operation |
+-- ss-ErrorStatus |
+-- ss-Incompatibility |
+-- facilityNotSupported |
+-- systemFailure }
+-- CODE local : 122
+-- }
+
+--splitMPTY OPERATION ::= {
+-- RETURN RESULT TRUE
+-- ERRORS {
+-- illegalSS-Operation |
+-- ss-ErrorStatus |
+-- ss-Incompatibility |
+-- facilityNotSupported |
+-- systemFailure }
+-- CODE local : 121
+-- }
+
+--explicitCT OPERATION ::= {
+-- RETURN RESULT TRUE
+-- ERRORS {
+-- illegalSS-Operation |
+-- ss-ErrorStatus |
+-- ss-NotAvailable |
+-- ss-Incompatibility |
+-- facilityNotSupported |
+-- systemFailure |
+-- resourcesNotAvailable |
+-- callBarred }
+-- CODE local : 126
+-- }
+
+END
diff --git a/asn1/gsm_ss/gsm_ss.cnf b/asn1/gsm_ss/gsm_ss.cnf
new file mode 100644
index 0000000000..0770d11831
--- /dev/null
+++ b/asn1/gsm_ss/gsm_ss.cnf
@@ -0,0 +1,50 @@
+# gsm_ss.cnf
+# GSM SS conformation file
+
+# $Id$
+
+#.MODULE_IMPORT
+
+MAP-Protocol gsm_map
+
+#.INCLUDE ../gsmmap/gsm_map-exp.cnf
+
+#.EXPORTS
+
+#.PDU
+
+#.NO_EMIT
+
+#.TYPE_RENAME
+
+#.FIELD_RENAME
+
+#----------------------------------------------------------------------------------------
+#.FN_BODY DestinationReference
+
+ tvbuff_t *parameter_tvb;
+ char *digit_str;
+
+ offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ &parameter_tvb);
+ digit_str = unpack_digits(parameter_tvb, 1);
+
+ proto_tree_add_string(tree, hf_MAP_DialoguePDU_destref_digits, parameter_tvb, 1, -1, digit_str);
+ g_free(digit_str);
+
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY OriginationReference
+ tvbuff_t *parameter_tvb;
+ char *digit_str;
+
+ offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ &parameter_tvb);
+ digit_str = unpack_digits(parameter_tvb, 1);
+
+ proto_tree_add_string(tree, hf_MAP_DialoguePDU_origref_digits, parameter_tvb, 1, -1, digit_str);
+ g_free(digit_str);
+
+#.END
+#----------------------------------------------------------------------------------------
+#.END
diff --git a/asn1/gsm_ss/packet-gsm_ss-template.c b/asn1/gsm_ss/packet-gsm_ss-template.c
new file mode 100644
index 0000000000..f9489edd5a
--- /dev/null
+++ b/asn1/gsm_ss/packet-gsm_ss-template.c
@@ -0,0 +1,410 @@
+/* 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$
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * 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;
+#include "packet-gsm_ss-hf.c"
+
+/* Initialize the subtree pointers */
+#include "packet-gsm_ss-ett.c"
+
+static dissector_table_t sms_dissector_table; /* SMS TPDU */
+
+/* Global variables */
+static proto_tree *top_tree;
+
+
+
+#include "packet-gsm_ss-fn.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 */
+ dissect_gsm_ss_NotifySS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
+ 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 */
+ 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_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 */
+ dissect_gsm_ss_LCS_AreaEventCancellationArg(FALSE, tvb, offset, pinfo, tree, -1);
+ break;
+ case 113: /*lcs-AreaEventReport */
+ dissect_gsm_ss_LCS_AreaEventReportArg(FALSE, tvb, offset, pinfo, tree, -1);
+ break;
+ case 114: /*LCS-AreaEventRequest */
+ dissect_gsm_ss_LCS_AreaEventRequestArg(FALSE, tvb, offset, pinfo, tree, -1);
+ break;
+ case 115: /*LCS MOLR */
+ dissect_gsm_ss_LCS_MOLRArg(FALSE, tvb, offset, pinfo, tree, -1);
+ break;
+ case 116: /*LCS Location Notification */
+ dissect_gsm_ss_LocationNotificationArg(FALSE, tvb, offset, pinfo, tree, -1);
+ break;
+ case 117: /*Call Deflection */
+ dissect_gsm_ss_CallDeflectionArg(FALSE, tvb, offset, pinfo, tree, -1);
+ break;
+ case 118: /*User User Service */
+ dissect_gsm_ss_UserUserServiceArg(FALSE, tvb, offset, pinfo, tree, -1);
+ break;
+ case 119: /* Access Register CC Entry */
+ dissect_gsm_ss_AccessRegisterCCEntryArg(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 */
+ dissect_gsm_ss_ForwardChargeAdviceArg(FALSE, tvb, offset, pinfo, tree, -1);
+ 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, packet_info *pinfo, proto_tree *tree)
+{
+
+}
+
+/*--- 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 }},
+
+#include "packet-gsm_ss-hfarr.c"
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+#include "packet-gsm_ss-ettarr.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));
+
+
+}
+
+
diff --git a/asn1/gsm_ss/packet-gsm_ss-template.h b/asn1/gsm_ss/packet-gsm_ss-template.h
new file mode 100644
index 0000000000..558a468a2d
--- /dev/null
+++ b/asn1/gsm_ss/packet-gsm_ss-template.h
@@ -0,0 +1,42 @@
+/* packet-gsm_map-template.h
+ * 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$ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * 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.
+ */
+
+#ifndef PACKET_GSM_SS_H
+#define PACKET_GSM_SS_H
+int gsm_ss_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, guint32 opcode, gint comp_type_tag);
+
+extern const value_string gsm_ss_opr_code_strings[];
+extern const value_string gsm_ss_err_code_strings[];
+/* #include "packet-gsm_map-exp.h"*/
+
+#endif /* PACKET_GSM_SS_H */