diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2012-08-21 15:14:50 +0000 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2012-08-21 15:14:50 +0000 |
commit | f2fbb79c49419553c9992ec17db663008d6d5ead (patch) | |
tree | cb6b25709c3d06781e02b4cf8997c9636454e5c6 /asn1 | |
parent | 9f3c1253f78c826fff0c04e6c5a1668d3e1499f6 (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.asn | 2 | ||||
-rw-r--r-- | asn1/gsm_map/gsm_map.cnf | 25 | ||||
-rw-r--r-- | asn1/gsm_map/packet-gsm_map-template.c | 33 |
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 = ¶meter_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" }; |