diff options
author | Anders Broman <anders.broman@ericsson.com> | 2005-08-22 16:19:31 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2005-08-22 16:19:31 +0000 |
commit | 1f0b3d1d384fae374cb896b9b2334221ab28e50c (patch) | |
tree | 41b2fba5498c2ae067a092da28e5641e2069682b /asn1 | |
parent | 86ea8b88f3b721e1001f898ed05d8ba5f1ecf20e (diff) |
Fix decoding of sendIdentificationArg/Res and ProvideSubscriberLocation
svn path=/trunk/; revision=15510
Diffstat (limited to 'asn1')
-rw-r--r-- | asn1/gsmmap/GSMMAP.asn | 157 | ||||
-rw-r--r-- | asn1/gsmmap/gsm_map-exp.cnf | 4 | ||||
-rw-r--r-- | asn1/gsmmap/gsmmap.cnf | 2 | ||||
-rw-r--r-- | asn1/gsmmap/packet-gsm_map-template.c | 19 |
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)" ); |