aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/gsmmap
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2007-12-05 20:16:02 +0000
committerAnders Broman <anders.broman@ericsson.com>2007-12-05 20:16:02 +0000
commitd639aace724b07b9e66325d15d44f802199b1b67 (patch)
treeb7e70cb7c1baeb6e9f0042b56d34bc2f52475cf4 /asn1/gsmmap
parent20a98a36f37cce4ca1651b204eb80a45f754d8e4 (diff)
Insert asn1 code for SendRoutingInfov2 and update template
Partly fixes http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=2064 GSM_MAP decodes SendRoutingInfov2 incorrectly svn path=/trunk/; revision=23774
Diffstat (limited to 'asn1/gsmmap')
-rw-r--r--asn1/gsmmap/GSMMAP.asn24
-rw-r--r--asn1/gsmmap/packet-gsmmap-template.c16
2 files changed, 34 insertions, 6 deletions
diff --git a/asn1/gsmmap/GSMMAP.asn b/asn1/gsmmap/GSMMAP.asn
index 8044fec213..d20c794b3c 100644
--- a/asn1/gsmmap/GSMMAP.asn
+++ b/asn1/gsmmap/GSMMAP.asn
@@ -35,6 +35,13 @@ FROM MAP-CommonDataTypes {
FROM MAP-ExtensionDataTypes {
itu-t identified-organization (4) etsi (0) mobileDomain (0)
gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version11 (11)}
+
+ CUG-CheckInfo,
+ NumberOfForwarding,
+ RoutingInfo
+FROM MAP-CH-DataTypes {
+ itu-t identified-organization (4) etsi (0) mobileDomain (0)
+ gsm-Network (1) modules (3) map-CH-DataTypes (13) version11 (11)}
;
-- ROS def's
@@ -584,7 +591,22 @@ accessTypeNotAllowed-id OBJECT IDENTIFIER ::=
--proprietary-extensions (1)
--accessTypeNotAllowed (2)
-
+SendRoutingInfoArgV2 ::= SEQUENCE {
+ msisdn [0] ISDN-AddressString,
+ cug-CheckInfo [1] CUG-CheckInfo OPTIONAL,
+-- cug-CheckInfo must be absent in version 1
+ numberOfForwarding [2] NumberOfForwarding OPTIONAL,
+ networkSignalInfo [10] ExternalSignalInfo OPTIONAL,
+ ...
+ }
+
+SendRoutingInfoResV2 ::= SEQUENCE {
+ imsi IMSI,
+ routingInfo RoutingInfo,
+ cug-CheckInfo CUG-CheckInfo OPTIONAL,
+-- cug-CheckInfo must be absent in version 1
+ ...
+ }
END
diff --git a/asn1/gsmmap/packet-gsmmap-template.c b/asn1/gsmmap/packet-gsmmap-template.c
index d14624b429..28215223c4 100644
--- a/asn1/gsmmap/packet-gsmmap-template.c
+++ b/asn1/gsmmap/packet-gsmmap-template.c
@@ -703,7 +703,7 @@ static int dissect_mc_message(tvbuff_t *tvb,
}
} else if (octet == 0x30) {
if (sequence != NULL) {
- offset= (sequence) (implicit_seq, tvb, offset, actx, tree, hf_index_seq);
+ offset= (sequence) (implicit_seq, tvb, 0, actx, tree, hf_index_seq);
} else {
cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown or not implemented sequence");
proto_item_set_expert_flags(cause, PI_UNDECODED, PI_ERROR);
@@ -789,7 +789,11 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
offset=dissect_gsm_map_sm_MT_ForwardSM_VGCS_Arg(FALSE, tvb, offset, actx, tree, -1);
break;
case 22: /*sendRoutingInfo*/
- offset=dissect_gsm_map_ch_SendRoutingInfoArg(FALSE, tvb, offset, actx, tree, -1);
+ if (application_context_version == 3){
+ offset=dissect_gsm_map_ch_SendRoutingInfoArg(FALSE, tvb, offset, actx, tree, -1);
+ }else{
+ offset=dissect_gsm_old_SendRoutingInfoArgV2(FALSE, tvb, offset, actx, tree, -1);
+ }
break;
case 23: /*updateGprsLocation*/
offset=dissect_gsm_map_ms_UpdateGprsLocationArg(FALSE, tvb, offset, actx, tree, -1);
@@ -1129,7 +1133,7 @@ static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset,
case 22: /*sendRoutingInfo*/
offset=dissect_mc_message(tvb, offset, actx, tree,
FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi,
- FALSE, NULL, -1,
+ FALSE, dissect_gsm_old_SendRoutingInfoResV2, -1,
TRUE , dissect_gsm_map_ch_SendRoutingInfoRes, -1);
break;
case 23: /*updateGprsLocation*/
@@ -1538,8 +1542,10 @@ dissect_gsm_map_GSMMAPPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
p_private_tcap=actx->pinfo->private_data;
if (p_private_tcap->acv==TRUE ){
version_ptr = strrchr(p_private_tcap->oid,'.');
- if (version_ptr)
- application_context_version = atoi(version_ptr+1);
+ if (version_ptr){
+ application_context_version = atoi(version_ptr+1);
+ }
+ g_warning("AppCtx %u",application_context_version);
}
}