aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2005-08-22 16:19:31 +0000
committerAnders Broman <anders.broman@ericsson.com>2005-08-22 16:19:31 +0000
commit1f0b3d1d384fae374cb896b9b2334221ab28e50c (patch)
tree41b2fba5498c2ae067a092da28e5641e2069682b /asn1
parent86ea8b88f3b721e1001f898ed05d8ba5f1ecf20e (diff)
Fix decoding of sendIdentificationArg/Res and ProvideSubscriberLocation
svn path=/trunk/; revision=15510
Diffstat (limited to 'asn1')
-rw-r--r--asn1/gsmmap/GSMMAP.asn157
-rw-r--r--asn1/gsmmap/gsm_map-exp.cnf4
-rw-r--r--asn1/gsmmap/gsmmap.cnf2
-rw-r--r--asn1/gsmmap/packet-gsm_map-template.c19
4 files changed, 18 insertions, 164 deletions
diff --git a/asn1/gsmmap/GSMMAP.asn b/asn1/gsmmap/GSMMAP.asn
index 70a60c63e0..47a70c87ec 100644
--- a/asn1/gsmmap/GSMMAP.asn
+++ b/asn1/gsmmap/GSMMAP.asn
@@ -4133,9 +4133,9 @@ ProvideSubscriberLocation-Arg ::= SEQUENCE {
-- location, a lcs-Reference number shall be included.
LocationType ::= SEQUENCE {
- locationEstimateType [0] LocationEstimateType,
+ locationEstimateType [0] IMPLICIT LocationEstimateType,
...,
- deferredLocationEventType [1] DeferredLocationEventType OPTIONAL }
+ deferredLocationEventType [1] IMPLICIT DeferredLocationEventType OPTIONAL }
LocationEstimateType ::= ENUMERATED {
currentLocation (0),
@@ -5066,156 +5066,3 @@ ExtensionContainer ::= SEQUENCE {
END
---
---B.2 Fully Expanded ASN.1 Source of MAP-DialogueInformation
---
--- Expanded ASN1 Module 'MAP-DialogueInformation'
---SIEMENS ASN.1 Compiler R5.70 (Production_5.70)
--- Date: 2003-09-04 Time: 14:14:14
---
---MAP-DialogueInformation{ 0 identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) map-DialogueInformation (3) version5 (5) }
---
---DEFINITIONS
---
---::=
---
---BEGIN
---
---EXPORTS
--- map-DialogueAS,
--- MAP-DialoguePDU;
---
---
---map-DialogueAS OBJECT IDENTIFIER ::= { ccitt (0) identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) 1 map-DialoguePDU (1) version1 (1) }
---
---MAP-DialoguePDU ::= CHOICE {
--- map-open [0] IMPLICIT SEQUENCE {
--- destinationReference [0] IMPLICIT OCTET STRING ( SIZE( 1 .. 20 ) ) OPTIONAL,
--- originationReference [1] IMPLICIT OCTET STRING ( SIZE( 1 .. 20 ) ) OPTIONAL,
--- ... ,
--- extensionContainer ExtensionContainer OPTIONAL,
--- map-accept [1] IMPLICIT SEQUENCE {
--- ... ,
--- extensionContainer ExtensionContainer OPTIONAL,
--- map-close [2] IMPLICIT SEQUENCE {
--- ... ,
--- extensionContainer ExtensionContainer OPTIONAL,
--- map-refuse [3] IMPLICIT SEQUENCE {
--- reason ENUMERATED {
--- noReasonGiven ( 0 ),
--- invalidDestinationReference ( 1 ),
--- invalidOriginatingReference ( 2 ) },
--- ... ,
--- extensionContainer ExtensionContainer OPTIONAL,
--- map-userAbort [4] IMPLICIT SEQUENCE {
--- map-UserAbortChoice CHOICE {
--- userSpecificReason [0] IMPLICIT NULL,
--- userResourceLimitation [1] IMPLICIT NULL,
--- resourceUnavailable [2] IMPLICIT ENUMERATED {
--- shortTermResourceLimitation ( 0 ),
--- longTermResourceLimitation ( 1 ) },
--- applicationProcedureCancellation [3] IMPLICIT ENUMERATED {
--- handoverCancellation ( 0 ),
--- radioChannelRelease ( 1 ),
--- networkPathRelease ( 2 ),
--- callRelease ( 3 ),
--- associatedProcedureFailure ( 4 ),
--- tandemDialogueRelease ( 5 ),
--- remoteOperationsFailure ( 6 ) }},
--- ... ,
--- extensionContainer ExtensionContainer OPTIONAL,
--- map-providerAbort [5] IMPLICIT SEQUENCE {
--- map-ProviderAbortReason ENUMERATED {
--- abnormalDialogue ( 0 ),
--- invalidPDU ( 1 ) },
--- ... ,
--- extensionContainer ExtensionContainer OPTIONAL,
---}
--- End Ethereal adaptation
---
---MAP-OpenInfo ::= SEQUENCE {
--- destinationReference [0] IMPLICIT OCTET STRING ( SIZE( 1 .. 20 ) ) OPTIONAL,
--- originationReference [1] IMPLICIT OCTET STRING ( SIZE( 1 .. 20 ) ) OPTIONAL,
--- ... ,
--- extensionContainer ExtensionContainer OPTIONAL,
---
---MAP-AcceptInfo ::= SEQUENCE {
--- ... ,
--- extensionContainer ExtensionContainer OPTIONAL,
---
---MAP-CloseInfo ::= SEQUENCE {
--- ... ,
--- extensionContainer ExtensionContainer OPTIONAL,
---
---MAP-RefuseInfo ::= SEQUENCE {
--- reason ENUMERATED {
--- noReasonGiven ( 0 ),
--- invalidDestinationReference ( 1 ),
--- invalidOriginatingReference ( 2 ) },
--- ... ,
--- extensionContainer ExtensionContainer OPTIONAL,
---
---Reason ::= ENUMERATED {
--- noReasonGiven ( 0 ),
--- invalidDestinationReference ( 1 ),
--- invalidOriginatingReference ( 2 ) }
---
---MAP-UserAbortInfo ::= SEQUENCE {
--- map-UserAbortChoice CHOICE {
--- userSpecificReason [0] IMPLICIT NULL,
--- userResourceLimitation [1] IMPLICIT NULL,
--- resourceUnavailable [2] IMPLICIT ENUMERATED {
--- shortTermResourceLimitation ( 0 ),
--- longTermResourceLimitation ( 1 ) },
--- applicationProcedureCancellation [3] IMPLICIT ENUMERATED {
--- handoverCancellation ( 0 ),
--- radioChannelRelease ( 1 ),
--- networkPathRelease ( 2 ),
--- callRelease ( 3 ),
--- associatedProcedureFailure ( 4 ),
--- tandemDialogueRelease ( 5 ),
--- remoteOperationsFailure ( 6 ) }},
--- ... ,
--- extensionContainer ExtensionContainer OPTIONAL,
---
---MAP-UserAbortChoice ::= CHOICE {
--- userSpecificReason [0] IMPLICIT NULL,
--- userResourceLimitation [1] IMPLICIT NULL,
--- resourceUnavailable [2] IMPLICIT ENUMERATED {
--- shortTermResourceLimitation ( 0 ),
--- longTermResourceLimitation ( 1 ) },
--- applicationProcedureCancellation [3] IMPLICIT ENUMERATED {
--- handoverCancellation ( 0 ),
--- radioChannelRelease ( 1 ),
--- networkPathRelease ( 2 ),
--- callRelease ( 3 ),
--- associatedProcedureFailure ( 4 ),
--- tandemDialogueRelease ( 5 ),
--- remoteOperationsFailure ( 6 ) }}
---
---ResourceUnavailableReason ::= ENUMERATED {
--- shortTermResourceLimitation ( 0 ),
--- longTermResourceLimitation ( 1 ) }
---
---ProcedureCancellationReason ::= ENUMERATED {
--- handoverCancellation ( 0 ),
--- radioChannelRelease ( 1 ),
--- networkPathRelease ( 2 ),
--- callRelease ( 3 ),
--- associatedProcedureFailure ( 4 ),
--- tandemDialogueRelease ( 5 ),
--- remoteOperationsFailure ( 6 ) }
---
---MAP-ProviderAbortInfo ::= SEQUENCE {
--- map-ProviderAbortReason ENUMERATED {
--- abnormalDialogue ( 0 ),
--- invalidPDU ( 1 ) },
--- ... ,
--- extensionContainer ExtensionContainer OPTIONAL,
---
---MAP-ProviderAbortReason ::= ENUMERATED {
--- abnormalDialogue ( 0 ),
--- invalidPDU ( 1 ) }
---
---
---END
diff --git a/asn1/gsmmap/gsm_map-exp.cnf b/asn1/gsmmap/gsm_map-exp.cnf
index 6d726d385f..0881844b38 100644
--- a/asn1/gsmmap/gsm_map-exp.cnf
+++ b/asn1/gsmmap/gsm_map-exp.cnf
@@ -7,8 +7,8 @@ AlertingPattern BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
LCSClientExternalID BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
LCSServiceTypeID BER_CLASS_UNI BER_UNI_TAG_INTEGER
RegisterSS_Arg BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
-SS_Info BER_CLASS_CON -1/*choice*/
-InterrogateSS_Res BER_CLASS_CON -1/*choice*/
+SS_Info BER_CLASS_ANY/*choice*/ -1/*choice*/
+InterrogateSS_Res BER_CLASS_ANY/*choice*/ -1/*choice*/
Ussd_Arg BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
Ussd_Res BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
USSD_DataCodingScheme BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
diff --git a/asn1/gsmmap/gsmmap.cnf b/asn1/gsmmap/gsmmap.cnf
index 48f0bb9932..aa350cc5ed 100644
--- a/asn1/gsmmap/gsmmap.cnf
+++ b/asn1/gsmmap/gsmmap.cnf
@@ -424,7 +424,7 @@ ModificationRequestFor-CF-Info/noReplyConditionTime ext-noReplyConditionTime
if (!parameter_tvb)
return offset;
- de_sm_qos(parameter_tvb, tree, 0, 3, NULL);
+ de_sm_qos(parameter_tvb, tree, 0, 3, NULL,0);
#.FN_PARS Ext-QoS-Subscribed
diff --git a/asn1/gsmmap/packet-gsm_map-template.c b/asn1/gsmmap/packet-gsm_map-template.c
index 6dcd41638e..16a24e5b11 100644
--- a/asn1/gsmmap/packet-gsm_map-template.c
+++ b/asn1/gsmmap/packet-gsm_map-template.c
@@ -521,7 +521,7 @@ static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv
offset=dissect_gsm_map_DeactivateTraceModeArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 55: /*sendIdentification*/
- offset=dissect_gsm_map_TMSI(FALSE, tvb, offset, pinfo, tree, -1);
+ offset=dissect_gsm_map_SendIdentificationArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 56: /*sendAuthenticationInfo*/
if (application_context_version < 3 ){
@@ -606,8 +606,6 @@ static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv
offset=dissect_gsm_map_SecureTransportArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 83: /*provideSubscriberLocation*/
- offset=dissect_gsm_map_EraseCC_EntryArg(FALSE, tvb, offset, pinfo, tree, -1);
- break;
offset=dissect_gsm_map_ProvideSubscriberLocation_Arg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 85: /*sendRoutingInfoForLCS*/
@@ -748,8 +746,15 @@ static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff
case 51: /*deactivateTraceMode*/
offset=dissect_gsm_map_DeactivateTraceModeRes(FALSE, tvb, offset, pinfo, tree, -1);
break;
- case 55: /*sendIdentification*/
- offset=dissect_gsm_map_SendIdentificationRes(FALSE, tvb, offset, pinfo, tree, -1);
+ case 55: /*sendIdentification
+ * In newer versions IMSI and authenticationSetList is OPTIONAL and two new parameters added
+ * however if the tag (3) is stripped of it should work with the 'new' def.(?)
+ */
+ octet = tvb_get_guint8(tvb,0) & 0xf;
+ if ( octet == 3){ /* This is a V3 message ??? */
+ offset = offset +2;
+ }
+ offset=dissect_gsm_map_SendIdentificationRes(TRUE, tvb, offset, pinfo, tree, -1);
break;
case 56: /*sendAuthenticationInfo*/
octet = tvb_get_guint8(tvb,0) & 0xf;
@@ -1385,7 +1390,9 @@ void proto_reg_handoff_gsm_map(void) {
register_ber_oid_dissector_handle("0.4.0.0.1.0.14.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) infoRetrieval(14) version3(3)" );
register_ber_oid_dissector_handle("0.4.0.0.1.0.14.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) infoRetrieval(14) version2(2)" );
register_ber_oid_dissector_handle("0.4.0.0.1.0.14.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) infoRetrieval(14) version1(1)" );
- register_ber_oid_dissector_handle("0.4.0.0.1.0.15.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) interVlrInfoRetrieval(15) version2(2)" );
+ register_ber_oid_dissector_handle("0.4.0.0.1.0.15.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) interVlrInfoRetrieval(15) version1(1)" );
+ register_ber_oid_dissector_handle("0.4.0.0.1.0.15.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) interVlrInfoRetrieval(15) version2(2)" );
+ register_ber_oid_dissector_handle("0.4.0.0.1.0.15.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) interVlrInfoRetrieval(15) version3(3)" );
register_ber_oid_dissector_handle("0.4.0.0.1.0.16.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) subscriberDataMngt(16) version3(3)" );
register_ber_oid_dissector_handle("0.4.0.0.1.0.16.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) subscriberDataMngt(16) version2(2)" );
register_ber_oid_dissector_handle("0.4.0.0.1.0.16.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) subscriberDataMngt(16) version1(1)" );