diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2017-09-25 22:26:53 +0200 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2017-09-25 21:32:59 +0000 |
commit | 4efa11528ee924dbd910c20f001eb07c52ffec6d (patch) | |
tree | 0d395c37331667ff2e2a0e728b5f39fdd3c26b7b | |
parent | 8615081a0910797a8dfab5ea60583f8f5da8d020 (diff) |
3GPP NAS: upgrade dissector to v14.5.0
Change-Id: Ibf45c6b5930ee122004afc8d2ac84a751491f3a4
Reviewed-on: https://code.wireshark.org/review/23735
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
-rw-r--r-- | epan/dissectors/packet-gsm_a_dtap.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-gsm_a_gm.c | 113 |
2 files changed, 109 insertions, 6 deletions
diff --git a/epan/dissectors/packet-gsm_a_dtap.c b/epan/dissectors/packet-gsm_a_dtap.c index 92dbadbf78..93b257b162 100644 --- a/epan/dissectors/packet-gsm_a_dtap.c +++ b/epan/dissectors/packet-gsm_a_dtap.c @@ -5330,6 +5330,8 @@ dtap_mm_loc_upd_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui ELEM_OPT_TLV(0x35, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - Per MS T3212"); + ELEM_OPT_TV_SHORT(0xD0, GSM_A_PDU_TYPE_GM, DE_NON_3GPP_NW_PROV_POL, NULL); + EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_gsm_a_dtap_extraneous_data); } diff --git a/epan/dissectors/packet-gsm_a_gm.c b/epan/dissectors/packet-gsm_a_gm.c index 8e4fc57d70..a45467befa 100644 --- a/epan/dissectors/packet-gsm_a_gm.c +++ b/epan/dissectors/packet-gsm_a_gm.c @@ -63,7 +63,7 @@ * Mobile radio interface Layer 3 specification; * Core network protocols; * Stage 3 - * (3GPP TS 24.008 version 14.4.0 Release 14) + * (3GPP TS 24.008 version 14.5.0 Release 14) * * Wireshark - Network traffic analyzer * By Gerald Combs <gerald@wireshark.org> @@ -352,12 +352,16 @@ static int hf_gsm_a_gm_pco_pid = -1; static int hf_gsm_a_gm_pco_app_spec_info = -1; static int hf_gsm_a_gm_type_of_identity = -1; int hf_gsm_a_gm_rac = -1; +static int hf_gsm_a_gm_mta_e = -1; +static int hf_gsm_a_gm_mta_r = -1; static int hf_gsm_a_gm_apc = -1; static int hf_gsm_a_gm_otd_a = -1; static int hf_gsm_a_gm_otd_b = -1; static int hf_gsm_a_gm_gps_a = -1; static int hf_gsm_a_gm_gps_b = -1; static int hf_gsm_a_gm_gps_c = -1; +static int hf_gsm_a_gm_motd = -1; +static int hf_gsm_a_gm_mta_a = -1; static int hf_gsm_a_gm_lcs_molr = -1; static int hf_gsm_a_gm_mbms = -1; static int hf_gsm_a_gm_ims_vops = -1; @@ -482,7 +486,9 @@ static int hf_gsm_a_gm_rac_dlmc_max_nb_dl_ts = -1; static int hf_gsm_a_gm_rac_dlmc_max_nb_dl_carriers = -1; static int hf_gsm_a_gm_rac_ext_tsc_set_cap_support = -1; static int hf_gsm_a_gm_rac_ext_earfcn_value_range = -1; -static int hf_gsm_a_gm_rac_ext_ec_pch_mon_support = -1; +static int hf_gsm_a_gm_rac_ec_pch_mon_support = -1; +static int hf_gsm_a_gm_rac_ms_sync_accuracy = -1; +static int hf_gsm_a_gm_rac_ext_ec_ul_cov_enh_support = -1; static int hf_gsm_a_sm_ti_flag = -1; static int hf_gsm_a_sm_ext = -1; @@ -3254,7 +3260,45 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui */ bits_needed = 2; GET_DATA; - proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_ext_ec_pch_mon_support, tvb, bit_offset, 2, ENC_BIG_ENDIAN); + proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_ec_pch_mon_support, tvb, bit_offset, 2, ENC_BIG_ENDIAN); + bit_offset += bits_needed; + curr_bits_length -= bits_needed; + oct <<= bits_needed; + bits_in_oct -= bits_needed; + + /* + * Release 14 + */ + + /* + * MS Sync Accuracy + */ + bits_needed = 1; + GET_DATA; + if ((oct>>(32-bits_needed)) == 0) + { + bit_offset += bits_needed; + curr_bits_length -= bits_needed; + oct <<= bits_needed; + bits_in_oct -= bits_needed; + } + else + { + bits_needed = 4; + GET_DATA; + proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_ms_sync_accuracy, tvb, bit_offset, 4, ENC_BIG_ENDIAN); + bit_offset += bits_needed; + curr_bits_length -= bits_needed; + oct <<= bits_needed; + bits_in_oct -= bits_needed; + } + + /* + * EC uplink coverage enhancement support + */ + bits_needed = 1; + GET_DATA; + proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_ext_ec_ul_cov_enh_support, tvb, bit_offset, 1, ENC_BIG_ENDIAN); bit_offset += bits_needed; curr_bits_length -= bits_needed; oct <<= bits_needed; @@ -3535,6 +3579,16 @@ de_gmm_service_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui /* * [9] 10.5.5.22 PS LCS Capability */ +static const true_false_string gsm_a_gm_mta_e_vals = { + "Multilateration Timing Advance using Extended Access Burst method supported", + "Multilateration Timing Advance using Extended Access Burst method not supported" +}; + +static const true_false_string gsm_a_gm_mta_r_vals = { + "Multilateration Timing Advance using RLC data block method supported", + "Multilateration Timing Advance using RLC data block method not supported" +}; + static const true_false_string gsm_a_gm_apc_vals = { "Additional Positioning Capabilities which can be retrieved by RRLP are supported", "Additional Positioning Capabilities which can be retrieved by RRLP are not supported" @@ -3565,13 +3619,24 @@ static const true_false_string gsm_a_gm_gps_c_vals = { "Conventional GPS not supported" }; +static const true_false_string gsm_a_gm_motd_vals = { + "Multilateration Observed Time Difference supported", + "Multilateration Observed Time Difference not supported" +}; + +static const true_false_string gsm_a_gm_mta_a_vals = { + "Multilateration Timing Advance using Access Burst method supported", + "Multilateration Timing Advance using Access Burst method not supported" +}; + static guint16 de_gmm_ps_lcs_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) { guint32 curr_offset; curr_offset = offset; - proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, curr_offset << 3, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_a_gm_mta_e, tvb, curr_offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_a_gm_mta_r, tvb, curr_offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(tree, hf_gsm_a_gm_apc, tvb, curr_offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(tree, hf_gsm_a_gm_otd_a, tvb, curr_offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(tree, hf_gsm_a_gm_otd_b, tvb, curr_offset, 1, ENC_BIG_ENDIAN); @@ -3581,6 +3646,12 @@ de_gmm_ps_lcs_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o curr_offset++; + if (len > 2) { + proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, curr_offset << 3, 6, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_a_gm_motd, tvb, curr_offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_a_gm_mta_a, tvb, curr_offset, 1, ENC_BIG_ENDIAN); + } + EXTRANEOUS_DATA_CHECK(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data); return (curr_offset - offset); @@ -8203,6 +8274,16 @@ proto_register_gsm_a_gm(void) FT_UINT8, BASE_HEX_DEC, NULL, 0x00, NULL, HFILL } }, + { &hf_gsm_a_gm_mta_e, + { "MTA-E", "gsm_a.gm.gmm.mta_e", + FT_BOOLEAN, 8, TFS(&gsm_a_gm_mta_e_vals), 0x80, + NULL, HFILL } + }, + { &hf_gsm_a_gm_mta_r, + { "MTA-R", "gsm_a.gm.gmm.mta_r", + FT_BOOLEAN, 8, TFS(&gsm_a_gm_mta_r_vals), 0x40, + NULL, HFILL } + }, { &hf_gsm_a_gm_apc, { "APC", "gsm_a.gm.gmm.apc", FT_BOOLEAN, 8, TFS(&gsm_a_gm_apc_vals), 0x20, @@ -8233,6 +8314,16 @@ proto_register_gsm_a_gm(void) FT_BOOLEAN, 8, TFS(&gsm_a_gm_gps_c_vals), 0x01, NULL, HFILL } }, + { &hf_gsm_a_gm_motd, + { "MOTD", "gsm_a.gm.gmm.motd", + FT_BOOLEAN, 8, TFS(&gsm_a_gm_motd_vals), 0x02, + NULL, HFILL } + }, + { &hf_gsm_a_gm_mta_a, + { "MTA-A", "gsm_a.gm.gmm.mta_a", + FT_BOOLEAN, 8, TFS(&gsm_a_gm_mta_a_vals), 0x01, + NULL, HFILL } + }, { &hf_gsm_a_gm_lcs_molr, { "LCS-MOLR", "gsm_a.gm.gmm.lcs_molr", FT_BOOLEAN, 8, TFS(&gsm_a_gm_lcs_molr_value), 0x08, @@ -9003,9 +9094,19 @@ proto_register_gsm_a_gm(void) FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, NULL, HFILL } }, - { &hf_gsm_a_gm_rac_ext_ec_pch_mon_support, + { &hf_gsm_a_gm_rac_ec_pch_mon_support, { "(EC-)PCH monitoring support", "gsm_a.gm.gmm.rac.ec_pch_mon_support", - FT_UINT8, BASE_NONE, VALS(gsm_a_gm_ec_pch_mon_support_vals), 0x0, + FT_UINT8, BASE_DEC, VALS(gsm_a_gm_ec_pch_mon_support_vals), 0x0, + NULL, HFILL } + }, + { &hf_gsm_a_gm_rac_ms_sync_accuracy, + { "MS Sync Accuracy", "gsm_a.gm.gmm.rac.ms_sync_accuracy", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_gsm_a_gm_rac_ext_ec_ul_cov_enh_support, + { "EC uplink coverage enhancement support", "gsm_a.gm.gmm.rac.ec_ul_cov_enh_support", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, NULL, HFILL } }, { &hf_gsm_a_sm_ti_flag, |