aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2012-08-21 15:14:50 +0000
committerPascal Quantin <pascal.quantin@gmail.com>2012-08-21 15:14:50 +0000
commitf2fbb79c49419553c9992ec17db663008d6d5ead (patch)
treecb6b25709c3d06781e02b4cf8997c9636454e5c6 /asn1
parent9f3c1253f78c826fff0c04e6c5a1668d3e1499f6 (diff)
Add dissection of locationInformation IE in Ericsson proprietary extension
svn path=/trunk/; revision=44605
Diffstat (limited to 'asn1')
-rw-r--r--asn1/gsm_map/Ericsson.asn2
-rw-r--r--asn1/gsm_map/gsm_map.cnf25
-rw-r--r--asn1/gsm_map/packet-gsm_map-template.c33
3 files changed, 57 insertions, 3 deletions
diff --git a/asn1/gsm_map/Ericsson.asn b/asn1/gsm_map/Ericsson.asn
index 772c4fd35d..858068c67c 100644
--- a/asn1/gsm_map/Ericsson.asn
+++ b/asn1/gsm_map/Ericsson.asn
@@ -35,7 +35,7 @@ EnhancedCheckIMEI-Arg ::= SEQUENCE {
imei IMEI,
requestedEquipmentInfo RequestedEquipmentInfo OPTIONAL,
imsi [PRIVATE 1] IMSI OPTIONAL,
- locationInformat [PRIVATE 3] OCTET STRING (SIZE (1..7)) OPTIONAL,
+ locationInformation [PRIVATE 3] OCTET STRING (SIZE (1..7)) OPTIONAL,
extensionContainer ExtensionContainer OPTIONAL,
...}
diff --git a/asn1/gsm_map/gsm_map.cnf b/asn1/gsm_map/gsm_map.cnf
index 6ad0b24955..703147289b 100644
--- a/asn1/gsm_map/gsm_map.cnf
+++ b/asn1/gsm_map/gsm_map.cnf
@@ -915,6 +915,31 @@ if (!actx->value_ptr)
if ((na == 3) && (np==1))/*International Number & E164*/
dissect_e164_cc(tvb, tree, 1, TRUE);
+#.FN_BODY EnhancedCheckIMEI-Arg/locationInformation VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+ proto_tree *subtree;
+ guint8 rat;
+%(DEFAULT_BODY)s
+ if (parameter_tvb) {
+ subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ericsson_locationInformation);
+ rat = tvb_get_guint8(parameter_tvb, 0);
+ proto_tree_add_uint(subtree, hf_gsm_map_ericsson_locationInformation_rat, parameter_tvb, 0, 1, rat);
+ switch (rat) {
+ case 0:
+ /* GSM */
+ proto_tree_add_item(subtree, hf_gsm_map_ericsson_locationInformation_lac, parameter_tvb, 1, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_map_ericsson_locationInformation_ci, parameter_tvb, 3, 2, ENC_BIG_ENDIAN);
+ break;
+ case 1:
+ /* UMTS */
+ proto_tree_add_item(subtree, hf_gsm_map_ericsson_locationInformation_lac, parameter_tvb, 1, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_map_ericsson_locationInformation_sac, parameter_tvb, 3, 2, ENC_BIG_ENDIAN);
+ break;
+ default:
+ break;
+ }
+ }
+
#----------------------------------------------------------------------------------------
#.TYPE_ATTR
SS-Code TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ssCode_vals)
diff --git a/asn1/gsm_map/packet-gsm_map-template.c b/asn1/gsm_map/packet-gsm_map-template.c
index 1c87f534ea..81773a31c0 100644
--- a/asn1/gsm_map/packet-gsm_map-template.c
+++ b/asn1/gsm_map/packet-gsm_map-template.c
@@ -146,6 +146,10 @@ static int hf_gsm_map_locationnumber_npi = -1;
static int hf_gsm_map_locationnumber_apri = -1;
static int hf_gsm_map_locationnumber_screening_ind = -1;
static int hf_gsm_map_locationnumber_digits = -1;
+static int hf_gsm_map_ericsson_locationInformation_rat = -1;
+static int hf_gsm_map_ericsson_locationInformation_lac = -1;
+static int hf_gsm_map_ericsson_locationInformation_ci = -1;
+static int hf_gsm_map_ericsson_locationInformation_sac = -1;
#include "packet-gsm_map-hf.c"
@@ -174,6 +178,7 @@ static gint ett_gsm_map_GlobalCellId = -1;
static gint ett_gsm_map_GeographicalInformation = -1;
static gint ett_gsm_map_apn_str = -1;
static gint ett_gsm_map_LocationNumber = -1;
+static gint ett_gsm_map_ericsson_locationInformation = -1;
#include "packet-gsm_map-ett.c"
@@ -247,6 +252,13 @@ static const value_string gsm_map_disc_par_vals[] = {
{ 0, NULL }
};
+static const value_string gsm_map_ericsson_locationInformation_rat_vals[] = {
+ { 0x0, "GSM" },
+ { 0x1, "UMTS" },
+ { 0x2, "LTE" },
+ { 0xf, "No information" },
+ { 0, NULL }
+};
/* ITU-T Q.763 (12/1999)
* 3.30 Location number
@@ -2573,6 +2585,22 @@ void proto_register_gsm_map(void) {
{ "Address digits", "gsm_map.locationnumber.digits",
FT_STRING, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_gsm_map_ericsson_locationInformation_rat,
+ { "RAT", "gsm_map.ericsson.locationInformation.rat",
+ FT_UINT8, BASE_DEC, VALS(gsm_map_ericsson_locationInformation_rat_vals), 0,
+ "Radio Access Technology", HFILL }},
+ { &hf_gsm_map_ericsson_locationInformation_lac,
+ { "LAC", "gsm_map.ericsson.locationInformation.lac",
+ FT_UINT16, BASE_DEC_HEX, NULL, 0,
+ "Location Area Code", HFILL }},
+ { &hf_gsm_map_ericsson_locationInformation_ci,
+ { "CI", "gsm_map.ericsson.locationInformation.ci",
+ FT_UINT16, BASE_DEC_HEX, NULL, 0,
+ "Cell Identity", HFILL }},
+ { &hf_gsm_map_ericsson_locationInformation_sac,
+ { "SAC", "gsm_map.ericsson.locationInformation.sac",
+ FT_UINT16, BASE_DEC_HEX, NULL, 0,
+ "Service Area Code", HFILL }},
#include "packet-gsm_map-hfarr.c"
};
@@ -2601,8 +2629,9 @@ void proto_register_gsm_map(void) {
&ett_gsm_map_cbs_data_coding,
&ett_gsm_map_GlobalCellId,
&ett_gsm_map_GeographicalInformation,
- &ett_gsm_map_apn_str,
- &ett_gsm_map_LocationNumber,
+ &ett_gsm_map_apn_str,
+ &ett_gsm_map_LocationNumber,
+ &ett_gsm_map_ericsson_locationInformation,
#include "packet-gsm_map-ettarr.c"
};