aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2009-01-27 20:25:28 +0000
committerAnders Broman <anders.broman@ericsson.com>2009-01-27 20:25:28 +0000
commitbae6a0d02f9cd2b8e31718ab0616be145b1279b5 (patch)
tree956cc321dbfde7034aa0032e0eebd67c261a8144
parentf68d3d46fe5603226aba47d4fd7332597a18c2f7 (diff)
Handle V3 SendRoutingInfoRes where the tag[3] is missing.
svn path=/trunk/; revision=27311
-rw-r--r--asn1/gsmmap/packet-gsmmap-template.c10
-rw-r--r--epan/dissectors/packet-gsm_map.c16
2 files changed, 21 insertions, 5 deletions
diff --git a/asn1/gsmmap/packet-gsmmap-template.c b/asn1/gsmmap/packet-gsmmap-template.c
index 9fef0ce1fd..98ee9d6e50 100644
--- a/asn1/gsmmap/packet-gsmmap-template.c
+++ b/asn1/gsmmap/packet-gsmmap-template.c
@@ -1321,10 +1321,18 @@ static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset,
offset=dissect_gsm_map_sm_MT_ForwardSM_VGCS_Res(FALSE, tvb, offset, actx, tree, -1);
break;
case 22: /*sendRoutingInfo*/
- offset=dissect_mc_message(tvb, offset, actx, tree,
+ if (application_context_version == 3){
+ /* If the tag is missing use SendRoutingInfoRes_U */
+ offset=dissect_mc_message(tvb, offset, actx, tree,
+ FALSE, NULL, -1,
+ FALSE, dissect_gsm_map_ch_SendRoutingInfoRes_U, -1,
+ TRUE , dissect_gsm_map_ch_SendRoutingInfoRes, -1);
+ }else{
+ offset=dissect_mc_message(tvb, offset, actx, tree,
FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi,
FALSE, dissect_gsm_old_SendRoutingInfoResV2, -1,
TRUE , dissect_gsm_map_ch_SendRoutingInfoRes, -1);
+ }
break;
case 23: /*updateGprsLocation*/
offset=dissect_gsm_map_ms_UpdateGprsLocationRes(FALSE, tvb, offset, actx, tree, -1);
diff --git a/epan/dissectors/packet-gsm_map.c b/epan/dissectors/packet-gsm_map.c
index aa164760e1..4c18bd23e5 100644
--- a/epan/dissectors/packet-gsm_map.c
+++ b/epan/dissectors/packet-gsm_map.c
@@ -16492,10 +16492,18 @@ static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset,
offset=dissect_gsm_map_sm_MT_ForwardSM_VGCS_Res(FALSE, tvb, offset, actx, tree, -1);
break;
case 22: /*sendRoutingInfo*/
- offset=dissect_mc_message(tvb, offset, actx, tree,
+ if (application_context_version == 3){
+ /* If the tag is missing use SendRoutingInfoRes_U */
+ offset=dissect_mc_message(tvb, offset, actx, tree,
+ FALSE, NULL, -1,
+ FALSE, dissect_gsm_map_ch_SendRoutingInfoRes_U, -1,
+ TRUE , dissect_gsm_map_ch_SendRoutingInfoRes, -1);
+ }else{
+ offset=dissect_mc_message(tvb, offset, actx, tree,
FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi,
FALSE, dissect_gsm_old_SendRoutingInfoResV2, -1,
TRUE , dissect_gsm_map_ch_SendRoutingInfoRes, -1);
+ }
break;
case 23: /*updateGprsLocation*/
offset=dissect_gsm_map_ms_UpdateGprsLocationRes(FALSE, tvb, offset, actx, tree, -1);
@@ -22341,7 +22349,7 @@ void proto_register_gsm_map(void) {
"gsm_map_lcs.LCS_QoS", HFILL }},
/*--- End of included file: packet-gsm_map-hfarr.c ---*/
-#line 2438 "packet-gsmmap-template.c"
+#line 2446 "packet-gsmmap-template.c"
};
/* List of subtrees */
@@ -22909,7 +22917,7 @@ void proto_register_gsm_map(void) {
/*--- End of included file: packet-gsm_map-ettarr.c ---*/
-#line 2466 "packet-gsmmap-template.c"
+#line 2474 "packet-gsmmap-template.c"
};
/* Register protocol */
@@ -22985,7 +22993,7 @@ void proto_register_gsm_map(void) {
/*--- End of included file: packet-gsm_map-dis-tab.c ---*/
-#line 2484 "packet-gsmmap-template.c"
+#line 2492 "packet-gsmmap-template.c"
oid_add_from_string("ericsson-gsm-Map-Ext","1.2.826.0.1249.58.1.0" );
oid_add_from_string("accessTypeNotAllowed-id","1.3.12.2.1107.3.66.1.2");
/*oid_add_from_string("map-ac networkLocUp(1) version3(3)","0.4.0.0.1.0.1.3" );