diff options
author | Lars Sundström <lars.x.sundstrom@ericsson.com> | 2015-03-16 11:14:15 +0100 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2015-03-16 15:46:36 +0000 |
commit | e32832441c2eb8e47ba45c425837123b83895446 (patch) | |
tree | 08425576ad11af605a32a715c665ee70aff054a8 | |
parent | 2baa8aa0dbbf4882878f51264d128e8797d8097c (diff) |
Add dissection of E-UTRAN Description in Cell selection indicator after
release of all TCH and SDCCH IE
Change-Id: I552c436fe8bea5971863fd7ba023a86aa08f2f0c
Reviewed-on: https://code.wireshark.org/review/7700
Petri-Dish: Michael Mann <mmann78@netscape.net>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r-- | epan/dissectors/packet-gsm_a_rr.c | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/epan/dissectors/packet-gsm_a_rr.c b/epan/dissectors/packet-gsm_a_rr.c index 85883152f8..60e7ffb69d 100644 --- a/epan/dissectors/packet-gsm_a_rr.c +++ b/epan/dissectors/packet-gsm_a_rr.c @@ -8,6 +8,11 @@ * and other enhancements and fixes. * Copyright 2005 - 2006, Anders Broman [AT] ericsson.com * + * Added Dissection of E-UTRAN Description struct in + * Cell selection indicator after release of all TCH and SDCCH IE + * Lars Sundstrom X [AT] ericsson.com and Kjell Jansson [AT] ericsson.com + * On Behalf of Ericsson AB + * * Title 3GPP Other * * Reference [3] @@ -366,6 +371,7 @@ const value_string gsm_rr_rest_octets_elem_strings[] = { { 0, "Second Part Packet Assignment" }, { 0, "REPORTING QUANTITY" }, { 0, "E-UTRAN Measurement Report" }, + { 0, "E-UTRAN Description" }, { 0, NULL } }; @@ -970,6 +976,7 @@ static int hf_gsm_a_rr_eutran_fdd_reporting_offset_present = -1; static int hf_gsm_a_rr_repeated_csg_psc_split_struct = -1; static int hf_gsm_a_rr_gprs_eutran_measurement_parameters_description = -1; static int hf_gsm_a_rr_tdd_parameters = -1; +static int hf_gsm_a_rr_repeat_eutran_desc = -1; /* gsm_rr_csn_HL_flag() fields */ static int hf_gsm_a_rr_selection_parameters = -1; @@ -1061,6 +1068,7 @@ static int hf_gsm_a_rr_eutran_priority = -1; static int hf_gsm_a_rr_thresh_eutran_high = -1; static int hf_gsm_a_rr_thresh_eutran_low = -1; static int hf_gsm_a_rr_eutran_qrxlevmin = -1; +static int hf_gsm_a_rr_eutran_pcid_present = -1; static int hf_gsm_a_rr_eutran_pcid = -1; static int hf_gsm_a_rr_eutran_pcid_bitmap_group = -1; static int hf_gsm_a_rr_eutran_pcid_pattern_length = -1; @@ -1157,6 +1165,7 @@ typedef enum DE_RR_REST_OCTETS_SECOND_PART_PACKET_ASSIGNMENT, DE_RR_REST_OCTETS_REPORTING_QUANTITY, DE_RR_REST_OCTETS_EUTRAN_MEASUREMENT_REPORT, + DE_RR_REST_OCTETS_EUTRAN_DESC, DE_RR_REST_OCTETS_NONE } rr_rest_octets_elem_idx_t; @@ -1206,6 +1215,8 @@ static const true_false_string tfs_3g_early_classmark_sending_restriction = {"Th "Neither UTRAN, CDMA2000 nor GERAN IU MODE CLASSMARK CHANGE message shall be sent with the Early classmark sending"}; static const true_false_string tfs_supported_in_serving_cell_not_supported_in_serving_cell = {"Supported in Serving cell", "Not Supported in Serving cell"}; +static gint de_rr_eutran_not_allowed_cells(tvbuff_t *tvb, proto_tree *tree, gint bit_offset); + /* this function is used for dissecting the H/L presence flags in CSN.1 coded IEs" If truncation ( 44.018 section 8.9) is allowed, truncation_length is set to the actual bit length of the CSN.1 string, otherwise it is set to 0 */ @@ -1843,6 +1854,41 @@ de_rr_cell_select_indic(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, } proto_item_set_len(item,((bit_offset>>3) - (bit_offset_sav>>3) + 1)); break; + case 3: /* E-UTRAN Description */ + + bit_offset_sav = bit_offset; + subtree = proto_tree_add_subtree(tree, tvb, bit_offset>>3, -1, ett_gsm_rr_rest_octets_elem[DE_RR_REST_OCTETS_EUTRAN_DESC], &item, + gsm_rr_rest_octets_elem_strings[DE_RR_REST_OCTETS_EUTRAN_DESC].strptr); + + while (gsm_rr_csn_flag(tvb, subtree, bit_offset++, hf_gsm_a_rr_repeat_eutran_desc)) + { + /* EARFCN */ + proto_tree_add_bits_item(subtree, hf_gsm_a_rr_eutran_earfcn, tvb, bit_offset, 16, ENC_BIG_ENDIAN); + bit_offset += 16; + + /* Measurement Bandwidth */ + if (gsm_rr_csn_flag(tvb, subtree, bit_offset++, hf_gsm_a_rr_eutran_measurement_bandwidth_present)) + { + proto_tree_add_bits_item(subtree, hf_gsm_a_rr_eutran_measurement_bandwidth, tvb, bit_offset, 3, ENC_BIG_ENDIAN); + bit_offset += 3; + } + + /* Repeated E-UTRAN Not Allowed Cells */ + while (gsm_rr_csn_flag(tvb, subtree, bit_offset++, hf_gsm_a_rr_repeated_eutran_not_allowed_cells)) + { + bit_offset += de_rr_eutran_not_allowed_cells(tvb, subtree, bit_offset); + } + + /* TARGET PCID */ + if (gsm_rr_csn_flag(tvb, tree, bit_offset++, hf_gsm_a_rr_eutran_pcid_present)) + { + proto_tree_add_bits_item(tree, hf_gsm_a_rr_eutran_pcid, tvb, bit_offset, 9, ENC_BIG_ENDIAN); + bit_offset += 9; + } + } + proto_item_set_len(item,((bit_offset>>3) - (bit_offset_sav>>3) + 1)); + break; + default: break; } @@ -8770,7 +8816,7 @@ dtap_rr_ch_rel(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 /* 62 Cell Channel Description Cell Channel Description 10.5.2.1b O TV 17 */ ELEM_OPT_TV(0x62, GSM_A_PDU_TYPE_RR, DE_RR_CELL_CH_DSC, NULL); - /* 62 Cell selection indicator after release of all TCH and SDCCH 10.5.2.1e O TLV 4-? */ + /* 77 Cell selection indicator after release of all TCH and SDCCH 10.5.2.1e O TLV 4-? */ ELEM_OPT_TLV(0x77, GSM_A_PDU_TYPE_RR, DE_RR_CELL_SELECT_INDIC, NULL); EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_gsm_a_rr_extraneous_data); @@ -12934,6 +12980,7 @@ proto_register_gsm_a_rr(void) { &hf_gsm_a_rr_eutran_qrxlevmin_present, { "E-UTRAN Qrxlev Min", "gsm_a.rr.eutran_qrxlevmin.present", FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x00, NULL, HFILL }}, { &hf_gsm_a_rr_repeated_earfcn, { "Repeated EARFCN", "gsm_a.rr.repeated_earfcn", FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x00, NULL, HFILL }}, { &hf_gsm_a_rr_repeated_pcid, { "Repeated PCID", "gsm_a.rr.repeated_pcid", FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x00, NULL, HFILL }}, + { &hf_gsm_a_rr_eutran_pcid_present, { "TARGET PCID", "gsm_a.rr.repeated_eutran_pcid_present", FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x00, NULL, HFILL }}, { &hf_gsm_a_rr_eutran_pcid_bitmap_group_present, { "PCID Bitmap Group", "gsm_a.rr.eutran_pcid_bitmap_group.present", FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x00, NULL, HFILL }}, { &hf_gsm_a_rr_pcid_pattern_present, { "PCID Pattern", "gsm_a.rr.pcid_pattern.present", FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x00, NULL, HFILL }}, { &hf_gsm_a_rr_repeated_eutran_frequency_index, { "Repeated E-UTRAN Frequency Index", "gsm_a.rr.repeated_eutran_frequency_index", FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x00, NULL, HFILL }}, @@ -13027,6 +13074,7 @@ proto_register_gsm_a_rr(void) { &hf_gsm_a_rr_repeated_invalid_bsic_information, { "Repeated Invalid BSIC Information", "gsm_a.rr.repeated_invalid_bsic_information", FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x00, NULL, HFILL }}, { &hf_gsm_a_rr_bitmap_type_reporting, { "Bitmap Type Reporting", "gsm_a.rr.bitmap_type_reporting", FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x00, NULL, HFILL }}, { &hf_gsm_a_rr_e_utran_measurement_report, { "E-UTRAN Measurement Report", "gsm_a.rr.e_utran_measurement_report", FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x00, NULL, HFILL }}, + { &hf_gsm_a_rr_repeat_eutran_desc, { "Repeating E-UTRAN Description struct", "gsm_a.rr.repeat_eutran_desc", FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x00, NULL, HFILL }}, /* gsm_rr_csn_HL_flag() fields */ { &hf_gsm_a_rr_selection_parameters, { "Selection Parameters", "gsm_a.rr.selection_parameters", FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_not_present), 0x00, NULL, HFILL }}, |