aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/gsmmap
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2005-03-30 19:08:39 +0000
committerAnders Broman <anders.broman@ericsson.com>2005-03-30 19:08:39 +0000
commitd238f2c65f450d93c98a13770180f3c647a7c211 (patch)
tree5706b043367a44080ba4c0ebe0a8ff63363255a5 /asn1/gsmmap
parent1de67556eacb5b52a3efcc4ae9eef3cca100a693 (diff)
Update and small bugfix
svn path=/trunk/; revision=13979
Diffstat (limited to 'asn1/gsmmap')
-rw-r--r--asn1/gsmmap/GSMMAP.asn22
-rw-r--r--asn1/gsmmap/packet-gsm_map-template.c14
2 files changed, 32 insertions, 4 deletions
diff --git a/asn1/gsmmap/GSMMAP.asn b/asn1/gsmmap/GSMMAP.asn
index 7579fd2ba2..a25bd20050 100644
--- a/asn1/gsmmap/GSMMAP.asn
+++ b/asn1/gsmmap/GSMMAP.asn
@@ -414,7 +414,29 @@ authenticationSetList CHOICE {
CheckIMEIArg ::= Imei
Imei ::= OCTET STRING ( SIZE( 8 ) )
+-- V2
+-- checkIMEI OPERATION ::= {
+-- ARGUMENT SEQUENCE {
+CheckIMEIv2Arg ::= SEQUENCE {
+ imei Imei,
+ requestedEquipmentInfo BIT STRING {
+ equipmentStatus (0 ),
+ bmuef (1 )} ( SIZE (2 .. 8 ) ),
+ extensionContainer ExtensionContainer OPTIONAL,
+ ... }
+
-- RESULT
+
+-- RESULT SEQUENCE {
+ChekIMEIv3Res ::= SEQUENCE {
+ equipmentStatus EquipmentStatus OPTIONAL,
+ bmuef SEQUENCE {
+ uesbi-IuA [0] IMPLICIT BIT STRING ( SIZE (1 .. 128 ) ) OPTIONAL,
+ uesbi-IuB [1] IMPLICIT BIT STRING ( SIZE (1 .. 128 ) ) OPTIONAL,
+ ... } OPTIONAL,
+ extensionContainer [0] IMPLICIT ExtensionContainer OPTIONAL,
+ ... }
+
EquipmentStatus ::= ENUMERATED {
whiteListed ( 0 ),
blackListed ( 1 ),
diff --git a/asn1/gsmmap/packet-gsm_map-template.c b/asn1/gsmmap/packet-gsm_map-template.c
index a1176bd14c..83b4f14bc0 100644
--- a/asn1/gsmmap/packet-gsm_map-template.c
+++ b/asn1/gsmmap/packet-gsm_map-template.c
@@ -122,6 +122,8 @@ unpack_digits(tvbuff_t *tvb, int offset){
char *digit_str;
length = tvb_length(tvb);
+ if (length < offset)
+ return NULL;
length = length - offset;
digit_str = g_malloc(length+1);
@@ -473,7 +475,11 @@ static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv
offset=dissect_gsm_map_ProcessGroupCallSignallingArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 43: /*checkIMEI*/
- offset=dissect_gsm_map_CheckIMEIArg(FALSE, tvb, offset, pinfo, tree, -1);
+ if (application_context_version < 2 ){
+ offset=dissect_gsm_map_CheckIMEIArg(FALSE, tvb, offset, pinfo, tree, -1);
+ }else{
+ offset=dissect_gsm_map_CheckIMEIv2Arg(FALSE, tvb, offset, pinfo, tree, -1);
+ }
break;
case 44: /*mt-forwardSM*/
offset=dissect_gsm_map_CheckIMEIArg(FALSE, tvb, offset, pinfo, tree, -1);
@@ -672,7 +678,7 @@ static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff
dissect_gsm_map_SendGroupCallEndSignalRes(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 43: /*checkIMEI*/
- offset=dissect_gsm_map_EquipmentStatus(FALSE, tvb, offset, pinfo, tree, -1);
+ offset=dissect_gsm_map_EquipmentStatus(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_equipmentStatus);
break;
case 45: /*sendRoutingInfoForSM*/
offset=dissect_gsm_map_RoutingInfoForSMRes(FALSE, tvb, offset, pinfo, tree, -1);
@@ -1267,11 +1273,11 @@ void proto_register_gsm_map(void) {
FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_p_values), 0x04,
"P bit", HFILL }},
{ &hf_gsm_map_Ss_Status_r_bit,
- { "R bit", "ss_status_r_bit",
+ { "R bit", "gsm_map.ss_status_r_bit",
FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_r_values), 0x02,
"R bit", HFILL }},
{ &hf_gsm_map_Ss_Status_a_bit,
- { "A bit", "ss_status_a_bit",
+ { "A bit", "gsm_map.ss_status_a_bit",
FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_a_values), 0x01,
"A bit", HFILL }},