aboutsummaryrefslogtreecommitdiffstats
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
parent86ea8b88f3b721e1001f898ed05d8ba5f1ecf20e (diff)
Fix decoding of sendIdentificationArg/Res and ProvideSubscriberLocation
svn path=/trunk/; revision=15510
-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
-rw-r--r--epan/dissectors/packet-gsm_map.c177
5 files changed, 121 insertions, 238 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)" );
diff --git a/epan/dissectors/packet-gsm_map.c b/epan/dissectors/packet-gsm_map.c
index 86b79a0bff..6000992a30 100644
--- a/epan/dissectors/packet-gsm_map.c
+++ b/epan/dissectors/packet-gsm_map.c
@@ -1554,6 +1554,7 @@ dissect_gsm_map_SignalInfo2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset
return offset;
}
+
static const asn_namedbit SupportedCamelPhases_bits[] = {
{ 0, &hf_gsm_map_SupportedCamelPhases_phase1, -1, -1, "phase1", NULL },
{ 1, &hf_gsm_map_SupportedCamelPhases_phase2, -1, -1, "phase2", NULL },
@@ -1565,8 +1566,8 @@ static const asn_namedbit SupportedCamelPhases_bits[] = {
static int
dissect_gsm_map_SupportedCamelPhases(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- SupportedCamelPhases_bits, hf_index, ett_gsm_map_SupportedCamelPhases,
- NULL);
+ SupportedCamelPhases_bits, hf_index, ett_gsm_map_SupportedCamelPhases,
+ NULL);
return offset;
}
@@ -2189,6 +2190,7 @@ static int dissect_superChargerSupportedInServingNetworkEntity_impl(packet_info
return dissect_gsm_map_SuperChargerInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_superChargerSupportedInServingNetworkEntity);
}
+
static const asn_namedbit SupportedLCS_CapabilitySets_bits[] = {
{ 0, &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet1, -1, -1, "lcsCapabilitySet1", NULL },
{ 1, &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet2, -1, -1, "lcsCapabilitySet2", NULL },
@@ -2200,8 +2202,8 @@ static const asn_namedbit SupportedLCS_CapabilitySets_bits[] = {
static int
dissect_gsm_map_SupportedLCS_CapabilitySets(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- SupportedLCS_CapabilitySets_bits, hf_index, ett_gsm_map_SupportedLCS_CapabilitySets,
- NULL);
+ SupportedLCS_CapabilitySets_bits, hf_index, ett_gsm_map_SupportedLCS_CapabilitySets,
+ NULL);
return offset;
}
@@ -2212,6 +2214,7 @@ static int dissect_additional_LCS_CapabilitySets_impl(packet_info *pinfo, proto_
return dissect_gsm_map_SupportedLCS_CapabilitySets(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additional_LCS_CapabilitySets);
}
+
static const asn_namedbit OfferedCamel4CSIs_bits[] = {
{ 0, &hf_gsm_map_OfferedCamel4CSIs_o_csi, -1, -1, "o-csi", NULL },
{ 1, &hf_gsm_map_OfferedCamel4CSIs_d_csi, -1, -1, "d-csi", NULL },
@@ -2226,8 +2229,8 @@ static const asn_namedbit OfferedCamel4CSIs_bits[] = {
static int
dissect_gsm_map_OfferedCamel4CSIs(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- OfferedCamel4CSIs_bits, hf_index, ett_gsm_map_OfferedCamel4CSIs,
- NULL);
+ OfferedCamel4CSIs_bits, hf_index, ett_gsm_map_OfferedCamel4CSIs,
+ NULL);
return offset;
}
@@ -2531,7 +2534,7 @@ static int dissect_cancellationType(packet_info *pinfo, proto_tree *tree, tvbuff
static const ber_sequence_t CancelLocationArg_sequence[] = {
- { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_identity },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_identity },
{ BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cancellationType },
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
{ 0, 0, 0, NULL }
@@ -2949,7 +2952,7 @@ static int dissect_currentSecurityContext_impl(packet_info *pinfo, proto_tree *t
static const ber_sequence_t SendIdentificationRes_sequence[] = {
{ BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_authenticationSetList },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_authenticationSetList },
{ BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_currentSecurityContext_impl },
{ BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
{ 0, 0, 0, NULL }
@@ -3472,11 +3475,12 @@ static int dissect_iuSupportedCodecsList_impl(packet_info *pinfo, proto_tree *tr
}
+
static int
dissect_gsm_map_UESBI_IuA(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- NULL, hf_index, -1,
- NULL);
+ NULL, hf_index, -1,
+ NULL);
return offset;
}
@@ -3485,11 +3489,12 @@ static int dissect_uesbi_IuA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t
}
+
static int
dissect_gsm_map_UESBI_IuB(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- NULL, hf_index, -1,
- NULL);
+ NULL, hf_index, -1,
+ NULL);
return offset;
}
@@ -4036,7 +4041,7 @@ dissect_gsm_map_SendAuthenticationInfoRes(gboolean implicit_tag _U_, tvbuff_t *t
static const ber_sequence_t SendAuthenticationInfoResV3_sequence[] = {
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_authenticationSetList },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_authenticationSetList },
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
{ 0, 0, 0, NULL }
};
@@ -4058,6 +4063,7 @@ dissect_gsm_map_CheckIMEIArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offse
return offset;
}
+
static const asn_namedbit RequestedEquipmentInfo_bits[] = {
{ 0, &hf_gsm_map_RequestedEquipmentInfo_equipmentStatus, -1, -1, "equipmentStatus", NULL },
{ 1, &hf_gsm_map_RequestedEquipmentInfo_bmuef, -1, -1, "bmuef", NULL },
@@ -4067,8 +4073,8 @@ static const asn_namedbit RequestedEquipmentInfo_bits[] = {
static int
dissect_gsm_map_RequestedEquipmentInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- RequestedEquipmentInfo_bits, hf_index, ett_gsm_map_RequestedEquipmentInfo,
- NULL);
+ RequestedEquipmentInfo_bits, hf_index, ett_gsm_map_RequestedEquipmentInfo,
+ NULL);
return offset;
}
@@ -4174,7 +4180,7 @@ static int dissect_BasicServiceGroupList_item(packet_info *pinfo, proto_tree *tr
static const ber_sequence_t BasicServiceGroupList_sequence_of[1] = {
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceGroupList_item },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceGroupList_item },
};
static int
@@ -4191,6 +4197,7 @@ static int dissect_ext_basicServiceGroupList_impl(packet_info *pinfo, proto_tree
return dissect_gsm_map_BasicServiceGroupList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicServiceGroupList);
}
+
static const asn_namedbit ODB_GeneralData_bits[] = {
{ 0, &hf_gsm_map_ODB_GeneralData_allOG_CallsBarred, -1, -1, "allOG-CallsBarred", NULL },
{ 1, &hf_gsm_map_ODB_GeneralData_internationalOGCallsBarred, -1, -1, "internationalOGCallsBarred", NULL },
@@ -4227,8 +4234,8 @@ static const asn_namedbit ODB_GeneralData_bits[] = {
static int
dissect_gsm_map_ODB_GeneralData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- ODB_GeneralData_bits, hf_index, ett_gsm_map_ODB_GeneralData,
- NULL);
+ ODB_GeneralData_bits, hf_index, ett_gsm_map_ODB_GeneralData,
+ NULL);
return offset;
}
@@ -4239,6 +4246,7 @@ static int dissect_odb_GeneralData_impl(packet_info *pinfo, proto_tree *tree, tv
return dissect_gsm_map_ODB_GeneralData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_GeneralData);
}
+
static const asn_namedbit ODB_HPLMN_Data_bits[] = {
{ 0, &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType1, -1, -1, "plmn-SpecificBarringType1", NULL },
{ 1, &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType2, -1, -1, "plmn-SpecificBarringType2", NULL },
@@ -4250,8 +4258,8 @@ static const asn_namedbit ODB_HPLMN_Data_bits[] = {
static int
dissect_gsm_map_ODB_HPLMN_Data(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- ODB_HPLMN_Data_bits, hf_index, ett_gsm_map_ODB_HPLMN_Data,
- NULL);
+ ODB_HPLMN_Data_bits, hf_index, ett_gsm_map_ODB_HPLMN_Data,
+ NULL);
return offset;
}
@@ -4775,7 +4783,7 @@ static int dissect_longForwardedToNumber_impl(packet_info *pinfo, proto_tree *tr
static const ber_sequence_t Ext_ForwFeature_sequence[] = {
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService },
{ BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
{ BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
{ BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
@@ -4837,7 +4845,7 @@ static int dissect_ext_forwardingInfo_impl(packet_info *pinfo, proto_tree *tree,
static const ber_sequence_t Ext_CallBarringFeature_sequence[] = {
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService },
{ BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
{ 0, 0, 0, NULL }
@@ -4943,7 +4951,7 @@ static int dissect_intraCUG_Options(packet_info *pinfo, proto_tree *tree, tvbuff
static const ber_sequence_t Ext_BasicServiceGroupList_sequence_of[1] = {
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_Ext_BasicServiceGroupList_item },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_Ext_BasicServiceGroupList_item },
};
static int
@@ -5009,7 +5017,7 @@ static int dissect_interCUG_Restrictions(packet_info *pinfo, proto_tree *tree, t
static const ber_sequence_t CUG_Feature_sequence[] = {
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService },
{ BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_preferentialCUG_Indicator },
{ BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_interCUG_Restrictions },
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
@@ -5114,7 +5122,7 @@ static int dissect_ss_SubscriptionOption(packet_info *pinfo, proto_tree *tree, t
static const ber_sequence_t Ext_SS_Data_sequence[] = {
{ BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
{ BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_SubscriptionOption },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_SubscriptionOption },
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_basicServiceGroupList },
{ BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
{ 0, 0, 0, NULL }
@@ -5208,7 +5216,7 @@ static int dissect_Ext_SS_InfoList_item(packet_info *pinfo, proto_tree *tree, tv
static const ber_sequence_t Ext_SS_InfoList_sequence_of[1] = {
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_Ext_SS_InfoList_item },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_Ext_SS_InfoList_item },
};
static int
@@ -5503,7 +5511,7 @@ static int dissect_destinationNumberCriteria_impl(packet_info *pinfo, proto_tree
static const ber_sequence_t BasicServiceCriteria_sequence_of[1] = {
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceCriteria_item },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceCriteria_item },
};
static int
@@ -6185,7 +6193,7 @@ dissect_gsm_map_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb, int off
if (!parameter_tvb)
return offset;
- de_sm_qos(parameter_tvb, tree, 0, 3, NULL, 0);
+ de_sm_qos(parameter_tvb, tree, 0, 3, NULL,0);
return offset;
@@ -7019,6 +7027,7 @@ static int dissect_sgsn_CAMEL_SubscriptionInfo_impl(packet_info *pinfo, proto_tr
return dissect_gsm_map_SGSN_CAMEL_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_CAMEL_SubscriptionInfo);
}
+
static const asn_namedbit AccessRestrictionData_bits[] = {
{ 0, &hf_gsm_map_AccessRestrictionData_utranNotAllowed, -1, -1, "utranNotAllowed", NULL },
{ 1, &hf_gsm_map_AccessRestrictionData_geranNotAllowed, -1, -1, "geranNotAllowed", NULL },
@@ -7028,8 +7037,8 @@ static const asn_namedbit AccessRestrictionData_bits[] = {
static int
dissect_gsm_map_AccessRestrictionData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- AccessRestrictionData_bits, hf_index, ett_gsm_map_AccessRestrictionData,
- NULL);
+ AccessRestrictionData_bits, hf_index, ett_gsm_map_AccessRestrictionData,
+ NULL);
return offset;
}
@@ -7141,7 +7150,7 @@ dissect_gsm_map_InsertSubscriberDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb
static const ber_sequence_t BasicServiceList_sequence_of[1] = {
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceList_item },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceList_item },
};
static int
@@ -7237,6 +7246,7 @@ static int dissect_lsaInformationWithdraw_impl(packet_info *pinfo, proto_tree *t
return dissect_gsm_map_LSAInformationWithdraw(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaInformationWithdraw);
}
+
static const asn_namedbit SpecificCSI_Withdraw_bits[] = {
{ 0, &hf_gsm_map_SpecificCSI_Withdraw_o_csi, -1, -1, "o-csi", NULL },
{ 1, &hf_gsm_map_SpecificCSI_Withdraw_ss_csi, -1, -1, "ss-csi", NULL },
@@ -7258,8 +7268,8 @@ static const asn_namedbit SpecificCSI_Withdraw_bits[] = {
static int
dissect_gsm_map_SpecificCSI_Withdraw(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- SpecificCSI_Withdraw_bits, hf_index, ett_gsm_map_SpecificCSI_Withdraw,
- NULL);
+ SpecificCSI_Withdraw_bits, hf_index, ett_gsm_map_SpecificCSI_Withdraw,
+ NULL);
return offset;
}
@@ -7406,7 +7416,7 @@ static int dissect_basicServiceGroup_impl(packet_info *pinfo, proto_tree *tree,
static const ber_sequence_t CallBarringFeature_sequence[] = {
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
{ BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
{ 0, 0, 0, NULL }
};
@@ -7471,7 +7481,7 @@ static int dissect_noReplyConditionTime_impl(packet_info *pinfo, proto_tree *tre
static const ber_sequence_t ForwardingFeature_sequence[] = {
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
{ 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_forwardedToNumber_impl },
{ BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
@@ -8145,7 +8155,7 @@ static const value_string gsm_map_ExtendedRoutingInfo_vals[] = {
};
static const ber_choice_t ExtendedRoutingInfo_choice[] = {
- { 0, BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_routingInfo },
+ { 0, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_routingInfo },
{ 1, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_camelRoutingInfo_impl },
{ 0, 0, 0, 0, NULL }
};
@@ -8689,6 +8699,7 @@ static int dissect_ccbs_Indicators_impl(packet_info *pinfo, proto_tree *tree, tv
return dissect_gsm_map_CCBS_Indicators(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Indicators);
}
+
static const asn_namedbit AllowedServices_bits[] = {
{ 0, &hf_gsm_map_AllowedServices_firstServiceAllowed, -1, -1, "firstServiceAllowed", NULL },
{ 1, &hf_gsm_map_AllowedServices_secondServiceAllowed, -1, -1, "secondServiceAllowed", NULL },
@@ -8698,8 +8709,8 @@ static const asn_namedbit AllowedServices_bits[] = {
static int
dissect_gsm_map_AllowedServices(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- AllowedServices_bits, hf_index, ett_gsm_map_AllowedServices,
- NULL);
+ AllowedServices_bits, hf_index, ett_gsm_map_AllowedServices,
+ NULL);
return offset;
}
@@ -8733,7 +8744,7 @@ static int dissect_unavailabilityCause_impl(packet_info *pinfo, proto_tree *tree
static const ber_sequence_t SendRoutingInfoRes_sequence[] = {
{ BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
- { -1/*choice*/ , -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extendedRoutingInfo },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extendedRoutingInfo },
{ BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
{ BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cugSubscriptionFlag_impl },
{ BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberInfo_impl },
@@ -9510,7 +9521,7 @@ dissect_gsm_map_TranslatedB_Number(gboolean implicit_tag _U_, tvbuff_t *tvb, int
static const ber_sequence_t SS_Data_sequence[] = {
{ BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ss_Code },
{ BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_SubscriptionOption },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_SubscriptionOption },
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ext_basicServiceGroupList },
{ BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_defaultPriority },
{ BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrUser_impl },
@@ -9531,7 +9542,7 @@ static int dissect_ss_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *
static const ber_sequence_t RegisterSS_Arg_sequence[] = {
{ BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
{ BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_addr_impl },
{ BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
{ BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_noReplyConditionTime_impl },
@@ -9808,11 +9819,12 @@ dissect_gsm_map_AuthenticationFailureReportRes(gboolean implicit_tag _U_, tvbuff
}
+
int
dissect_gsm_map_NewPassword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
- pinfo, tree, tvb, offset, hf_index,
- NULL);
+ pinfo, tree, tvb, offset, hf_index,
+ NULL);
return offset;
}
@@ -9835,15 +9847,17 @@ dissect_gsm_map_GetPasswordArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int off
}
+
int
dissect_gsm_map_CurrentPassword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
- pinfo, tree, tvb, offset, hf_index,
- NULL);
+ pinfo, tree, tvb, offset, hf_index,
+ NULL);
return offset;
}
+
static const asn_namedbit ServiceIndicator_bits[] = {
{ 0, &hf_gsm_map_ServiceIndicator_clir_invoked, -1, -1, "clir-invoked", NULL },
{ 1, &hf_gsm_map_ServiceIndicator_camel_invoked, -1, -1, "camel-invoked", NULL },
@@ -9853,8 +9867,8 @@ static const asn_namedbit ServiceIndicator_bits[] = {
static int
dissect_gsm_map_ServiceIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- ServiceIndicator_bits, hf_index, ett_gsm_map_ServiceIndicator,
- NULL);
+ ServiceIndicator_bits, hf_index, ett_gsm_map_ServiceIndicator,
+ NULL);
return offset;
}
@@ -10175,8 +10189,8 @@ static int dissect_sm_RP_UI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb,
static const ber_sequence_t Mo_forwardSM_Arg_sequence[] = {
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_DA },
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_OA },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_DA },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_OA },
{ BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
{ BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
@@ -10208,8 +10222,8 @@ dissect_gsm_map_Mo_forwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int o
static const ber_sequence_t Mt_forwardSM_Arg_sequence[] = {
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_DA },
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_OA },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_DA },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_OA },
{ BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
{ BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_moreMessagesToSend },
{ BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
@@ -10333,6 +10347,7 @@ dissect_gsm_map_ReportSM_DeliveryStatusRes(gboolean implicit_tag _U_, tvbuff_t *
return offset;
}
+
static const asn_namedbit T_mw_Status_bits[] = {
{ 0, &hf_gsm_map_T_mw_Status_scAddressNotIncluded, -1, -1, "scAddressNotIncluded", NULL },
{ 1, &hf_gsm_map_T_mw_Status_mnrfSet, -1, -1, "mnrfSet", NULL },
@@ -10344,8 +10359,8 @@ static const asn_namedbit T_mw_Status_bits[] = {
static int
dissect_gsm_map_T_mw_Status(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- T_mw_Status_bits, hf_index, ett_gsm_map_T_mw_Status,
- NULL);
+ T_mw_Status_bits, hf_index, ett_gsm_map_T_mw_Status,
+ NULL);
return offset;
}
@@ -10544,7 +10559,7 @@ dissect_gsm_map_AnyTimeInterrogationRes(gboolean implicit_tag _U_, tvbuff_t *tvb
static const ber_sequence_t SS_ForBS_Code_sequence[] = {
{ BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
{ BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
{ 0, 0, 0, NULL }
};
@@ -10672,11 +10687,12 @@ static int dissect_callForwardingData_impl(packet_info *pinfo, proto_tree *tree,
}
+
static int
dissect_gsm_map_Password(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
- pinfo, tree, tvb, offset, hf_index,
- NULL);
+ pinfo, tree, tvb, offset, hf_index,
+ NULL);
return offset;
}
@@ -10804,6 +10820,7 @@ dissect_gsm_map_AnyTimeSubscriptionInterrogationRes(gboolean implicit_tag _U_, t
return offset;
}
+
static const asn_namedbit OfferedCamel4Functionalities_bits[] = {
{ 0, &hf_gsm_map_OfferedCamel4Functionalities_initiateCallAttempt, -1, -1, "initiateCallAttempt", NULL },
{ 1, &hf_gsm_map_OfferedCamel4Functionalities_splitLeg, -1, -1, "splitLeg", NULL },
@@ -10830,8 +10847,8 @@ static const asn_namedbit OfferedCamel4Functionalities_bits[] = {
static int
dissect_gsm_map_OfferedCamel4Functionalities(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- OfferedCamel4Functionalities_bits, hf_index, ett_gsm_map_OfferedCamel4Functionalities,
- NULL);
+ OfferedCamel4Functionalities_bits, hf_index, ett_gsm_map_OfferedCamel4Functionalities,
+ NULL);
return offset;
}
@@ -11548,10 +11565,11 @@ dissect_gsm_map_LocationEstimateType(gboolean implicit_tag _U_, tvbuff_t *tvb, i
return offset;
}
-static int dissect_locationEstimateType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
- return dissect_gsm_map_LocationEstimateType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimateType);
+static int dissect_locationEstimateType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_gsm_map_LocationEstimateType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimateType);
}
+
static const asn_namedbit DeferredLocationEventType_bits[] = {
{ 0, &hf_gsm_map_DeferredLocationEventType_msAvailable, -1, -1, "msAvailable", NULL },
{ 1, &hf_gsm_map_DeferredLocationEventType_enteringIntoArea, -1, -1, "enteringIntoArea", NULL },
@@ -11563,19 +11581,22 @@ static const asn_namedbit DeferredLocationEventType_bits[] = {
int
dissect_gsm_map_DeferredLocationEventType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- DeferredLocationEventType_bits, hf_index, ett_gsm_map_DeferredLocationEventType,
- NULL);
+ DeferredLocationEventType_bits, hf_index, ett_gsm_map_DeferredLocationEventType,
+ NULL);
return offset;
}
static int dissect_deferredLocationEventType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_gsm_map_DeferredLocationEventType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_deferredLocationEventType);
}
+static int dissect_deferredLocationEventType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_gsm_map_DeferredLocationEventType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_deferredLocationEventType);
+}
static const ber_sequence_t LocationType_sequence[] = {
- { BER_CLASS_CON, 0, 0, dissect_locationEstimateType },
- { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_deferredLocationEventType },
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_locationEstimateType_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deferredLocationEventType_impl },
{ 0, 0, 0, NULL }
};
@@ -11817,6 +11838,7 @@ static int dissect_lcs_QoS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *
return dissect_gsm_map_LCS_QoS(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_QoS);
}
+
static const asn_namedbit SupportedGADShapes_bits[] = {
{ 0, &hf_gsm_map_SupportedGADShapes_ellipsoidPoint, -1, -1, "ellipsoidPoint", NULL },
{ 1, &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle, -1, -1, "ellipsoidPointWithUncertaintyCircle", NULL },
@@ -11831,8 +11853,8 @@ static const asn_namedbit SupportedGADShapes_bits[] = {
int
dissect_gsm_map_SupportedGADShapes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
- SupportedGADShapes_bits, hf_index, ett_gsm_map_SupportedGADShapes,
- NULL);
+ SupportedGADShapes_bits, hf_index, ett_gsm_map_SupportedGADShapes,
+ NULL);
return offset;
}
@@ -12488,7 +12510,7 @@ static int dissect_initialisationVector(packet_info *pinfo, proto_tree *tree, tv
static const ber_sequence_t SecurityHeader_sequence[] = {
{ BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_securityParametersIndex },
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_originalComponentIdentifier },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_originalComponentIdentifier },
{ BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_initialisationVector },
{ 0, 0, 0, NULL }
};
@@ -13096,7 +13118,7 @@ dissect_gsm_map_NoGroupCallNbParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int
static const ber_sequence_t SS_IncompatibilityCause_sequence[] = {
{ BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
- { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
{ BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
{ 0, 0, 0, NULL }
};
@@ -13720,7 +13742,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 ){
@@ -13805,8 +13827,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*/
@@ -13947,8 +13967,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 wit 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;
@@ -14584,7 +14611,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)" );