summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-09-19 04:14:53 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-09-19 04:14:53 +0000
commita86c5f7cae7ec9a3398300555a0b644689d946a1 (patch)
tree39fe4b107c71174fd1e8a8ceb9a4d2aa14116248 /epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c
parentReleasing progress-linux version 4.2.6-1~progress7.99u1. (diff)
downloadwireshark-a86c5f7cae7ec9a3398300555a0b644689d946a1.tar.xz
wireshark-a86c5f7cae7ec9a3398300555a0b644689d946a1.zip
Merging upstream version 4.4.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c')
-rw-r--r--epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c855
1 files changed, 484 insertions, 371 deletions
diff --git a/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c b/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c
index 72d8992e..a391b9cf 100644
--- a/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c
+++ b/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c
@@ -1,9 +1,9 @@
/* packet-lte-rrc-template.c
* Routines for Evolved Universal Terrestrial Radio Access (E-UTRA);
* Radio Resource Control (RRC) protocol specification
- * (3GPP TS 36.331 V17.5.0 Release 17) packet dissection
+ * (3GPP TS 36.331 V18.2.0 Release 18) packet dissection
* Copyright 2008, Vincent Helfre
- * Copyright 2009-2023, Pascal Quantin
+ * Copyright 2009-2024, Pascal Quantin
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
@@ -25,9 +25,12 @@
#include <epan/exceptions.h>
#include <epan/show_exception.h>
#include <epan/proto_data.h>
+#include <epan/tfs.h>
+#include <epan/unit_strings.h>
#include <wsutil/str_util.h>
#include <wsutil/epochs.h>
+#include <wsutil/array.h>
#include "packet-per.h"
#include "packet-rrc.h"
@@ -48,24 +51,28 @@
void proto_register_lte_rrc(void);
void proto_reg_handoff_lte_rrc(void);
-static dissector_handle_t nas_eps_handle = NULL;
-static dissector_handle_t nas_5gs_handle = NULL;
-static dissector_handle_t rrc_irat_ho_to_utran_cmd_handle = NULL;
-static dissector_handle_t rrc_sys_info_cont_handle = NULL;
-static dissector_handle_t gsm_a_dtap_handle = NULL;
-static dissector_handle_t gsm_rlcmac_dl_handle = NULL;
-static dissector_handle_t nr_rrc_reconf_handle = NULL;
+static dissector_handle_t nas_eps_handle;
+static dissector_handle_t nas_5gs_handle;
+static dissector_handle_t rrc_irat_ho_to_utran_cmd_handle;
+static dissector_handle_t rrc_sys_info_cont_handle;
+static dissector_handle_t gsm_a_dtap_handle;
+static dissector_handle_t gsm_rlcmac_dl_handle;
+static dissector_handle_t nr_rrc_reconf_handle;
static dissector_handle_t lte_rrc_conn_reconf_handle;
static dissector_handle_t lte_rrc_dl_ccch_handle;
-static wmem_map_t *lte_rrc_etws_cmas_dcs_hash = NULL;
+static wmem_map_t *lte_rrc_etws_cmas_dcs_hash;
/* Keep track of where/how the System Info value has changed */
-static wmem_map_t *lte_rrc_system_info_value_changed_hash = NULL;
-static guint8 system_info_value_current;
-static gboolean system_info_value_current_set;
+static wmem_map_t *lte_rrc_system_info_value_changed_hash;
+static uint8_t system_info_value_current;
+static bool system_info_value_current_set;
-static gboolean lte_rrc_nas_in_root_tree;
+static wmem_map_t *lte_rrc_dcch_segment_ueid_count_hash;
+static wmem_tree_t *lte_rrc_dcch_segment_id_tree;
+
+static bool lte_rrc_nas_in_root_tree;
+static bool lte_rrc_reassemble_dcch_segments;
extern int proto_mac_lte;
extern int proto_rlc_lte;
@@ -76,275 +83,289 @@ extern int proto_pdcp_lte;
#include "packet-lte-rrc-val.h"
/* Initialize the protocol and registered fields */
-static int proto_lte_rrc = -1;
+static int proto_lte_rrc;
#include "packet-lte-rrc-hf.c"
-static int hf_lte_rrc_eutra_cap_feat_group_ind_1 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_2 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_3 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_4 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_5 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_6 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_7 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_8 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_9 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_10 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_11 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_12 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_13 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_14 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_15 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_16 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_17 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_18 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_19 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_20 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_21 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_22 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_23 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_24 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_25 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_26 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_27 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_28 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_29 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_30 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_31 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_32 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_33 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_34 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_35 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_36 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_37 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_38 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_39 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_40 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_41 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_42 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_43 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_44 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_45 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_46 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_47 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_48 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_49 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_50 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_51 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_52 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_53 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_54 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_55 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_56 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_57 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_58 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_59 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_60 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_61 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_62 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_63 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_64 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_101 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_102 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_103 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_104 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_105 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_106 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_107 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_108 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_109 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_110 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_111 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_112 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_113 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_114 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_115 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_116 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_117 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_118 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_119 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_120 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_121 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_122 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_123 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_124 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_125 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_126 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_127 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_128 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_129 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_130 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_131 = -1;
-static int hf_lte_rrc_eutra_cap_feat_group_ind_132 = -1;
-static int hf_lte_rrc_serialNumber_gs = -1;
-static int hf_lte_rrc_serialNumber_msg_code = -1;
-static int hf_lte_rrc_serialNumber_upd_nb = -1;
-static int hf_lte_rrc_warningType_value = -1;
-static int hf_lte_rrc_warningType_emergency_user_alert = -1;
-static int hf_lte_rrc_warningType_popup = -1;
-static int hf_lte_rrc_warningMessageSegment_nb_pages = -1;
-static int hf_lte_rrc_warningMessageSegment_decoded_page = -1;
-static int hf_lte_rrc_interBandTDD_CA_WithDifferentConfig_bit1 = -1;
-static int hf_lte_rrc_interBandTDD_CA_WithDifferentConfig_bit2 = -1;
-static int hf_lte_rrc_tdd_FDD_CA_PCellDuplex_r12_bit1 = -1;
-static int hf_lte_rrc_tdd_FDD_CA_PCellDuplex_r12_bit2 = -1;
-static int hf_lte_rrc_aperiodicCSI_Reporting_r13_bit1 = -1;
-static int hf_lte_rrc_aperiodicCSI_Reporting_r13_bit2 = -1;
-static int hf_lte_rrc_codebook_HARQ_ACK_r13_bit1 = -1;
-static int hf_lte_rrc_codebook_HARQ_ACK_r13_bit2 = -1;
-static int hf_lte_rrc_sr_config_periodicity = -1;
-static int hf_lte_rrc_sr_config_subframe_offset = -1;
-static int hf_lte_rrc_cdma_time = -1;
-static int hf_lte_rrc_utc_time = -1;
-static int hf_lte_rrc_local_time = -1;
-static int hf_lte_rrc_absolute_time = -1;
-static int hf_lte_rrc_transmissionModeList_r12_tm1 = -1;
-static int hf_lte_rrc_transmissionModeList_r12_tm2 = -1;
-static int hf_lte_rrc_transmissionModeList_r12_tm3 = -1;
-static int hf_lte_rrc_transmissionModeList_r12_tm4 = -1;
-static int hf_lte_rrc_transmissionModeList_r12_tm6 = -1;
-static int hf_lte_rrc_transmissionModeList_r12_tm8 = -1;
-static int hf_lte_rrc_transmissionModeList_r12_tm9 = -1;
-static int hf_lte_rrc_transmissionModeList_r12_tm10 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_0 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_1 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_2 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_3 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_4 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_5 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_6 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_7 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_8 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_9 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_10 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_11 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_12 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_13 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_14 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_15 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_16 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_17 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_18 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_19 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_20 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_21 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_22 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_23 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_24 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_25 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_26 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_27 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_28 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_29 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_30 = -1;
-static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_31 = -1;
-static int hf_lte_rrc_sib11_fragments = -1;
-static int hf_lte_rrc_sib11_fragment = -1;
-static int hf_lte_rrc_sib11_fragment_overlap = -1;
-static int hf_lte_rrc_sib11_fragment_overlap_conflict = -1;
-static int hf_lte_rrc_sib11_fragment_multiple_tails = -1;
-static int hf_lte_rrc_sib11_fragment_too_long_fragment = -1;
-static int hf_lte_rrc_sib11_fragment_error = -1;
-static int hf_lte_rrc_sib11_fragment_count = -1;
-static int hf_lte_rrc_sib11_reassembled_in = -1;
-static int hf_lte_rrc_sib11_reassembled_length = -1;
-static int hf_lte_rrc_sib11_reassembled_data = -1;
-static int hf_lte_rrc_sib12_fragments = -1;
-static int hf_lte_rrc_sib12_fragment = -1;
-static int hf_lte_rrc_sib12_fragment_overlap = -1;
-static int hf_lte_rrc_sib12_fragment_overlap_conflict = -1;
-static int hf_lte_rrc_sib12_fragment_multiple_tails = -1;
-static int hf_lte_rrc_sib12_fragment_too_long_fragment = -1;
-static int hf_lte_rrc_sib12_fragment_error = -1;
-static int hf_lte_rrc_sib12_fragment_count = -1;
-static int hf_lte_rrc_sib12_reassembled_in = -1;
-static int hf_lte_rrc_sib12_reassembled_length = -1;
-static int hf_lte_rrc_sib12_reassembled_data = -1;
-static int hf_lte_rrc_measGapPatterns_r15_bit1 = -1;
-static int hf_lte_rrc_measGapPatterns_r15_bit2 = -1;
-static int hf_lte_rrc_measGapPatterns_r15_bit3 = -1;
-static int hf_lte_rrc_measGapPatterns_r15_bit4 = -1;
-static int hf_lte_rrc_measGapPatterns_r15_bit5 = -1;
-static int hf_lte_rrc_measGapPatterns_r15_bit6 = -1;
-static int hf_lte_rrc_measGapPatterns_r15_bit7 = -1;
-static int hf_lte_rrc_measGapPatterns_r15_bit8 = -1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_1;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_2;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_3;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_4;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_5;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_6;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_7;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_8;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_9;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_10;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_11;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_12;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_13;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_14;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_15;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_16;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_17;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_18;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_19;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_20;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_21;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_22;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_23;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_24;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_25;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_26;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_27;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_28;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_29;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_30;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_31;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_32;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_33;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_34;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_35;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_36;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_37;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_38;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_39;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_40;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_41;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_42;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_43;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_44;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_45;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_46;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_47;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_48;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_49;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_50;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_51;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_52;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_53;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_54;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_55;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_56;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_57;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_58;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_59;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_60;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_61;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_62;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_63;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_64;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_101;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_102;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_103;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_104;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_105;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_106;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_107;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_108;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_109;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_110;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_111;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_112;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_113;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_114;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_115;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_116;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_117;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_118;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_119;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_120;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_121;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_122;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_123;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_124;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_125;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_126;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_127;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_128;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_129;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_130;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_131;
+static int hf_lte_rrc_eutra_cap_feat_group_ind_132;
+static int hf_lte_rrc_serialNumber_gs;
+static int hf_lte_rrc_serialNumber_msg_code;
+static int hf_lte_rrc_serialNumber_upd_nb;
+static int hf_lte_rrc_warningType_value;
+static int hf_lte_rrc_warningType_emergency_user_alert;
+static int hf_lte_rrc_warningType_popup;
+static int hf_lte_rrc_warningMessageSegment_nb_pages;
+static int hf_lte_rrc_warningMessageSegment_decoded_page;
+static int hf_lte_rrc_interBandTDD_CA_WithDifferentConfig_bit1;
+static int hf_lte_rrc_interBandTDD_CA_WithDifferentConfig_bit2;
+static int hf_lte_rrc_tdd_FDD_CA_PCellDuplex_r12_bit1;
+static int hf_lte_rrc_tdd_FDD_CA_PCellDuplex_r12_bit2;
+static int hf_lte_rrc_aperiodicCSI_Reporting_r13_bit1;
+static int hf_lte_rrc_aperiodicCSI_Reporting_r13_bit2;
+static int hf_lte_rrc_codebook_HARQ_ACK_r13_bit1;
+static int hf_lte_rrc_codebook_HARQ_ACK_r13_bit2;
+static int hf_lte_rrc_sr_config_periodicity;
+static int hf_lte_rrc_sr_config_subframe_offset;
+static int hf_lte_rrc_cdma_time;
+static int hf_lte_rrc_utc_time;
+static int hf_lte_rrc_local_time;
+static int hf_lte_rrc_absolute_time;
+static int hf_lte_rrc_transmissionModeList_r12_tm1;
+static int hf_lte_rrc_transmissionModeList_r12_tm2;
+static int hf_lte_rrc_transmissionModeList_r12_tm3;
+static int hf_lte_rrc_transmissionModeList_r12_tm4;
+static int hf_lte_rrc_transmissionModeList_r12_tm6;
+static int hf_lte_rrc_transmissionModeList_r12_tm8;
+static int hf_lte_rrc_transmissionModeList_r12_tm9;
+static int hf_lte_rrc_transmissionModeList_r12_tm10;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_0;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_1;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_2;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_3;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_4;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_5;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_6;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_7;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_8;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_9;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_10;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_11;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_12;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_13;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_14;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_15;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_16;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_17;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_18;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_19;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_20;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_21;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_22;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_23;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_24;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_25;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_26;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_27;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_28;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_29;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_30;
+static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_31;
+static int hf_lte_rrc_sib11_fragments;
+static int hf_lte_rrc_sib11_fragment;
+static int hf_lte_rrc_sib11_fragment_overlap;
+static int hf_lte_rrc_sib11_fragment_overlap_conflict;
+static int hf_lte_rrc_sib11_fragment_multiple_tails;
+static int hf_lte_rrc_sib11_fragment_too_long_fragment;
+static int hf_lte_rrc_sib11_fragment_error;
+static int hf_lte_rrc_sib11_fragment_count;
+static int hf_lte_rrc_sib11_reassembled_in;
+static int hf_lte_rrc_sib11_reassembled_length;
+static int hf_lte_rrc_sib11_reassembled_data;
+static int hf_lte_rrc_sib12_fragments;
+static int hf_lte_rrc_sib12_fragment;
+static int hf_lte_rrc_sib12_fragment_overlap;
+static int hf_lte_rrc_sib12_fragment_overlap_conflict;
+static int hf_lte_rrc_sib12_fragment_multiple_tails;
+static int hf_lte_rrc_sib12_fragment_too_long_fragment;
+static int hf_lte_rrc_sib12_fragment_error;
+static int hf_lte_rrc_sib12_fragment_count;
+static int hf_lte_rrc_sib12_reassembled_in;
+static int hf_lte_rrc_sib12_reassembled_length;
+static int hf_lte_rrc_sib12_reassembled_data;
+static int hf_lte_rrc_dcch_segment_fragments;
+static int hf_lte_rrc_dcch_segment_fragment;
+static int hf_lte_rrc_dcch_segment_fragment_overlap;
+static int hf_lte_rrc_dcch_segment_fragment_overlap_conflict;
+static int hf_lte_rrc_dcch_segment_fragment_multiple_tails;
+static int hf_lte_rrc_dcch_segment_fragment_too_long_fragment;
+static int hf_lte_rrc_dcch_segment_fragment_error;
+static int hf_lte_rrc_dcch_segment_fragment_count;
+static int hf_lte_rrc_dcch_segment_reassembled_in;
+static int hf_lte_rrc_dcch_segment_reassembled_length;
+static int hf_lte_rrc_dcch_segment_reassembled_data;
+static int hf_lte_rrc_measGapPatterns_r15_bit1;
+static int hf_lte_rrc_measGapPatterns_r15_bit2;
+static int hf_lte_rrc_measGapPatterns_r15_bit3;
+static int hf_lte_rrc_measGapPatterns_r15_bit4;
+static int hf_lte_rrc_measGapPatterns_r15_bit5;
+static int hf_lte_rrc_measGapPatterns_r15_bit6;
+static int hf_lte_rrc_measGapPatterns_r15_bit7;
+static int hf_lte_rrc_measGapPatterns_r15_bit8;
/* Initialize the subtree pointers */
-static int ett_lte_rrc = -1;
+static int ett_lte_rrc;
#include "packet-lte-rrc-ett.c"
-static gint ett_lte_rrc_featureGroupIndicators = -1;
-static gint ett_lte_rrc_featureGroupIndRel9Add = -1;
-static gint ett_lte_rrc_featureGroupIndRel10 = -1;
-static gint ett_lte_rrc_absTimeInfo = -1;
-static gint ett_lte_rrc_nas_SecurityParam = -1;
-static gint ett_lte_rrc_targetRAT_MessageContainer = -1;
-static gint ett_lte_rrc_siPsiSibContainer = -1;
-static gint ett_lte_rrc_dedicatedInfoNAS = -1;
-static gint ett_lte_rrc_timeInfo = -1;
-static gint ett_lte_rrc_serialNumber = -1;
-static gint ett_lte_rrc_warningType = -1;
-static gint ett_lte_rrc_dataCodingScheme = -1;
-static gint ett_lte_rrc_warningMessageSegment = -1;
-static gint ett_lte_rrc_interBandTDD_CA_WithDifferentConfig = -1;
-static gint ett_lte_rrc_tdd_FDD_CA_PCellDuplex_r12 = -1;
-static gint ett_lte_rrc_aperiodicCSI_Reporting_r13 = -1;
-static gint ett_lte_rrc_codebook_HARQ_ACK_r13 = -1;
-static gint ett_lte_rrc_sr_ConfigIndex = -1;
-static gint ett_lte_rrc_transmissionModeList_r12 = -1;
-static gint ett_lte_rrc_modifiedMPR_Behavior_r10 = -1;
-static gint ett_lte_rrc_sib11_fragment = -1;
-static gint ett_lte_rrc_sib11_fragments = -1;
-static gint ett_lte_rrc_sib12_fragment = -1;
-static gint ett_lte_rrc_sib12_fragments = -1;
-static gint ett_lte_rrc_nr_SecondaryCellGroupConfig_r15 = -1;
-static gint ett_lte_rrc_nr_RadioBearerConfig_r15 = -1;
-static gint ett_lte_rrc_nr_RadioBearerConfigS_r15 = -1;
-static gint ett_lte_rrc_sl_ConfigDedicatedForNR_r16 = -1;
-static gint ett_lte_rrc_nr_SecondaryCellGroupConfig = -1;
-static gint ett_lte_rrc_scg_ConfigResponseNR_r15 = -1;
-static gint ett_lte_rrc_scg_ConfigResponseNR_r16 = -1;
-static gint ett_lte_rrc_measResultSCG_r15 = -1;
-static gint ett_lte_rrc_measResultSCG_r16 = -1;
-static gint ett_lte_rrc_ul_DCCH_MessageNR_r15 = -1;
-static gint ett_lte_rrc_ul_DCCH_MessageNR_r16 = -1;
-static gint ett_lte_rrc_sourceRB_ConfigNR_r15 = -1;
-static gint ett_lte_rrc_sourceRB_ConfigSN_NR_r15 = -1;
-static gint ett_lte_rrc_sourceOtherConfigSN_NR_r15 = -1;
-static gint ett_lte_rrc_sourceContextEN_DC_r15 = -1;
-static gint ett_lte_rrc_requestedFreqBandsNR_MRDC_r15 = -1;
-static gint ett_lte_rrc_measGapPatterns_r15 = -1;
-static gint ett_lte_rrc_nas_Container_r15 = -1;
-static gint ett_lte_rrc_sourceRB_ConfigIntra5GC_r15 = -1;
-static gint ett_lte_rrc_selectedbandCombinationInfoEN_DC_v1540 = -1;
-static gint ett_lte_rrc_requestedCapabilityCommon_r15 = -1;
-static gint ett_lte_rrc_sidelinkUEInformationNR_r16 = -1;
-static gint ett_lte_rrc_ueAssistanceInformationNR_r16 = -1;
-static gint ett_lte_rrc_sl_ParameterNR_r16 = -1;
-static gint ett_lte_rrc_v2x_BandParametersNR_r16 = -1;
-static gint ett_lte_rrc_ueAssistanceInformationNR_SCG_r16 = -1;
-static gint ett_lte_rrc_assistanceDataSIB_Element_r15 = -1;
-static gint ett_lte_rrc_overheatingAssistanceForSCG_r16 = -1;
-static gint ett_lte_rrc_overheatingAssistanceForSCG_FR2_2_r17 = -1;
-static gint ett_lte_rrc_triggerConditionSN_r17 = -1;
-
-static expert_field ei_lte_rrc_number_pages_le15 = EI_INIT;
-static expert_field ei_lte_rrc_si_info_value_changed = EI_INIT;
-static expert_field ei_lte_rrc_sibs_changing = EI_INIT;
-static expert_field ei_lte_rrc_sibs_changing_edrx = EI_INIT;
-static expert_field ei_lte_rrc_earthquake_warning_sys = EI_INIT;
-static expert_field ei_lte_rrc_commercial_mobile_alert_sys = EI_INIT;
-static expert_field ei_lte_rrc_unexpected_type_value = EI_INIT;
-static expert_field ei_lte_rrc_unexpected_length_value = EI_INIT;
-static expert_field ei_lte_rrc_too_many_group_a_rapids = EI_INIT;
-static expert_field ei_lte_rrc_invalid_drx_config = EI_INIT;
+static int ett_lte_rrc_featureGroupIndicators;
+static int ett_lte_rrc_featureGroupIndRel9Add;
+static int ett_lte_rrc_featureGroupIndRel10;
+static int ett_lte_rrc_absTimeInfo;
+static int ett_lte_rrc_nas_SecurityParam;
+static int ett_lte_rrc_targetRAT_MessageContainer;
+static int ett_lte_rrc_siPsiSibContainer;
+static int ett_lte_rrc_dedicatedInfoNAS;
+static int ett_lte_rrc_timeInfo;
+static int ett_lte_rrc_serialNumber;
+static int ett_lte_rrc_warningType;
+static int ett_lte_rrc_dataCodingScheme;
+static int ett_lte_rrc_warningMessageSegment;
+static int ett_lte_rrc_interBandTDD_CA_WithDifferentConfig;
+static int ett_lte_rrc_tdd_FDD_CA_PCellDuplex_r12;
+static int ett_lte_rrc_aperiodicCSI_Reporting_r13;
+static int ett_lte_rrc_codebook_HARQ_ACK_r13;
+static int ett_lte_rrc_sr_ConfigIndex;
+static int ett_lte_rrc_transmissionModeList_r12;
+static int ett_lte_rrc_modifiedMPR_Behavior_r10;
+static int ett_lte_rrc_sib11_fragment;
+static int ett_lte_rrc_sib11_fragments;
+static int ett_lte_rrc_sib12_fragment;
+static int ett_lte_rrc_sib12_fragments;
+static int ett_lte_rrc_dcch_segment_fragment;
+static int ett_lte_rrc_dcch_segment_fragments;
+static int ett_lte_rrc_nr_SecondaryCellGroupConfig_r15;
+static int ett_lte_rrc_nr_RadioBearerConfig_r15;
+static int ett_lte_rrc_nr_RadioBearerConfigS_r15;
+static int ett_lte_rrc_sl_ConfigDedicatedForNR_r16;
+static int ett_lte_rrc_nr_SecondaryCellGroupConfig;
+static int ett_lte_rrc_scg_ConfigResponseNR_r15;
+static int ett_lte_rrc_scg_ConfigResponseNR_r16;
+static int ett_lte_rrc_measResultSCG_r15;
+static int ett_lte_rrc_measResultSCG_r16;
+static int ett_lte_rrc_ul_DCCH_MessageNR_r15;
+static int ett_lte_rrc_ul_DCCH_MessageNR_r16;
+static int ett_lte_rrc_sourceRB_ConfigNR_r15;
+static int ett_lte_rrc_sourceRB_ConfigSN_NR_r15;
+static int ett_lte_rrc_sourceOtherConfigSN_NR_r15;
+static int ett_lte_rrc_sourceContextEN_DC_r15;
+static int ett_lte_rrc_requestedFreqBandsNR_MRDC_r15;
+static int ett_lte_rrc_measGapPatterns_r15;
+static int ett_lte_rrc_nas_Container_r15;
+static int ett_lte_rrc_sourceRB_ConfigIntra5GC_r15;
+static int ett_lte_rrc_selectedbandCombinationInfoEN_DC_v1540;
+static int ett_lte_rrc_requestedCapabilityCommon_r15;
+static int ett_lte_rrc_sidelinkUEInformationNR_r16;
+static int ett_lte_rrc_ueAssistanceInformationNR_r16;
+static int ett_lte_rrc_sl_ParameterNR_r16;
+static int ett_lte_rrc_v2x_BandParametersNR_r16;
+static int ett_lte_rrc_ueAssistanceInformationNR_SCG_r16;
+static int ett_lte_rrc_assistanceDataSIB_Element_r15;
+static int ett_lte_rrc_overheatingAssistanceForSCG_r16;
+static int ett_lte_rrc_overheatingAssistanceForSCG_FR2_2_r17;
+static int ett_lte_rrc_triggerConditionSN_r17;
+
+static expert_field ei_lte_rrc_number_pages_le15;
+static expert_field ei_lte_rrc_si_info_value_changed;
+static expert_field ei_lte_rrc_sibs_changing;
+static expert_field ei_lte_rrc_sibs_changing_edrx;
+static expert_field ei_lte_rrc_earthquake_warning_sys;
+static expert_field ei_lte_rrc_commercial_mobile_alert_sys;
+static expert_field ei_lte_rrc_unexpected_type_value;
+static expert_field ei_lte_rrc_unexpected_length_value;
+static expert_field ei_lte_rrc_too_many_group_a_rapids;
+static expert_field ei_lte_rrc_invalid_drx_config;
static const unit_name_string units_sr_periods = { " SR period", " SR periods" };
static const unit_name_string units_short_drx_cycles = { " shortDRX-Cycle", " shortDRX-Cycles" };
static reassembly_table lte_rrc_sib11_reassembly_table;
static reassembly_table lte_rrc_sib12_reassembly_table;
+static reassembly_table lte_rrc_dcch_segment_reassembly_table;
static const fragment_items lte_rrc_sib11_frag_items = {
&ett_lte_rrc_sib11_fragment,
@@ -380,6 +401,23 @@ static const fragment_items lte_rrc_sib12_frag_items = {
"SIB12 warning message segments"
};
+static const fragment_items lte_rrc_dcch_segment_frag_items = {
+ &ett_lte_rrc_dcch_segment_fragment,
+ &ett_lte_rrc_dcch_segment_fragments,
+ &hf_lte_rrc_dcch_segment_fragments,
+ &hf_lte_rrc_dcch_segment_fragment,
+ &hf_lte_rrc_dcch_segment_fragment_overlap,
+ &hf_lte_rrc_dcch_segment_fragment_overlap_conflict,
+ &hf_lte_rrc_dcch_segment_fragment_multiple_tails,
+ &hf_lte_rrc_dcch_segment_fragment_too_long_fragment,
+ &hf_lte_rrc_dcch_segment_fragment_error,
+ &hf_lte_rrc_dcch_segment_fragment_count,
+ &hf_lte_rrc_dcch_segment_reassembled_in,
+ &hf_lte_rrc_dcch_segment_reassembled_length,
+ &hf_lte_rrc_dcch_segment_reassembled_data,
+ "DCCH message segments"
+};
+
/* Forward declarations */
static int dissect_UECapabilityInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
static int dissect_RRCConnectionReconfiguration_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
@@ -942,7 +980,7 @@ static const value_string lte_rrc_messageSize_r14_vals[] =
static value_string_ext lte_rrc_messageSize_r14_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_messageSize_r14_vals);
static void
-lte_rrc_timeConnFailure_r10_fmt(gchar *s, guint32 v)
+lte_rrc_timeConnFailure_r10_fmt(char *s, uint32_t v)
{
snprintf(s, ITEM_LABEL_LENGTH, "%ums (%u)", 100*v, v);
}
@@ -960,7 +998,7 @@ static const value_string lte_rrc_n_r12_vals[] = {
};
static void
-lte_rrc_m_r12_fmt(gchar *s, guint32 v)
+lte_rrc_m_r12_fmt(char *s, uint32_t v)
{
if (v == 255) {
snprintf(s, ITEM_LABEL_LENGTH, "255 <= f(Nr) (255)");
@@ -2168,7 +2206,7 @@ static const value_string lte_rrc_RSRP_RangeSL4_vals[] = {
static value_string_ext lte_rrc_RSRP_RangeSL4_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_RSRP_RangeSL4_vals);
static void
-lte_rrc_RSRP_RangeNR_r15_fmt(gchar *s, guint32 v)
+lte_rrc_RSRP_RangeNR_r15_fmt(char *s, uint32_t v)
{
if (v == 0) {
snprintf(s, ITEM_LABEL_LENGTH, "SS-RSRP < -156dBm (0)");
@@ -2268,7 +2306,7 @@ static const value_string lte_rrc_RSRQ_Range_vals[] = {
static value_string_ext lte_rrc_RSRQ_Range_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_RSRQ_Range_vals);
static void
-lte_rrc_RSRQ_RangeNR_r15_fmt(gchar *s, guint32 v)
+lte_rrc_RSRQ_RangeNR_r15_fmt(char *s, uint32_t v)
{
if (v == 0) {
snprintf(s, ITEM_LABEL_LENGTH, "SS-RSRQ < -43dB (0)");
@@ -2317,13 +2355,13 @@ static const value_string lte_rrc_MBSFN_RSRQ_Range_vals[] = {
static value_string_ext lte_rrc_MBSFN_RSRQ_Range_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_MBSFN_RSRQ_Range_vals);
static void
-lte_rrc_availableAdmissionCapacityWLAN_fmt(gchar *s, guint32 v)
+lte_rrc_availableAdmissionCapacityWLAN_fmt(char *s, uint32_t v)
{
snprintf(s, ITEM_LABEL_LENGTH, "%uus/s (%u)", 32*v, v);
}
static void
-lte_rrc_ue_RxTxTimeDiffResult_fmt(gchar *s, guint32 v)
+lte_rrc_ue_RxTxTimeDiffResult_fmt(char *s, uint32_t v)
{
if (v == 0) {
snprintf(s, ITEM_LABEL_LENGTH, "T < 2Ts (0)");
@@ -2535,13 +2573,13 @@ static const value_string lte_rrc_excessDelay_r13_vals[] = {
static value_string_ext lte_rrc_excessDelay_r13_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_excessDelay_r13_vals);
static void
-lte_rrc_averageDelay_r16_fmt(gchar *s, guint32 v)
+lte_rrc_averageDelay_r16_fmt(char *s, uint32_t v)
{
snprintf(s, ITEM_LABEL_LENGTH, "%.1fms (%u)", (float)v/10, v);
}
static void
-lte_rrc_subframeBoundaryOffsetResult_r13_fmt(gchar *s, guint32 v)
+lte_rrc_subframeBoundaryOffsetResult_r13_fmt(char *s, uint32_t v)
{
if (v == 0) {
snprintf(s, ITEM_LABEL_LENGTH, "abs(deltaZ) < 700Ts (0)");
@@ -2553,7 +2591,7 @@ lte_rrc_subframeBoundaryOffsetResult_r13_fmt(gchar *s, guint32 v)
}
static void
-lte_rrc_RS_SINR_Range_r13_fmt(gchar *s, guint32 v)
+lte_rrc_RS_SINR_Range_r13_fmt(char *s, uint32_t v)
{
if (v == 0) {
snprintf(s, ITEM_LABEL_LENGTH, "RS-SINR < -23dB (0)");
@@ -2565,7 +2603,7 @@ lte_rrc_RS_SINR_Range_r13_fmt(gchar *s, guint32 v)
}
static void
-lte_rrc_RS_SINR_RangeNR_r15_fmt(gchar *s, guint32 v)
+lte_rrc_RS_SINR_RangeNR_r15_fmt(char *s, uint32_t v)
{
if (v == 0) {
snprintf(s, ITEM_LABEL_LENGTH, "SS-SINR < -23dB (0)");
@@ -2577,7 +2615,7 @@ lte_rrc_RS_SINR_RangeNR_r15_fmt(gchar *s, guint32 v)
}
static void
-lte_rrc_RSSI_Range_r13_fmt(gchar *s, guint32 v)
+lte_rrc_RSSI_Range_r13_fmt(char *s, uint32_t v)
{
if (v == 0) {
snprintf(s, ITEM_LABEL_LENGTH, "RSSI < -100dBm (0)");
@@ -2589,13 +2627,13 @@ lte_rrc_RSSI_Range_r13_fmt(gchar *s, guint32 v)
}
static void
-lte_rrc_scptm_FreqOffset_r14_fmt(gchar *s, guint32 v)
+lte_rrc_scptm_FreqOffset_r14_fmt(char *s, uint32_t v)
{
snprintf(s, ITEM_LABEL_LENGTH, "%udB (%u)", 2*v, v);
}
static void
-lte_rrc_offsetDFN_r14_fmt(gchar *s, guint32 v)
+lte_rrc_offsetDFN_r14_fmt(char *s, uint32_t v)
{
if (v == 0) {
snprintf(s, ITEM_LABEL_LENGTH, "0ms (0)");
@@ -2607,13 +2645,13 @@ lte_rrc_offsetDFN_r14_fmt(gchar *s, guint32 v)
}
static void
-lte_rrc_thresholdWLAN_RSSI_fmt(gchar *s, guint32 v)
+lte_rrc_thresholdWLAN_RSSI_fmt(char *s, uint32_t v)
{
snprintf(s, ITEM_LABEL_LENGTH, "%ddBm (%u)", -128+v, v);
}
static void
-lte_rrc_cr_Limit_r14_fmt(gchar *s, guint32 v)
+lte_rrc_cr_Limit_r14_fmt(char *s, uint32_t v)
{
if (v == 0) {
snprintf(s, ITEM_LABEL_LENGTH, "0 (0)");
@@ -2625,7 +2663,7 @@ lte_rrc_cr_Limit_r14_fmt(gchar *s, guint32 v)
}
static void
-lte_rrc_SL_CBR_r14_fmt(gchar *s, guint32 v)
+lte_rrc_SL_CBR_r14_fmt(char *s, uint32_t v)
{
if (v == 0) {
snprintf(s, ITEM_LABEL_LENGTH, "0 (0)");
@@ -2637,7 +2675,7 @@ lte_rrc_SL_CBR_r14_fmt(gchar *s, guint32 v)
}
static void
-lte_rrc_threshS_RSSI_CBR_r14_fmt(gchar *s, guint32 v)
+lte_rrc_threshS_RSSI_CBR_r14_fmt(char *s, uint32_t v)
{
snprintf(s, ITEM_LABEL_LENGTH, "%ddBm (%u)", -112+(2*v), v);
}
@@ -2660,7 +2698,7 @@ static const value_string lte_rrc_schedulingInfoSIB1_NB_r13_vals[] = {
static value_string_ext lte_rrc_schedulingInfoSIB1_NB_r13_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_schedulingInfoSIB1_NB_r13_vals);
static void
-lte_rrc_NRSRP_Range_NB_r14_fmt(gchar *s, guint32 v)
+lte_rrc_NRSRP_Range_NB_r14_fmt(char *s, uint32_t v)
{
if (v == 0) {
snprintf(s, ITEM_LABEL_LENGTH, "NRSRP < -156dBm (0)");
@@ -2672,9 +2710,9 @@ lte_rrc_NRSRP_Range_NB_r14_fmt(gchar *s, guint32 v)
}
static void
-lte_rrc_NRSRQ_Range_NB_r14_fmt(gchar *s, guint32 v)
+lte_rrc_NRSRQ_Range_NB_r14_fmt(char *s, uint32_t v)
{
- gint32 rsrq = (guint32)v;
+ int32_t rsrq = (uint32_t)v;
if (rsrq == -30) {
snprintf(s, ITEM_LABEL_LENGTH, "NRSRQ < -34dB (-30)");
} else if (rsrq < 0) {
@@ -2693,13 +2731,13 @@ lte_rrc_NRSRQ_Range_NB_r14_fmt(gchar *s, guint32 v)
}
static void
-lte_rrc_mbms_MaxBW_r14_fmt(gchar *s, guint32 v)
+lte_rrc_mbms_MaxBW_r14_fmt(char *s, uint32_t v)
{
snprintf(s, ITEM_LABEL_LENGTH, "%u MHz (%u)", 40*v, v);
}
static void
-lte_rrc_dl_1024QAM_TotalWeightedLayers_r15_fmt(gchar *s, guint32 v)
+lte_rrc_dl_1024QAM_TotalWeightedLayers_r15_fmt(char *s, uint32_t v)
{
snprintf(s, ITEM_LABEL_LENGTH, "%u (%u)", 10+(2*v), v);
}
@@ -2723,10 +2761,10 @@ lte_rrc_call_dissector(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pi
/*****************************************************************************/
typedef struct meas_capabilities_item_band_mappings_t {
- guint16 number_of_bands_set;
- guint16 number_of_interfreq_serving_read;
- guint16 number_of_interfreq_target_read;
- guint16 band_by_item[256];
+ uint16_t number_of_bands_set;
+ uint16_t number_of_interfreq_serving_read;
+ uint16_t number_of_interfreq_target_read;
+ uint16_t band_by_item[256];
} meas_capabilities_item_band_mappings_t;
@@ -2734,20 +2772,23 @@ typedef struct meas_capabilities_item_band_mappings_t {
/* Struct to store all current uses of packet private data */
typedef struct lte_rrc_private_data_t
{
- guint8 rat_type;
- guint8 target_rat_type;
- guint8 si_or_psi_geran;
- guint8 ra_preambles;
- guint16 message_identifier;
- guint8 warning_message_segment_type;
- guint8 warning_message_segment_number;
+ uint8_t rat_type;
+ uint8_t target_rat_type;
+ uint8_t si_or_psi_geran;
+ uint8_t ra_preambles;
+ uint16_t message_identifier;
+ uint8_t warning_message_segment_type;
+ uint8_t warning_message_segment_number;
drb_mapping_t drb_mapping;
drx_config_t drx_config;
pdcp_lte_security_info_t pdcp_security;
meas_capabilities_item_band_mappings_t meas_capabilities_item_band_mappings;
simult_pucch_pusch_cell_type cell_type;
- gboolean bcch_dl_sch_msg;
+ bool bcch_dl_sch_msg;
lpp_pos_sib_type_t pos_sib_type;
+ uint8_t dcch_segment_number;
+ tvbuff_t *dcch_segment;
+ bool dcch_segment_last;
} lte_rrc_private_data_t;
/* Helper function to get or create a struct that will be actx->private_data */
@@ -2781,13 +2822,13 @@ static drb_mapping_t* private_data_get_drb_mapping(asn1_ctx_t *actx)
/* RAT type */
-static guint8 private_data_get_rat_type(asn1_ctx_t *actx)
+static uint8_t private_data_get_rat_type(asn1_ctx_t *actx)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
return private_data->rat_type;
}
-static void private_data_set_rat_type(asn1_ctx_t *actx, guint8 rat_type)
+static void private_data_set_rat_type(asn1_ctx_t *actx, uint8_t rat_type)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
private_data->rat_type = rat_type;
@@ -2795,13 +2836,13 @@ static void private_data_set_rat_type(asn1_ctx_t *actx, guint8 rat_type)
/* Target RAT type */
-static guint8 private_data_get_rat_target_type(asn1_ctx_t *actx)
+static uint8_t private_data_get_rat_target_type(asn1_ctx_t *actx)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
return private_data->target_rat_type;
}
-static void private_data_set_rat_target_type(asn1_ctx_t *actx, guint8 target_rat_type)
+static void private_data_set_rat_target_type(asn1_ctx_t *actx, uint8_t target_rat_type)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
private_data->target_rat_type = target_rat_type;
@@ -2809,13 +2850,13 @@ static void private_data_set_rat_target_type(asn1_ctx_t *actx, guint8 target_rat
/* si_or_psi_geran */
-static guint8 private_data_get_si_or_psi_geran(asn1_ctx_t *actx)
+static uint8_t private_data_get_si_or_psi_geran(asn1_ctx_t *actx)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
return private_data->si_or_psi_geran;
}
-static void private_data_set_si_or_psi_geran(asn1_ctx_t *actx, guint8 si_or_psi_geran)
+static void private_data_set_si_or_psi_geran(asn1_ctx_t *actx, uint8_t si_or_psi_geran)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
private_data->si_or_psi_geran = si_or_psi_geran;
@@ -2823,13 +2864,13 @@ static void private_data_set_si_or_psi_geran(asn1_ctx_t *actx, guint8 si_or_psi_
/* Message identifier */
-static guint16 private_data_get_message_identifier(asn1_ctx_t *actx)
+static uint16_t private_data_get_message_identifier(asn1_ctx_t *actx)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
return private_data->message_identifier;
}
-static void private_data_set_message_identifier(asn1_ctx_t *actx, guint16 message_identifier)
+static void private_data_set_message_identifier(asn1_ctx_t *actx, uint16_t message_identifier)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
private_data->message_identifier = message_identifier;
@@ -2837,13 +2878,13 @@ static void private_data_set_message_identifier(asn1_ctx_t *actx, guint16 messag
/* Warning message segment type */
-static guint16 private_data_get_warning_message_segment_type(asn1_ctx_t *actx)
+static uint16_t private_data_get_warning_message_segment_type(asn1_ctx_t *actx)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
return private_data->warning_message_segment_type;
}
-static void private_data_set_warning_message_segment_type(asn1_ctx_t *actx, guint8 segment_type)
+static void private_data_set_warning_message_segment_type(asn1_ctx_t *actx, uint8_t segment_type)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
private_data->warning_message_segment_type = segment_type;
@@ -2851,13 +2892,13 @@ static void private_data_set_warning_message_segment_type(asn1_ctx_t *actx, guin
/* Warning message segment number */
-static guint16 private_data_get_warning_message_segment_number(asn1_ctx_t *actx)
+static uint16_t private_data_get_warning_message_segment_number(asn1_ctx_t *actx)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
return private_data->warning_message_segment_number;
}
-static void private_data_set_warning_message_segment_number(asn1_ctx_t *actx, guint8 segment_number)
+static void private_data_set_warning_message_segment_number(asn1_ctx_t *actx, uint8_t segment_number)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
private_data->warning_message_segment_number = segment_number;
@@ -2865,13 +2906,13 @@ static void private_data_set_warning_message_segment_number(asn1_ctx_t *actx, gu
/* Number of RA-preambles */
-static guint8 private_data_get_ra_preambles(asn1_ctx_t *actx)
+static uint8_t private_data_get_ra_preambles(asn1_ctx_t *actx)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
return private_data->ra_preambles;
}
-static void private_data_set_ra_preambles(asn1_ctx_t *actx, guint8 ra_preambles)
+static void private_data_set_ra_preambles(asn1_ctx_t *actx, uint8_t ra_preambles)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
private_data->ra_preambles = ra_preambles;
@@ -2893,12 +2934,12 @@ static meas_capabilities_item_band_mappings_t* private_data_meas_capabilities_it
return &private_data->meas_capabilities_item_band_mappings;
}
-static void set_freq_band_indicator(guint32 value, asn1_ctx_t *actx)
+static void set_freq_band_indicator(uint32_t value, asn1_ctx_t *actx)
{
/* Store band mapping for this item in the next position */
meas_capabilities_item_band_mappings_t *mappings = private_data_meas_capabilities_item_band_mappings(actx);
if (mappings->number_of_bands_set < 256) {
- mappings->band_by_item[mappings->number_of_bands_set++] = (guint16)value;
+ mappings->band_by_item[mappings->number_of_bands_set++] = (uint16_t)value;
}
}
@@ -2924,13 +2965,13 @@ static void private_data_set_simult_pucch_pusch_cell_type(asn1_ctx_t *actx, simu
}
/* Is top message a BCCH DL-SCH BR/MBMS */
-static gboolean private_data_get_bcch_dl_sch_msg(asn1_ctx_t *actx)
+static bool private_data_get_bcch_dl_sch_msg(asn1_ctx_t *actx)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
return private_data->bcch_dl_sch_msg;
}
-static void private_data_set_bcch_dl_sch_msg(asn1_ctx_t *actx, gboolean is_bcch_dl_sch)
+static void private_data_set_bcch_dl_sch_msg(asn1_ctx_t *actx, bool is_bcch_dl_sch)
{
lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
private_data->bcch_dl_sch_msg = is_bcch_dl_sch;
@@ -2948,13 +2989,49 @@ static void private_data_set_pos_sib_type(asn1_ctx_t *actx, lpp_pos_sib_type_t p
private_data->pos_sib_type = pos_sib_type;
}
+static uint8_t private_data_get_dcch_segment_number(asn1_ctx_t *actx)
+{
+ lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
+ return private_data->dcch_segment_number;
+}
+
+static void private_data_set_dcch_segment_number(asn1_ctx_t *actx, uint8_t dcch_segment_number)
+{
+ lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
+ private_data->dcch_segment_number = dcch_segment_number;
+}
+
+static tvbuff_t *private_data_get_dcch_segment(asn1_ctx_t *actx)
+{
+ lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
+ return private_data->dcch_segment;
+}
+
+static void private_data_set_dcch_segment(asn1_ctx_t *actx, tvbuff_t *dcch_segment)
+{
+ lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
+ private_data->dcch_segment = dcch_segment;
+}
+
+static bool private_data_get_dcch_segment_last(asn1_ctx_t *actx)
+{
+ lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
+ return private_data->dcch_segment_last;
+}
+
+static void private_data_set_dcch_segment_last(asn1_ctx_t *actx, bool dcch_segment_last)
+{
+ lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
+ private_data->dcch_segment_last = dcch_segment_last;
+}
+
/*****************************************************************************/
static void
-lte_rrc_localTimeOffset_fmt(gchar *s, guint32 v)
+lte_rrc_localTimeOffset_fmt(char *s, uint32_t v)
{
- gint32 time_offset = (gint32) v;
+ int32_t time_offset = (int32_t) v;
snprintf(s, ITEM_LABEL_LENGTH, "UTC time %c %dhr %dmin (%d)",
(time_offset < 0) ? '-':'+', abs(time_offset) >> 2,
@@ -2962,15 +3039,15 @@ lte_rrc_localTimeOffset_fmt(gchar *s, guint32 v)
}
static void
-dissect_lte_rrc_warningMessageSegment(tvbuff_t *warning_msg_seg_tvb, proto_tree *tree, packet_info *pinfo, guint8 dataCodingScheme)
+dissect_lte_rrc_warningMessageSegment(tvbuff_t *warning_msg_seg_tvb, proto_tree *tree, packet_info *pinfo, uint8_t dataCodingScheme)
{
- guint32 offset;
- guint8 nb_of_pages, length, *str;
+ uint32_t offset;
+ uint8_t nb_of_pages, length, *str;
proto_item *ti;
tvbuff_t *cb_data_page_tvb, *cb_data_tvb;
int i;
- nb_of_pages = tvb_get_guint8(warning_msg_seg_tvb, 0);
+ nb_of_pages = tvb_get_uint8(warning_msg_seg_tvb, 0);
ti = proto_tree_add_uint(tree, hf_lte_rrc_warningMessageSegment_nb_pages, warning_msg_seg_tvb, 0, 1, nb_of_pages);
if (nb_of_pages > 15) {
expert_add_info_format(pinfo, ti, &ei_lte_rrc_number_pages_le15,
@@ -2978,7 +3055,7 @@ dissect_lte_rrc_warningMessageSegment(tvbuff_t *warning_msg_seg_tvb, proto_tree
nb_of_pages = 15;
}
for (i = 0, offset = 1; i < nb_of_pages; i++) {
- length = tvb_get_guint8(warning_msg_seg_tvb, offset+82);
+ length = tvb_get_uint8(warning_msg_seg_tvb, offset+82);
cb_data_page_tvb = tvb_new_subset_length(warning_msg_seg_tvb, offset, length);
cb_data_tvb = dissect_cbs_data(dataCodingScheme, cb_data_page_tvb, tree, pinfo, 0);
if (cb_data_tvb) {
@@ -3112,73 +3189,55 @@ dissect_lte_rrc_featureGroupIndRel9Add(tvbuff_t *featureGroupIndRel9Add_tvb, asn
/* Functions to get enum values out of indices parsed */
/* If entry not found, return last element of array */
-static guint32 drx_lookup_onDurationTimer(guint32 idx)
+static uint32_t drx_lookup_onDurationTimer(uint32_t idx)
{
- static const guint32 vals[] = {1,2,3,4,5,6,8,10,20,30,40,50,60,80,100,200};
+ static const uint32_t vals[] = {1,2,3,4,5,6,8,10,20,30,40,50,60,80,100,200};
- if (idx < (sizeof(vals)/sizeof(guint32))) {
- return vals[idx];
- }
- return (sizeof(vals)/(sizeof(guint32)) - 1);
+ return vals[MIN(idx, array_length(vals) - 1)];
}
-static guint32 drx_lookup_inactivityTimer(guint32 idx)
+static uint32_t drx_lookup_inactivityTimer(uint32_t idx)
{
- static const guint32 vals[] = {
- 1,2,3,4,5,6,8,10,20,30,40,50,60,80,100,200,300, 500,750,1280,1920,2560,0
+ static const uint32_t vals[] = {
+ 1,2,3,4,5,6,8,10,20,30,40,50,60,80,100,200,300,500,750,1280,1920,2560,0
};
- if (idx < (sizeof(vals)/sizeof(guint32))) {
- return vals[idx];
- }
- return (sizeof(vals)/(sizeof(guint32)) - 1);
+ return vals[MIN(idx, array_length(vals) - 1)];
}
-static guint32 drx_lookup_retransmissionTimer(guint32 idx)
+static uint32_t drx_lookup_retransmissionTimer(uint32_t idx)
{
- static const guint32 vals[] = {1,2,4,6,8,16,24,33};
+ static const uint32_t vals[] = {1,2,4,6,8,16,24,33};
- if (idx < (sizeof(vals)/sizeof(guint32))) {
- return vals[idx];
- }
- return (sizeof(vals)/(sizeof(guint32)) - 1);
+ return vals[MIN(idx, array_length(vals) - 1)];
}
-static guint32 drx_lookup_longCycle(guint32 idx)
+static uint32_t drx_lookup_longCycle(uint32_t idx)
{
- static const guint32 vals[] = {
+ static const uint32_t vals[] = {
10,20,32,40,64,80,128,160,256,320,512,640,1024,1280,2048,2560
};
- if (idx < (sizeof(vals)/sizeof(guint32))) {
- return vals[idx];
- }
- return (sizeof(vals)/(sizeof(guint32)) - 1);
+ return vals[MIN(idx, array_length(vals) - 1)];
}
-static guint32 drx_lookup_longCycle_v1130(guint32 idx)
+static uint32_t drx_lookup_longCycle_v1130(uint32_t idx)
{
- static const guint32 vals[] = {
+ static const uint32_t vals[] = {
60,70
};
- if (idx < (sizeof(vals)/sizeof(guint32))) {
- return vals[idx];
- }
- return (sizeof(vals)/(sizeof(guint32)) - 1);
+ return vals[MIN(idx, array_length(vals) - 1)];
}
-static guint32 drx_lookup_shortCycle(guint32 idx)
+static uint32_t drx_lookup_shortCycle(uint32_t idx)
{
- static const guint32 vals[] = {
+ static const uint32_t vals[] = {
2,5,8,10,16,20,32,40,64,80,128,160,256,320,512,640
};
- if (idx < (sizeof(vals)/sizeof(guint32))) {
- return vals[idx];
- }
- return (sizeof(vals)/(sizeof(guint32)) - 1);
+ return vals[MIN(idx, array_length(vals) - 1)];
}
static void drx_check_config_sane(drx_config_t *config, asn1_ctx_t *actx)
@@ -3216,7 +3275,7 @@ static void drx_check_config_sane(drx_config_t *config, asn1_ctx_t *actx)
}
/* Break sr-configIndex down into periodicity and offset. From 36.231, 10.1 */
-static void sr_lookup_configindex(guint32 config_index, guint16 *periodicity, guint16 *offset)
+static void sr_lookup_configindex(uint32_t config_index, uint16_t *periodicity, uint16_t *offset)
{
if (config_index < 5) {
*periodicity = 5;
@@ -3396,13 +3455,13 @@ dissect_lte_rrc_Handover_Preparation_Info(tvbuff_t *tvb, packet_info *pinfo, pro
/* Don't want elements inside message updating Info column, so set now and
freeze during dissection of PDU */
col_set_str(pinfo->cinfo, COL_INFO, "HandoverPreparationInformation");
- col_set_writable(pinfo->cinfo, COL_INFO, FALSE);
+ col_set_writable(pinfo->cinfo, COL_INFO, false);
ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
dissect_lte_rrc_HandoverPreparationInformation_PDU(tvb, pinfo, lte_rrc_tree, NULL);
- col_set_writable(pinfo->cinfo, COL_INFO, TRUE);
+ col_set_writable(pinfo->cinfo, COL_INFO, true);
return tvb_captured_length(tvb);
}
@@ -4391,6 +4450,50 @@ void proto_register_lte_rrc(void) {
{ "Reassembled Data", "lte-rrc.warningMessageSegment_r9.reassembled_data",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_lte_rrc_dcch_segment_fragments,
+ { "Fragments", "lte-rrc.dedicatedMessageSegment_r16.fragments",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lte_rrc_dcch_segment_fragment,
+ { "Fragment", "lte-rrc.dedicatedMessageSegment_r16.fragment",
+ FT_FRAMENUM, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lte_rrc_dcch_segment_fragment_overlap,
+ { "Fragment Overlap", "lte-rrc.dedicatedMessageSegment_r16.fragment_overlap",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lte_rrc_dcch_segment_fragment_overlap_conflict,
+ { "Fragment Overlap Conflict", "lte-rrc.dedicatedMessageSegment_r16.fragment_overlap_conflict",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lte_rrc_dcch_segment_fragment_multiple_tails,
+ { "Fragment Multiple Tails", "lte-rrc.dedicatedMessageSegment_r16.fragment_multiple_tails",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lte_rrc_dcch_segment_fragment_too_long_fragment,
+ { "Too Long Fragment", "lte-rrc.dedicatedMessageSegment_r16.fragment_too_long_fragment",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lte_rrc_dcch_segment_fragment_error,
+ { "Fragment Error", "lte-rrc.dedicatedMessageSegment_r16.fragment_error",
+ FT_FRAMENUM, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lte_rrc_dcch_segment_fragment_count,
+ { "Fragment Count", "lte-rrc.dedicatedMessageSegment_r16.fragment_count",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lte_rrc_dcch_segment_reassembled_in,
+ { "Reassembled In", "lte-rrc.dedicatedMessageSegment_r16.reassembled_in",
+ FT_FRAMENUM, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lte_rrc_dcch_segment_reassembled_length,
+ { "Reassembled Length", "lte-rrc.dedicatedMessageSegment_r16.reassembled_length",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lte_rrc_dcch_segment_reassembled_data,
+ { "Reassembled Data", "lte-rrc.dedicatedMessageSegment_r16.reassembled_data",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_lte_rrc_measGapPatterns_r15_bit1,
{ "Gap Pattern 4", "lte-rrc.measGapPatterns_r15.bit1",
FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
@@ -4426,7 +4529,7 @@ void proto_register_lte_rrc(void) {
};
/* List of subtrees */
- static gint *ett[] = {
+ static int *ett[] = {
&ett_lte_rrc,
#include "packet-lte-rrc-ettarr.c"
@@ -4454,6 +4557,8 @@ void proto_register_lte_rrc(void) {
&ett_lte_rrc_sib11_fragments,
&ett_lte_rrc_sib12_fragment,
&ett_lte_rrc_sib12_fragments,
+ &ett_lte_rrc_dcch_segment_fragment,
+ &ett_lte_rrc_dcch_segment_fragments,
&ett_lte_rrc_nr_SecondaryCellGroupConfig_r15,
&ett_lte_rrc_nr_RadioBearerConfig_r15,
&ett_lte_rrc_nr_RadioBearerConfigS_r15,
@@ -4545,11 +4650,15 @@ void proto_register_lte_rrc(void) {
lte_rrc_etws_cmas_dcs_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal);
lte_rrc_system_info_value_changed_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal);
+ lte_rrc_dcch_segment_ueid_count_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal);
+ lte_rrc_dcch_segment_id_tree = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
reassembly_table_register(&lte_rrc_sib11_reassembly_table,
- &addresses_reassembly_table_functions);
+ &addresses_reassembly_table_functions);
reassembly_table_register(&lte_rrc_sib12_reassembly_table,
- &addresses_reassembly_table_functions);
+ &addresses_reassembly_table_functions);
+ reassembly_table_register(&lte_rrc_dcch_segment_reassembly_table,
+ &addresses_reassembly_table_functions);
/* Register configuration preferences */
lte_rrc_module = prefs_register_protocol(proto_lte_rrc, NULL);
@@ -4557,6 +4666,10 @@ void proto_register_lte_rrc(void) {
"Show NAS PDU in root packet details",
"Whether the NAS PDU should be shown in the root packet details tree",
&lte_rrc_nas_in_root_tree);
+ prefs_register_bool_preference(lte_rrc_module, "reassemble_dcch_segments",
+ "Try to reassemble DCCH segmented messages",
+ "Whether the LTE RRC dissector should attempt to reassemble DCCH segmented messages",
+ &lte_rrc_reassemble_dcch_segments);
}