aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2010-04-29 20:45:53 +0000
committerAnders Broman <anders.broman@ericsson.com>2010-04-29 20:45:53 +0000
commit447faa608249ba769866a069b48698cf09c9b137 (patch)
tree2594675b8efedad7769dacfe13fb85fbc2ef4454 /epan/dissectors
parent3f9d9a766e557770e942840b17d78044a572d08e (diff)
From Mike Morrin:
Dissection of BSSMAP IEs: Old BSS to New BSS Info and New BSS to Old BSS Info https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4712 svn path=/trunk/; revision=32606
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-bssgp.c2
-rw-r--r--epan/dissectors/packet-bssgp.h3
-rw-r--r--epan/dissectors/packet-gsm_a_bssmap.c579
-rw-r--r--epan/dissectors/packet-gsm_a_common.c69
-rw-r--r--epan/dissectors/packet-gsm_a_common.h4
-rw-r--r--epan/dissectors/packet-gsm_a_rr.c67
-rw-r--r--epan/dissectors/packet-ranap.c54
-rw-r--r--epan/dissectors/packet-rrc.c184
-rw-r--r--epan/dissectors/packet-rrc.h1
9 files changed, 743 insertions, 220 deletions
diff --git a/epan/dissectors/packet-bssgp.c b/epan/dissectors/packet-bssgp.c
index bf4350f47d..9ab47eeeaf 100644
--- a/epan/dissectors/packet-bssgp.c
+++ b/epan/dissectors/packet-bssgp.c
@@ -4882,7 +4882,7 @@ decode_pdu_suspend(build_info_t *bi) {
decode_pdu_general(ies, 2, bi);
}
-static void
+void
decode_pdu_suspend_ack(build_info_t *bi) {
bssgp_ie_t ies[] = {
{ BSSGP_IEI_TLLI, NULL,
diff --git a/epan/dissectors/packet-bssgp.h b/epan/dissectors/packet-bssgp.h
index 696b5ea850..33005b7a1c 100644
--- a/epan/dissectors/packet-bssgp.h
+++ b/epan/dissectors/packet-bssgp.h
@@ -49,5 +49,8 @@ typedef struct {
extern const value_string tab_cause[];
+
+void decode_pdu_suspend_ack(build_info_t *bi);
+
#endif /* __PACKET_BSSGP_H__ */
diff --git a/epan/dissectors/packet-gsm_a_bssmap.c b/epan/dissectors/packet-gsm_a_bssmap.c
index 18421a5584..f5dff1a18a 100644
--- a/epan/dissectors/packet-gsm_a_bssmap.c
+++ b/epan/dissectors/packet-gsm_a_bssmap.c
@@ -48,10 +48,12 @@
#include <epan/asn1.h>
#include "packet-bssap.h"
+#include "packet-bssgp.h"
#include "packet-sccp.h"
#include "packet-gsm_a_common.h"
#include "packet-e212.h"
#include "packet-ranap.h"
+#include "packet-rrc.h"
/* PROTOTYPES/FORWARDS */
@@ -263,26 +265,29 @@ const value_string gsm_bssmap_elem_strings[] = {
{ 0, NULL }
};
-#if 0
/* 3.2.3 Signalling Field Element Coding */
-static const value_string bssap_sig_field_values[] = {
-
- { 0x1, "Extra information" }, /* 3.2.3.1 */
- { 0x2, "Current Channel Type 2" }, /* 3.2.2.2 */
- { 0x3, "Target cell radio information" }, /* 3.2.3.3 */
- { 0x4, "GPRS Suspend information" }, /* 3.2.3.4 */
- { 0x5, "MultiRate configuration information" }, /* 3.2.3.5 */
- { 0x6, "Dual Transfer Mode information" }, /* 3.2.3.6 */
- { 0x7, "Inter RAT Handover Info" }, /* 3.2.3.7 */
+static const value_string bssmap_field_element_ids[] = {
+
+ { 0x1, "BSSMAP Field Element: Extra information" }, /* 3.2.3.1 */
+ { 0x2, "BSSMAP Field Element: Current Channel Type 2" }, /* 3.2.2.2 */
+ { 0x3, "BSSMAP Field Element: Target cell radio information" }, /* 3.2.3.3 */
+ { 0x4, "BSSMAP Field Element: GPRS Suspend information" }, /* 3.2.3.4 */
+ { 0x5, "BSSMAP Field Element: MultiRate configuration information" }, /* 3.2.3.5 */
+ { 0x6, "BSSMAP Field Element: Dual Transfer Mode information" }, /* 3.2.3.6 */
+ { 0x7, "BSSMAP Field Element: Inter RAT Handover Info" }, /* 3.2.3.7 */
/*{ 0x7, "UE Capability information" },*/ /* 3.2.3.7 */
- { 0x8, "cdma2000 Capability Information" }, /* 3.2.3.8 */
- { 0x9, "Downlink Cell Load Information" }, /* 3.2.3.9 */
- { 0xa, "Uplink Cell Load Information" }, /* 3.2.3.10 */
- { 0xb, "Cell Load Information Group" }, /* 3.2.3.11 */
- { 0xc, "Cell Load Information" }, /* 3.2.3.12 */
+ { 0x8, "BSSMAP Field Element: cdma2000 Capability Information" }, /* 3.2.3.8 */
+ { 0x9, "BSSMAP Field Element: Downlink Cell Load Information" }, /* 3.2.3.9 */
+ { 0xa, "BSSMAP Field Element: Uplink Cell Load Information" }, /* 3.2.3.10 */
+ { 0xb, "BSSMAP Field Element: Cell Load Information Group" }, /* 3.2.3.11 */
+ { 0xc, "BSSMAP Field Element: Cell Load Information" }, /* 3.2.3.12 */
+ { 0x0d, "BSSMAP Field Element: PS Indication" }, /* 3.2.3.13 */
+ { 0x0e, "BSSMAP Field Element: DTM Handover Command Indication" }, /* 3.2.3.14 */
+ { 0x6f, "VGCS talker mode" }, /* although technically not a Field Element,
+ this IE can appear in Old BSS to New BSS information */
{ 0, NULL }
};
-#endif
+
static const value_string bssap_cc_values[] = {
{ 0x00, "not further specified" },
{ 0x80, "FACCH or SDCCH" },
@@ -377,12 +382,40 @@ static const true_false_string bssmap_cause_extension_value = {
"One Octet"
};
+/* Current Channel Type */
+static const value_string chan_mode_vals[] = {
+ { 0, "signalling only" },
+ { 1, "speech (full rate or half rate)" },
+ { 6, "data, 14.5 kbit/s radio interface rate" },
+ { 3, "data, 12.0 kbit/s radio interface rate" },
+ { 4, "data, 6.0 kbit/s radio interface rate" },
+ { 5, "data, 3.6 kbit/s radio interface rate" },
+ { 0x0f, "reserved" },
+ { 0, NULL}
+};
+
+static const value_string fe_cur_chan_type2_chan_field_vals[] = {
+ { 1, "SDCCH" },
+ { 8, "1 Full rate TCH" },
+ { 9, "1 Half rate TCH" },
+ { 10, "2 Full Rate TCHs" },
+ { 11, "3 Full Rate TCHs" },
+ { 12, "4 Full Rate TCHs" },
+ { 13, "5 Full Rate TCHs" },
+ { 14, "6 Full Rate TCHs" },
+ { 15, "7 Full Rate TCHs" },
+ { 4, "8 Full Rate TCHs" },
+ { 0, "reserved" },
+ { 0, NULL}
+};
+
/* Initialize the protocol and registered fields */
static int proto_a_bssmap = -1;
static int hf_gsm_a_bssmap_msg_type = -1;
int hf_gsm_a_length = -1;
int hf_gsm_a_bssmap_elem_id = -1;
+static int hf_gsm_a_bssmap_field_elem_id = -1;
int hf_gsm_a_bssmap_cell_ci = -1;
static int hf_gsm_a_bssmap_cell_lac = -1;
static int hf_gsm_a_bssmap_sac = -1;
@@ -400,6 +433,7 @@ static int hf_gsm_a_bssmap_seq_no = -1;
static int hf_gsm_a_bssap_cell_id_list_seg_cell_id_disc = -1;
static int hf_gsm_a_bssap_res_ind_method = -1;
static int hf_gsm_a_bssmap_ch_mode = -1;
+static int hf_gsm_a_bssmap_cur_ch_mode = -1;
static int hf_gsm_a_bssmap_channel = -1;
static int hf_gsm_a_bssmap_trace_trigger_id = -1;
static int hf_gsm_a_bssmap_trace_priority_indication = -1;
@@ -452,20 +486,47 @@ static int hf_gsm_a_bssmap_location_type_location_information = -1;
static int hf_gsm_a_bssmap_location_type_positioning_method = -1;
static int hf_gsm_a_bssmap_chan_type_extension = -1;
static int hf_gsm_a_bssmap_cause_extension = -1;
+static int hf_fe_extra_info_prec = -1;
+static int hf_fe_extra_info_lcs = -1;
+static int hf_fe_extra_info_ue_prob = -1;
+static int hf_fe_extra_info_spare = -1;
+static int hf_fe_cur_chan_type2_chan_mode = -1;
+static int hf_fe_cur_chan_type2_chan_mode_spare = -1;
+static int hf_fe_cur_chan_type2_chan_field = -1;
+static int hf_fe_cur_chan_type2_chan_field_spare = -1;
+static int hf_fe_target_radio_cell_info_rxlev_ncell = -1;
+static int hf_fe_target_radio_cell_info_rxlev_ncell_spare = -1;
+static int hf_fe_dtm_info_dtm_ind = -1;
+static int hf_fe_dtm_info_sto_ind = -1;
+static int hf_fe_dtm_info_egprs_ind = -1;
+static int hf_fe_dtm_info_spare_bits = -1;
+static int hf_fe_cell_load_info_cell_capacity_class = -1;
+static int hf_fe_cell_load_info_load_value = -1;
+static int hf_fe_cell_load_info_rt_load_value = -1;
+static int hf_fe_cell_load_info_nrt_load_information_value = -1;
+static int hf_fe_ps_indication = -1;
+static int hf_fe_dtm_ho_command_ind_spare = -1;
/* Initialize the subtree pointers */
static gint ett_bssmap_msg = -1;
static gint ett_cell_list = -1;
static gint ett_dlci = -1;
static gint ett_codec_lst = -1;
+static gint ett_bss_to_bss_info = -1;
static char a_bigbuf[1024];
static dissector_handle_t gsm_bsslap_handle = NULL;
static dissector_handle_t dtap_handle;
+static dissector_handle_t bssgp_handle;
+static dissector_handle_t rrc_handle;
static packet_info *g_pinfo;
static proto_tree *g_tree;
+static guint8 cell_discriminator = 0x0f; /* tracks whether handover is to UMTS */
+
+static guint16
+be_field_element_dissect(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_);
/*
This enum has been moved to packet-gsm_a_common to
@@ -1617,6 +1678,7 @@ be_cell_id(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar
proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
proto_tree_add_item(tree, hf_gsm_a_bssmap_be_cell_id_disc, tvb, curr_offset, 1, FALSE);
disc = oct&0x0f;
+ cell_discriminator = disc; /* may be required later */
curr_offset++;
NO_MORE_DATA_CHECK(len);
@@ -1781,12 +1843,33 @@ be_l3_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *ad
*/
l3_tvb = tvb_new_subset(tvb, curr_offset, len, len);
- call_dissector(dtap_handle, l3_tvb, g_pinfo, g_tree);
+ /* This information element carries a radio interface message.
+ In the case of an Intersystem handover to UMTS,
+ this information element contains a HANDOVER TO UTRAN COMMAND message
+ as defined in 3GPP TS 25.331.
+ In the case of an Inter BSC handover,
+ it contains an RR HANDOVER COMMAND message as defined in 3GPP TS 44.018.
+ In the case of an Intersystem handover to cdma2000,
+ this information element contains the HANDOVER TO CDMA2000 COMMAND message,
+ as defined in 3GPP TS 44.018. */
+
+ /* note that we can't (from this PDU alone) determine whether a handover is to UMTS or cdma2000
+ for now we will always assume (GSM or) UMTS.
+ Maybe if cdma2000 support is added later, a preference option would select dissection of cdma2000 or UMTS. */
+ if (cell_discriminator < 8) {
+ /* GSM */
+ call_dissector(dtap_handle, l3_tvb, g_pinfo, g_tree);
+ }
+ else if (cell_discriminator < 13) {
+ dissect_rrc_HandoverToUTRANCommand_PDU(l3_tvb, g_pinfo, g_tree);
+ }
curr_offset += len;
EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
+ cell_discriminator = 0x0f;
+
return(curr_offset - offset);
}
@@ -2513,7 +2596,7 @@ be_curr_chan_1(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, g
oct = tvb_get_guint8(tvb, curr_offset);
/* Channel mode */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_ch_mode, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_cur_ch_mode, tvb, curr_offset, 1, FALSE);
/* Channel */
proto_tree_add_item(tree, hf_gsm_a_bssmap_channel, tvb, curr_offset, 1, FALSE);
@@ -2679,20 +2762,24 @@ be_conf_evo_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_,
/*
* 3.2.2.58 Old BSS to New BSS information
*/
-static guint16
-be_old_bss_to_new_bss_inf(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+/* This function is only called from other protocols (e.g. RANAP),
+ internally, the Field Element dissector is called directly */
+void
+bssmap_old_bss_to_new_bss_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo)
{
- guint32 curr_offset;
-
- curr_offset = offset;
-
- if (len == 0)
- return len;
+ guint16 len;
+ if (!tree) {
+ return;
+ }
- proto_tree_add_text(tree, tvb, curr_offset, len , "Not decoded yet");
+ g_pinfo = pinfo;
+ g_tree = tree;
+ len = tvb_length(tvb);
+ be_field_element_dissect(tvb, tree, 0, len, NULL, 0);
- return(len);
+ g_pinfo = NULL;
+ g_tree = NULL;
}
/*
* 3.2.2.59 (void)
@@ -3046,9 +3133,6 @@ be_geran_cls_m(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, g
curr_offset = offset;
proto_tree_add_text(tree, tvb, curr_offset, len , "Not decoded yet");
- /* The Source RNC to Target RNC transparent Information value (structure and encoding)
- * for cdma2000 is defined in relevant specifications.
- */
return(len);
}
@@ -3059,17 +3143,27 @@ be_geran_cls_m(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, g
/*
* 3.2.2.80 New BSS to Old BSS Information
*/
-static guint16
-be_new_bss_to_old_bss_inf(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+/* This function is only called from other protocols (e.g. RANAP),
+ internally, the Field Element dissector is called directly */
+void
+bssmap_new_bss_to_old_bss_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo)
{
- guint32 curr_offset;
+ guint16 len;
+ if (!tree) {
+ return;
+ }
- curr_offset = offset;
+ g_pinfo = pinfo;
+ g_tree = tree;
- proto_tree_add_text(tree, tvb, curr_offset, len , "Not decoded yet");
+ len = tvb_length(tvb);
+ be_field_element_dissect(tvb, tree, 0, len, NULL, 0);
- return(len);
+ g_pinfo = NULL;
+ g_tree = NULL;
}
+
+
/*
* 3.2.2.81 Inter-System Information
*/
@@ -3696,7 +3790,7 @@ guint16 (*bssmap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, gu
de_d_gb_call_ref, /* Group Call Reference */
NULL, /* eMLPP Priority */
be_conf_evo_ind, /* Configuration Evolution Indication */
- be_old_bss_to_new_bss_inf, /* Old BSS to New BSS Information */
+ be_field_element_dissect, /* Old BSS to New BSS Information */
be_lsa_id, /* LSA Identifier */
be_lsa_id_list, /* LSA Identifier List */
be_lsa_info, /* LSA Information */
@@ -3720,7 +3814,7 @@ guint16 (*bssmap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, gu
be_src_rnc_to_tar_rnc_cdma, /* Source RNC to target RNC transparent information (cdma2000) */
be_geran_cls_m, /* GERAN Classmark */
NULL, /* GERAN BSC Container */
- be_new_bss_to_old_bss_inf, /* New BSS to Old BSS Information */
+ be_field_element_dissect, /* New BSS to Old BSS Information */
be_inter_sys_inf, /* Inter-System Information */
be_sna_acc_inf, /* SNA Access Information */
NULL, /* VSTK_RAND Information */
@@ -3755,7 +3849,289 @@ guint16 (*bssmap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, gu
NULL, /* NONE */
};
+/* 3.2.3 Signalling Field Element Coding */
+/* 3.2.3.1 Extra information */
+static const value_string fe_extra_info_prec_vals[] = {
+ { 0, "The old BSS recommends that this allocation request should not cause a pre-emption an existing connection" },
+ { 1, "The old BSS recommends that this allocation request is allowed to preempt an existing connection based on the information supplied in the Priority information element, if available" },
+ { 0, NULL}
+};
+static const value_string fe_extra_info_lcs_vals[] = {
+ { 0, "No ongoing LCS procedure" },
+ { 1, "An ongoing LCS procedure was interrupted by handover. The new BSS may notify the SMLC when the handover is completed" },
+ { 0, NULL}
+};
+
+static const value_string fe_extra_info_ue_prob_vals[] = {
+ { 0, "This MS supports handover to UMTS" },
+ { 1, "This MS does not support handover to UMTS" },
+ { 0, NULL}
+};
+
+static guint16
+be_fe_extra_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+ proto_tree_add_item(tree, hf_fe_extra_info_prec, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_extra_info_lcs, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_extra_info_ue_prob, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_extra_info_spare, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+
+ return(curr_offset - offset);
+}
+
+/* 3.2.3.2 Current Channel type 2 */
+static guint16
+be_fe_cur_chan_type2(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+ proto_tree_add_item(tree, hf_fe_cur_chan_type2_chan_mode, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_cur_chan_type2_chan_mode_spare, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+ proto_tree_add_item(tree, hf_fe_cur_chan_type2_chan_field, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_cur_chan_type2_chan_field_spare, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+
+ return(curr_offset - offset);
+}
+
+/* 3.2.3.3 Target cell radio information */
+static guint16
+be_fe_target_radio_cell_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+ proto_tree_add_item(tree, hf_fe_target_radio_cell_info_rxlev_ncell, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_target_radio_cell_info_rxlev_ncell_spare, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+
+ return(curr_offset - offset);
+}
+
+/* 3.2.3.4 GPRS Suspend Information */
+static guint16
+be_fe_gprs_suspend_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset = offset;
+ build_info_t bi;
+
+ /* This Field Element contains the contents of the Gb interface SUSPEND ACK PDU,
+ Call the BSSGP dissector here, assuming that the encoding is per 48.018 */
+
+ bi.tvb = tvb;
+ bi.offset = offset;
+ bi.pinfo = g_pinfo;
+ bi.bssgp_tree = tree;
+ bi.parent_tree = g_tree;
+ bi.dl_data = TRUE;
+ bi.ul_data = FALSE;
+ bi.pdutype = 0x0c; /* BSSGP_PDU_SUSPEND_ACK */
+
+ decode_pdu_suspend_ack(&bi);
+ curr_offset += len;
+
+ return(curr_offset - offset);
+}
+
+/* 3.2.3.5 MultiRate configuration Information */
+
+/* 3.2.3.6 Dual Transfer Mode information */
+static const value_string gsm_a_bssmap_dtm_info_dtm_ind_vals[] = {
+ { 0, "The MS has resources allocated exclusively for the CS domain in the old cell" },
+ { 1, "The MS has resources allocated for both the CS and PS domains in the old cell" },
+ { 0, NULL },
+};
+
+static const value_string gsm_a_bssmap_dtm_info_sto_ind_vals[] = {
+ { 0, "The MS is in multislot operation in the old cell" },
+ { 1, "The MS is in single timeslot operation in the old cell" },
+ { 0, NULL },
+};
+
+static const value_string gsm_a_bssmap_dtm_info_egprs_ind_vals[] = {
+ { 0, "The MS has no TBF using E-GPRS in the old cell" },
+ { 1, "The MS has a TBF using E-GPRS in the old cell" },
+ { 0, NULL },
+};
+
+static guint16
+be_fe_dual_transfer_mode_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+ proto_tree_add_item(tree, hf_fe_dtm_info_dtm_ind, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_dtm_info_sto_ind, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_dtm_info_egprs_ind, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_dtm_info_spare_bits, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+
+ return(curr_offset - offset);
+}
+
+/* 3.2.3.7 Inter RAT Handover Info */
+static guint16
+be_fe_inter_rat_handover_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ tvbuff_t *container_tvb;
+
+ /* Octets 3-n are encoded as Inter RAT Handover Info as defined in 3GPP TS 25.331 */
+ container_tvb = tvb_new_subset(tvb, offset, len, len);
+ dissect_rrc_InterRATHandoverInfo_PDU(container_tvb, g_pinfo , tree);
+
+ return len;
+}
+
+/* 3.2.3.8 cdma2000 Capability Information */
+
+/* 3.2.3.9 Downlink Cell Load Information */
+
+/* 3.2.3.10 Uplink Cell Load Information */
+
+
+static const value_string gsm_a_bssmap_cell_load_nrt_vals[] = {
+ { 0, "NRT Load is low" },
+ { 1, "NRT load is medium" },
+ { 2, "NRT load is high. (Probability to admit a new user is low.)" },
+ { 3, "NRT overload. (Probability to admit a new user is low, packets are discarded and the source is recommended to reduce the data flow.)" },
+ { 0, NULL },
+};
+
+/* 3.2.3.11 Cell Load Information Group */
+static guint16
+be_fe_cell_load_info_group(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+ curr_offset += be_cell_id(tvb, tree, curr_offset, len, NULL, 0);
+ curr_offset += be_field_element_dissect(tvb, tree, curr_offset, len + offset - curr_offset, NULL, 0);
+
+ return(curr_offset - offset);
+}
+
+/* 3.2.3.12 Cell Load Information */
+static guint16
+be_fe_cell_load_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+ proto_tree_add_item(tree, hf_fe_cell_load_info_cell_capacity_class, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+ proto_tree_add_item(tree, hf_fe_cell_load_info_load_value, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+ proto_tree_add_item(tree, hf_fe_cell_load_info_rt_load_value, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+ proto_tree_add_item(tree, hf_fe_cell_load_info_nrt_load_information_value, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+
+ return(curr_offset - offset);
+}
+
+/* 3.2.3.13 PS Indication */
+static guint16
+be_fe_ps_indication(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+ proto_tree_add_item(tree, hf_fe_ps_indication, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+
+ return(curr_offset - offset);
+}
+
+/* 3.2.3.14 DTM Handover Command Indication */
+static guint16
+be_fe_dtm_ho_command_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+ proto_tree_add_item(tree, hf_fe_dtm_ho_command_ind_spare, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+
+ return(curr_offset - offset);
+}
+
+static guint16 (*bssmap_bss_to_bss_element_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_) = {
+ be_fe_extra_info, /* { 0x01, "Extra information" }, */
+ be_fe_cur_chan_type2, /* { 0x02, "Current Channel Type 2" }, */
+ be_fe_target_radio_cell_info, /* { 0x03, "Target cell radio information" }, */
+ be_fe_gprs_suspend_info, /* { 0x04, "GPRS Suspend information" }, */
+ de_rr_multirate_conf, /* { 0x05, "MultiRate configuration information" }, */
+ be_fe_dual_transfer_mode_info, /* { 0x06, "Dual Transfer Mode Information" }, */
+ be_fe_inter_rat_handover_info, /* { 0x07, "Inter RAT Handover Info" }, */
+ NULL, /* { 0x08, "cdma2000 Capability Information" }, */
+ be_fe_cell_load_info, /* { 0x09, "Downlink Cell Load Information" }, */
+ be_fe_cell_load_info, /* { 0x0a, "Uplink Cell Load Information" }, */
+ be_fe_cell_load_info_group, /* { 0x0b, "Cell Load Information Group" }, */
+ be_fe_cell_load_info, /* { 0x0c, "Cell Load Information" }, */
+ be_fe_ps_indication, /* { 0x0d, "PS Indication" }, */
+ be_fe_dtm_ho_command_ind, /* { 0x0e, "DTM Handover Command Indication" }, */
+ be_vgcs_talker_mode, /* { 0x6f, "VGCS talker mode" }, */ /* not really a field element
+ but does appear in old bss to new bss info */
+ NULL, /* NONE */
+};
+
+static guint16
+be_field_element_dissect(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset, ie_len, idx, fe_start_offset;
+ const gchar *str;
+ proto_item *item = NULL;
+ proto_tree * bss_to_bss_tree = NULL;
+
+ curr_offset = offset;
+
+
+ while (curr_offset - offset + 2 < len) {
+ guint8 oct;
+ /*
+ * add name
+ */
+ oct = tvb_get_guint8(tvb, curr_offset++);
+
+ str = match_strval_idx((guint32) oct, bssmap_field_element_ids, &idx);
+ ie_len = tvb_get_guint8(tvb, curr_offset++);
+
+ /*
+ * add Field Element name
+ */
+ item = proto_tree_add_uint_format(tree, hf_gsm_a_bssmap_field_elem_id,
+ tvb, curr_offset - 2, ie_len + 2, oct, "%s (%X)", str, oct);
+
+ bss_to_bss_tree = proto_item_add_subtree(item, ett_bss_to_bss_info);
+ fe_start_offset = curr_offset;
+
+ /*
+ * decode field element
+ */
+ if ((str == NULL) || (bssmap_bss_to_bss_element_fcn[idx] == NULL))
+ {
+ proto_tree_add_text(bss_to_bss_tree,
+ tvb, curr_offset, ie_len,
+ "Field Element not decoded");
+ curr_offset += ie_len;
+ }
+ else
+ {
+ /* dissect the field element */
+ curr_offset += (*bssmap_bss_to_bss_element_fcn[idx])(tvb, bss_to_bss_tree, curr_offset, ie_len, NULL, 0);
+
+ EXTRANEOUS_DATA_CHECK(ie_len, curr_offset - fe_start_offset);
+ }
+ }
+ return len;
+}
/* MESSAGE FUNCTIONS */
/*
@@ -5914,6 +6290,8 @@ dissect_bssmap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
(*bssmap_msg_fcn[idx])(tvb, bssmap_tree, offset, len - offset);
}
+ g_pinfo = NULL;
+ g_tree = NULL;
}
/* Register the protocol with Wireshark */
@@ -5937,6 +6315,11 @@ proto_register_gsm_a_bssmap(void)
FT_UINT8, BASE_DEC, NULL, 0,
NULL, HFILL }
},
+ { &hf_gsm_a_bssmap_field_elem_id,
+ { "Field Element ID", "gsm_a_bssmap.field_elem_id",
+ FT_UINT8, BASE_HEX, VALS(bssmap_field_element_ids), 0,
+ NULL, HFILL }
+ },
{ &hf_gsm_a_length,
{ "Length", "gsm_a.len",
FT_UINT16, BASE_DEC, NULL, 0,
@@ -6027,6 +6410,11 @@ proto_register_gsm_a_bssmap(void)
FT_UINT8,BASE_DEC, VALS(gsm_a_bssmap_ch_mode_vals), 0xf0,
NULL, HFILL }
},
+ { &hf_gsm_a_bssmap_cur_ch_mode,
+ { "Channel Mode", "fe_cur_chan_type2.chan_mode",
+ FT_UINT8, BASE_HEX, VALS(chan_mode_vals), 0xf0,
+ NULL, HFILL }
+ },
{ &hf_gsm_a_bssmap_channel,
{ "Channel","gsm_a_bssmap.channel",
FT_UINT8,BASE_DEC, VALS(gsm_a_bssmap_channel_vals), 0x0f,
@@ -6271,27 +6659,127 @@ proto_register_gsm_a_bssmap(void)
{ &hf_gsm_a_bssmap_location_type_location_information,
{ "Location Information", "gsm_a_bssmap.locationType.locationInformation",
FT_UINT8, BASE_HEX, VALS(bssmap_location_information_vals), 0x0,
- NULL, HFILL}
+ NULL, HFILL }
},
{ &hf_gsm_a_bssmap_location_type_positioning_method,
{ "Positioning Method", "gsm_a_bssmap.locationType.positioningMethod",
FT_UINT8, BASE_HEX, VALS(bssmap_positioning_method_vals), 0x0,
- NULL, HFILL}
+ NULL, HFILL }
},
{ &hf_gsm_a_bssmap_chan_type_extension,
{ "Extension", "gsm_a_bssmap.chanType.permittedIndicator.extension",
FT_BOOLEAN, 8, TFS(&bssmap_chan_type_extension_value), 0x80,
- NULL, HFILL}
+ NULL, HFILL }
},
{ &hf_gsm_a_bssmap_cause_extension,
{ "Extension", "gsm_a_bssmap.causeType.extension",
FT_BOOLEAN, 8, TFS(&bssmap_cause_extension_value), 0x80,
- NULL, HFILL}
+ NULL, HFILL }
},
+ { &hf_fe_extra_info_prec,
+ { "Pre-emption Recommendation", "fe_extra_info.prec",
+ FT_UINT8, BASE_DEC, VALS(fe_extra_info_prec_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_fe_extra_info_lcs,
+ { "LCS Information", "fe_extra_info.lcs",
+ FT_UINT8, BASE_DEC, VALS(fe_extra_info_lcs_vals), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_fe_extra_info_ue_prob,
+ { "UE support of UMTS", "fe_extra_info.ue_prob",
+ FT_UINT8, BASE_DEC, VALS(fe_extra_info_ue_prob_vals), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_fe_extra_info_spare,
+ { "Extra Information Spare bits", "fe_extra_info.spare",
+ FT_UINT8, BASE_HEX, NULL, 0xf8,
+ NULL, HFILL }
+ },
+ { &hf_fe_cur_chan_type2_chan_mode,
+ { "Channel Mode", "fe_cur_chan_type2.chan_mode",
+ FT_UINT8, BASE_HEX, VALS(chan_mode_vals), 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_fe_cur_chan_type2_chan_mode_spare,
+ { "Channel Mode Spare bits", "fe_cur_chan_type2_chan_mode.spare",
+ FT_UINT8, BASE_HEX, NULL, 0xf0,
+ NULL, HFILL }
+ },
+ { &hf_fe_cur_chan_type2_chan_field,
+ { "Channel Field", "fe_cur_chan_type2.chan_field",
+ FT_UINT8, BASE_HEX, VALS(fe_cur_chan_type2_chan_field_vals),0x0f,
+ NULL, HFILL }
+ },
+ { &hf_fe_cur_chan_type2_chan_field_spare,
+ { "Channel field Spare bits", "fe_cur_chan_type2_chan_field.spare",
+ FT_UINT8, BASE_HEX, NULL, 0xf0,
+ NULL, HFILL }
+ },
+ { &hf_fe_target_radio_cell_info_rxlev_ncell,
+ { "RXLEV-NCELL", "fe_target_radio_cell_info.rxlev_ncell",
+ FT_UINT8, BASE_HEX, VALS(gsm_a_rr_rxlev_vals), 0x3f,
+ NULL, HFILL }
+ },
+ { &hf_fe_target_radio_cell_info_rxlev_ncell_spare,
+ { "RXLEV-NCELL Spare bits", "fe_target_radio_cell_info.rxlev_ncell_spare",
+ FT_UINT8, BASE_HEX, NULL, 0xc0,
+ NULL, HFILL }
+ },
+ { &hf_fe_dtm_info_dtm_ind,
+ { "DTM indicator", "fe_dtm_info.dtm_ind",
+ FT_UINT8, BASE_HEX, VALS(gsm_a_bssmap_dtm_info_dtm_ind_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_fe_dtm_info_sto_ind,
+ { "Time Slot Operation indicator", "fe_dtm_info.sto_ind",
+ FT_UINT8, BASE_HEX, VALS(gsm_a_bssmap_dtm_info_sto_ind_vals), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_fe_dtm_info_egprs_ind,
+ { "EGPRS indicator", "fe_dtm_info.egprs_ind",
+ FT_UINT8, BASE_HEX, VALS(gsm_a_bssmap_dtm_info_egprs_ind_vals), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_fe_dtm_info_spare_bits,
+ { "DTM Info Spare bits", "fe_dtm_info.spare_bits",
+ FT_UINT8, BASE_HEX, NULL, 0xf8,
+ NULL, HFILL }
+ },
+ { &hf_fe_cell_load_info_cell_capacity_class,
+ { "Cell capacity class", "fe_cell_load_info.cell_capacity_class",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_fe_cell_load_info_load_value,
+ { "Load value", "fe_cell_load_info.load_info",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_fe_cell_load_info_rt_load_value,
+ { "Realtime load value", "fe_cell_load_info.rt_load_value",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_fe_cell_load_info_nrt_load_information_value,
+ { "Non-Realtime load information value", "fe_cell_load_info.nrt_load_info_value",
+ FT_UINT8, BASE_HEX, VALS(gsm_a_bssmap_cell_load_nrt_vals), 0,
+ NULL, HFILL }
+ },
+ { &hf_fe_ps_indication,
+ { "PS Indication", "fe_ps_indication.value",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_fe_dtm_ho_command_ind_spare,
+ { "Spare octet", "fe_dtm_ho_command_ind.spare",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL }
+ },
};
/* Setup protocol subtree array */
-#define NUM_INDIVIDUAL_ELEMS 4
+#define NUM_INDIVIDUAL_ELEMS 5
gint *ett[NUM_INDIVIDUAL_ELEMS + NUM_GSM_BSSMAP_MSG +
NUM_GSM_BSSMAP_ELEM];
@@ -6299,6 +6787,7 @@ proto_register_gsm_a_bssmap(void)
ett[1] = &ett_cell_list;
ett[2] = &ett_dlci;
ett[3] = &ett_codec_lst,
+ ett[4] = &ett_bss_to_bss_info,
last_offset = NUM_INDIVIDUAL_ELEMS;
@@ -6337,5 +6826,7 @@ proto_reg_handoff_gsm_a_bssmap(void)
dtap_handle = find_dissector("gsm_a_dtap");
gsm_bsslap_handle = find_dissector("gsm_bsslap");
+ bssgp_handle = find_dissector ("bssgp");
+ rrc_handle = find_dissector ("rrc");
}
diff --git a/epan/dissectors/packet-gsm_a_common.c b/epan/dissectors/packet-gsm_a_common.c
index 290b85a148..40a44e32c0 100644
--- a/epan/dissectors/packet-gsm_a_common.c
+++ b/epan/dissectors/packet-gsm_a_common.c
@@ -460,6 +460,74 @@ static const value_string e_utra_meas_and_report_support_vals[] = {
{ 0, NULL}
};
+const value_string gsm_a_rr_rxlev_vals [] = {
+ { 0, "< -110 dBm"},
+ { 1, "-110 <= x < -109 dBm"},
+ { 2, "-109 <= x < -108 dBm"},
+ { 3, "-108 <= x < -107 dBm"},
+ { 4, "-107 <= x < -106 dBm"},
+ { 5, "-106 <= x < -105 dBm"},
+ { 6, "-105 <= x < -104 dBm"},
+ { 7, "-104 <= x < -103 dBm"},
+ { 8, "-103 <= x < -102 dBm"},
+ { 9, "-102 <= x < -101 dBm"},
+ {10, "-101 <= x < -100 dBm"},
+ {11, "-100 <= x < -99 dBm"},
+ {12, "-99 <= x < -98 dBm"},
+ {13, "-98 <= x < -97 dBm"},
+ {14, "-97 <= x < -96 dBm"},
+ {15, "-96 <= x < -95 dBm"},
+ {16, "-95 <= x < -94 dBm"},
+ {17, "-94 <= x < -93 dBm"},
+ {18, "-93 <= x < -92 dBm"},
+ {19, "-92 <= x < -91 dBm"},
+ {20, "-91 <= x < -90 dBm"},
+ {21, "-90 <= x < -89 dBm"},
+ {22, "-89 <= x < -88 dBm"},
+ {23, "-88 <= x < -87 dBm"},
+ {24, "-87 <= x < -86 dBm"},
+ {25, "-86 <= x < -85 dBm"},
+ {26, "-85 <= x < -84 dBm"},
+ {27, "-84 <= x < -83 dBm"},
+ {28, "-83 <= x < -82 dBm"},
+ {29, "-82 <= x < -81 dBm"},
+ {30, "-81 <= x < -80 dBm"},
+ {31, "-80 <= x < -79 dBm"},
+ {32, "-79 <= x < -78 dBm"},
+ {33, "-78 <= x < -77 dBm"},
+ {34, "-77 <= x < -76 dBm"},
+ {35, "-76 <= x < -75 dBm"},
+ {36, "-75 <= x < -74 dBm"},
+ {37, "-74 <= x < -73 dBm"},
+ {38, "-73 <= x < -72 dBm"},
+ {39, "-72 <= x < -71 dBm"},
+ {40, "-71 <= x < -70 dBm"},
+ {41, "-70 <= x < -69 dBm"},
+ {42, "-69 <= x < -68 dBm"},
+ {43, "-68 <= x < -67 dBm"},
+ {44, "-67 <= x < -66 dBm"},
+ {45, "-66 <= x < -65 dBm"},
+ {46, "-65 <= x < -64 dBm"},
+ {47, "-64 <= x < -63 dBm"},
+ {48, "-63 <= x < -62 dBm"},
+ {49, "-62 <= x < -61 dBm"},
+ {50, "-61 <= x < -60 dBm"},
+ {51, "-60 <= x < -59 dBm"},
+ {52, "-59 <= x < -58 dBm"},
+ {53, "-58 <= x < -57 dBm"},
+ {54, "-57 <= x < -56 dBm"},
+ {55, "-56 <= x < -55 dBm"},
+ {56, "-55 <= x < -54 dBm"},
+ {57, "-54 <= x < -53 dBm"},
+ {58, "-53 <= x < -52 dBm"},
+ {59, "-52 <= x < -51 dBm"},
+ {60, "-51 <= x < -50 dBm"},
+ {61, "-50 <= x < -49 dBm"},
+ {62, "-49 <= x < -48 dBm"},
+ {63, ">= -48 dBm"},
+ { 0, NULL}
+};
+
/* Initialize the protocol and registered fields */
static int proto_a_common = -1;
@@ -593,6 +661,7 @@ static int hf_gsm_a_additional_positioning_caps = -1;
static int hf_gsm_a_e_utra_fdd_support = -1;
static int hf_gsm_a_e_utra_tdd_support = -1;
static int hf_gsm_a_e_utra_meas_and_report_support = -1;
+static int hf_gsm_a_rxlev_ncell = -1;
static int hf_gsm_a_geo_loc_type_of_shape = -1;
static int hf_gsm_a_geo_loc_sign_of_lat = -1;
diff --git a/epan/dissectors/packet-gsm_a_common.h b/epan/dissectors/packet-gsm_a_common.h
index 7ec2564509..88f68b046b 100644
--- a/epan/dissectors/packet-gsm_a_common.h
+++ b/epan/dissectors/packet-gsm_a_common.h
@@ -566,6 +566,9 @@ void dissect_bssmap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
void dissect_bssmap_le(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
+void bssmap_old_bss_to_new_bss_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo);
+void bssmap_new_bss_to_old_bss_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo);
+
void dtap_mm_mm_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len);
guint16 be_cell_id_aux(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len, guint8 disc);
@@ -644,6 +647,7 @@ extern const value_string gsm_a_qos_traff_hdl_pri_vals[];
extern const value_string gsm_a_type_of_number_values[];
extern const value_string gsm_a_numbering_plan_id_values[];
extern const value_string gsm_a_sms_vals[];
+extern const value_string gsm_a_rr_rxlev_vals [];
typedef enum
{
diff --git a/epan/dissectors/packet-gsm_a_rr.c b/epan/dissectors/packet-gsm_a_rr.c
index 24b00aa936..92c037a3ca 100644
--- a/epan/dissectors/packet-gsm_a_rr.c
+++ b/epan/dissectors/packet-gsm_a_rr.c
@@ -2587,73 +2587,6 @@ static const true_false_string gsm_a_rr_dtx_vals = {
"DTX was not used"
};
-static const value_string gsm_a_rr_rxlev_vals [] = {
- { 0, "< -110 dBm"},
- { 1, "-110 <= x < -109 dBm"},
- { 2, "-109 <= x < -108 dBm"},
- { 3, "-108 <= x < -107 dBm"},
- { 4, "-107 <= x < -106 dBm"},
- { 5, "-106 <= x < -105 dBm"},
- { 6, "-105 <= x < -104 dBm"},
- { 7, "-104 <= x < -103 dBm"},
- { 8, "-103 <= x < -102 dBm"},
- { 9, "-102 <= x < -101 dBm"},
- {10, "-101 <= x < -100 dBm"},
- {11, "-100 <= x < -99 dBm"},
- {12, "-99 <= x < -98 dBm"},
- {13, "-98 <= x < -97 dBm"},
- {14, "-97 <= x < -96 dBm"},
- {15, "-96 <= x < -95 dBm"},
- {16, "-95 <= x < -94 dBm"},
- {17, "-94 <= x < -93 dBm"},
- {18, "-93 <= x < -92 dBm"},
- {19, "-92 <= x < -91 dBm"},
- {20, "-91 <= x < -90 dBm"},
- {21, "-90 <= x < -89 dBm"},
- {22, "-89 <= x < -88 dBm"},
- {23, "-88 <= x < -87 dBm"},
- {24, "-87 <= x < -86 dBm"},
- {25, "-86 <= x < -85 dBm"},
- {26, "-85 <= x < -84 dBm"},
- {27, "-84 <= x < -83 dBm"},
- {28, "-83 <= x < -82 dBm"},
- {29, "-82 <= x < -81 dBm"},
- {30, "-81 <= x < -80 dBm"},
- {31, "-80 <= x < -79 dBm"},
- {32, "-79 <= x < -78 dBm"},
- {33, "-78 <= x < -77 dBm"},
- {34, "-77 <= x < -76 dBm"},
- {35, "-76 <= x < -75 dBm"},
- {36, "-75 <= x < -74 dBm"},
- {37, "-74 <= x < -73 dBm"},
- {38, "-73 <= x < -72 dBm"},
- {39, "-72 <= x < -71 dBm"},
- {40, "-71 <= x < -70 dBm"},
- {41, "-70 <= x < -69 dBm"},
- {42, "-69 <= x < -68 dBm"},
- {43, "-68 <= x < -67 dBm"},
- {44, "-67 <= x < -66 dBm"},
- {45, "-66 <= x < -65 dBm"},
- {46, "-65 <= x < -64 dBm"},
- {47, "-64 <= x < -63 dBm"},
- {48, "-63 <= x < -62 dBm"},
- {49, "-62 <= x < -61 dBm"},
- {50, "-61 <= x < -60 dBm"},
- {51, "-60 <= x < -59 dBm"},
- {52, "-59 <= x < -58 dBm"},
- {53, "-58 <= x < -57 dBm"},
- {54, "-57 <= x < -56 dBm"},
- {55, "-56 <= x < -55 dBm"},
- {56, "-55 <= x < -54 dBm"},
- {57, "-54 <= x < -53 dBm"},
- {58, "-53 <= x < -52 dBm"},
- {59, "-52 <= x < -51 dBm"},
- {60, "-51 <= x < -50 dBm"},
- {61, "-50 <= x < -49 dBm"},
- {62, "-49 <= x < -48 dBm"},
- {63, ">= -48 dBm"},
- { 0, NULL}
-};
static const true_false_string gsm_a_rr_mv_vals = {
"The measurement results are not valid",
diff --git a/epan/dissectors/packet-ranap.c b/epan/dissectors/packet-ranap.c
index cd53ee4a87..164492457e 100644
--- a/epan/dissectors/packet-ranap.c
+++ b/epan/dissectors/packet-ranap.c
@@ -51,6 +51,7 @@
#include "packet-ranap.h"
#include "packet-e212.h"
#include "packet-sccp.h"
+#include "packet-gsm_a_common.h"
#ifdef _MSC_VER
/* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
@@ -382,7 +383,7 @@ typedef enum _ProtocolIE_ID_enum {
} ProtocolIE_ID_enum;
/*--- End of included file: packet-ranap-val.h ---*/
-#line 62 "packet-ranap-template.c"
+#line 63 "packet-ranap-template.c"
/* Initialize the protocol and registered fields */
static int proto_ranap = -1;
@@ -1033,7 +1034,7 @@ static int hf_ranap_unsuccessfulOutcome_value = -1; /* UnsuccessfulOutcome_valu
static int hf_ranap_value = -1; /* T_value */
/*--- End of included file: packet-ranap-hf.c ---*/
-#line 75 "packet-ranap-template.c"
+#line 76 "packet-ranap-template.c"
/* Initialize the subtree pointers */
static int ett_ranap = -1;
@@ -1338,7 +1339,7 @@ static gint ett_ranap_UnsuccessfulOutcome = -1;
static gint ett_ranap_Outcome = -1;
/*--- End of included file: packet-ranap-ett.c ---*/
-#line 81 "packet-ranap-template.c"
+#line 82 "packet-ranap-template.c"
/* Global variables */
static guint32 ProcedureCode;
@@ -2485,7 +2486,7 @@ dissect_ranap_APN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto
static int
dissect_ranap_PLMNidentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 239 "ranap.cnf"
+#line 262 "ranap.cnf"
tvbuff_t *parameter_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -4271,7 +4272,7 @@ dissect_ranap_GlobalRNC_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static int
dissect_ranap_GTP_TEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 280 "ranap.cnf"
+#line 303 "ranap.cnf"
tvbuff_t *parameter_tvb=NULL;
int saved_hf;
@@ -4968,8 +4969,15 @@ dissect_ranap_LocationRelatedDataRequestTypeSpecificToGERANIuMode(tvbuff_t *tvb
static int
dissect_ranap_L3_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 250 "ranap.cnf"
+ tvbuff_t *l3_info_tvb=NULL;
+
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
- NO_BOUND, NO_BOUND, FALSE, NULL);
+ NO_BOUND, NO_BOUND, FALSE, &l3_info_tvb);
+
+ if (l3_info_tvb)
+ dissector_try_port(nas_pdu_dissector_table, 0x1, l3_info_tvb, actx->pinfo, proto_tree_get_root(tree));
+
return offset;
}
@@ -5171,8 +5179,15 @@ dissect_ranap_NAS_SynchronisationIndicator(tvbuff_t *tvb _U_, int offset _U_, as
static int
dissect_ranap_NewBSS_To_OldBSS_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 242 "ranap.cnf"
+ tvbuff_t *bss_info_tvb=NULL;
+
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
- NO_BOUND, NO_BOUND, FALSE, NULL);
+ NO_BOUND, NO_BOUND, FALSE, &bss_info_tvb);
+
+ if (bss_info_tvb)
+ bssmap_new_bss_to_old_bss_info(bss_info_tvb, tree, actx->pinfo);
+
return offset;
}
@@ -5217,8 +5232,15 @@ dissect_ranap_NumberOfSteps(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
dissect_ranap_OldBSS_ToNewBSS_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 234 "ranap.cnf"
+ tvbuff_t *bss_info_tvb=NULL;
+
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
- NO_BOUND, NO_BOUND, FALSE, NULL);
+ NO_BOUND, NO_BOUND, FALSE, &bss_info_tvb);
+
+ if (bss_info_tvb)
+ bssmap_old_bss_to_new_bss_info(bss_info_tvb, tree, actx->pinfo);
+
return offset;
}
@@ -6301,7 +6323,7 @@ dissect_ranap_Service_Handover(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_ranap_Source_ToTarget_TransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 306 "ranap.cnf"
+#line 329 "ranap.cnf"
dissect_ranap_SourceRNC_ToTargetRNC_TransparentContainer(tvb , offset, actx ,tree , hf_ranap_ranap_SourceRNC_ToTargetRNC_TransparentContainer_PDU );
@@ -6378,7 +6400,7 @@ static const per_sequence_t SourceRNC_ToTargetRNC_TransparentContainer_sequence[
static int
dissect_ranap_SourceRNC_ToTargetRNC_TransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 292 "ranap.cnf"
+#line 315 "ranap.cnf"
/* If SourceRNC-ToTargetRNC-TransparentContainer is called trough
dissect_ranap_SourceRNC_ToTargetRNC_TransparentContainer_PDU
ProtocolIE_ID may be unset
@@ -6504,7 +6526,7 @@ dissect_ranap_SRVCC_Operation_Possible(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static int
dissect_ranap_Target_ToSource_TransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 316 "ranap.cnf"
+#line 339 "ranap.cnf"
dissect_ranap_TargetRNC_ToSourceRNC_TransparentContainer(tvb , offset, actx ,tree , hf_ranap_TargetRNC_ToSourceRNC_TransparentContainer_PDU );
@@ -6689,7 +6711,7 @@ dissect_ranap_UnsuccessfullyTransmittedDataVolume(tvbuff_t *tvb _U_, int offset
static int
dissect_ranap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 258 "ranap.cnf"
+#line 281 "ranap.cnf"
tvbuff_t *parameter_tvb=NULL;
proto_tree *subtree;
gint tvb_len;
@@ -11783,7 +11805,7 @@ static int dissect_RANAP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, prot
/*--- End of included file: packet-ranap-fn.c ---*/
-#line 141 "packet-ranap-template.c"
+#line 142 "packet-ranap-template.c"
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
@@ -14477,7 +14499,7 @@ void proto_register_ranap(void) {
"ranap.T_value", HFILL }},
/*--- End of included file: packet-ranap-hfarr.c ---*/
-#line 298 "packet-ranap-template.c"
+#line 299 "packet-ranap-template.c"
};
/* List of subtrees */
@@ -14783,7 +14805,7 @@ void proto_register_ranap(void) {
&ett_ranap_Outcome,
/*--- End of included file: packet-ranap-ettarr.c ---*/
-#line 305 "packet-ranap-template.c"
+#line 306 "packet-ranap-template.c"
};
@@ -15144,7 +15166,7 @@ proto_reg_handoff_ranap(void)
/*--- End of included file: packet-ranap-dis-tab.c ---*/
-#line 350 "packet-ranap-template.c"
+#line 351 "packet-ranap-template.c"
} else {
dissector_delete("sccp.ssn", local_ranap_sccp_ssn, ranap_handle);
}
diff --git a/epan/dissectors/packet-rrc.c b/epan/dissectors/packet-rrc.c
index f616fb595b..49c7d53351 100644
--- a/epan/dissectors/packet-rrc.c
+++ b/epan/dissectors/packet-rrc.c
@@ -246,7 +246,7 @@ static int hf_rrc_BCCH_FACH_Message_PDU = -1; /* BCCH_FACH_Message */
static int hf_rrc_BCCH_BCH_Message_PDU = -1; /* BCCH_BCH_Message */
static int hf_rrc_MCCH_Message_PDU = -1; /* MCCH_Message */
static int hf_rrc_MSCH_Message_PDU = -1; /* MSCH_Message */
-static int hf_rrc_HandoverToUTRANCommand_PDU = -1; /* HandoverToUTRANCommand */
+static int hf_rrc_rrc_HandoverToUTRANCommand_PDU = -1; /* HandoverToUTRANCommand */
static int hf_rrc_rrc_InterRATHandoverInfo_PDU = -1; /* InterRATHandoverInfo */
static int hf_rrc_SystemInformation_BCH_PDU = -1; /* SystemInformation_BCH */
static int hf_rrc_UE_RadioAccessCapabilityInfo_PDU = -1; /* UE_RadioAccessCapabilityInfo */
@@ -23881,7 +23881,7 @@ static const per_choice_t ActiveSetUpdate_choice[] = {
static int
dissect_rrc_ActiveSetUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 121 "rrc.cnf"
+#line 122 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "ActiveSetUpdate");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_ActiveSetUpdate, ActiveSetUpdate_choice,
@@ -28206,7 +28206,7 @@ static const per_choice_t AssistanceDataDelivery_choice[] = {
static int
dissect_rrc_AssistanceDataDelivery(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 133 "rrc.cnf"
+#line 134 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "AssistanceDataDelivery");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_AssistanceDataDelivery, AssistanceDataDelivery_choice,
@@ -28604,7 +28604,7 @@ static const per_choice_t CellChangeOrderFromUTRAN_choice[] = {
static int
dissect_rrc_CellChangeOrderFromUTRAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 137 "rrc.cnf"
+#line 138 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "CellChangeOrderFromUTRAN");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_CellChangeOrderFromUTRAN, CellChangeOrderFromUTRAN_choice,
@@ -47501,7 +47501,7 @@ static const per_choice_t CellUpdateConfirm_choice[] = {
static int
dissect_rrc_CellUpdateConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 153 "rrc.cnf"
+#line 154 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdateConfirm");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_CellUpdateConfirm, CellUpdateConfirm_choice,
@@ -47654,7 +47654,7 @@ static const per_choice_t CounterCheck_choice[] = {
static int
dissect_rrc_CounterCheck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 157 "rrc.cnf"
+#line 158 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "CounterCheck");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_CounterCheck, CounterCheck_choice,
@@ -47670,7 +47670,7 @@ dissect_rrc_CounterCheck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
static int
dissect_rrc_NAS_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 103 "rrc.cnf"
+#line 104 "rrc.cnf"
tvbuff_t *nas_message_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -47787,7 +47787,7 @@ static const per_choice_t DownlinkDirectTransfer_choice[] = {
static int
dissect_rrc_DownlinkDirectTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 165 "rrc.cnf"
+#line 166 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "DownlinkDirectTransfer");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_DownlinkDirectTransfer, DownlinkDirectTransfer_choice,
@@ -47806,7 +47806,7 @@ static const per_sequence_t T_single_GSM_Message_r3_sequence[] = {
static int
dissect_rrc_T_single_GSM_Message_r3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 453 "rrc.cnf"
+#line 454 "rrc.cnf"
tvbuff_t *gsm_message_tvb=NULL;
guint bits_remaining, whole_octets_remaining;
@@ -47831,7 +47831,7 @@ dissect_rrc_T_single_GSM_Message_r3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
static int
dissect_rrc_GSM_MessageList_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 445 "rrc.cnf"
+#line 446 "rrc.cnf"
tvbuff_t *gsm_messagelist_tvb=NULL;
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
@@ -48115,7 +48115,7 @@ static const per_sequence_t T_single_GSM_Message_r6_sequence[] = {
static int
dissect_rrc_T_single_GSM_Message_r6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 467 "rrc.cnf"
+#line 468 "rrc.cnf"
tvbuff_t *gsm_message_tvb=NULL;
guint bits_remaining, whole_octets_remaining;
@@ -48321,7 +48321,7 @@ static const per_choice_t HandoverFromUTRANCommand_GSM_choice[] = {
static int
dissect_rrc_HandoverFromUTRANCommand_GSM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 177 "rrc.cnf"
+#line 178 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-GSM");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_HandoverFromUTRANCommand_GSM, HandoverFromUTRANCommand_GSM_choice,
@@ -48475,7 +48475,7 @@ static const per_choice_t HandoverFromUTRANCommand_CDMA2000_choice[] = {
static int
dissect_rrc_HandoverFromUTRANCommand_CDMA2000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 181 "rrc.cnf"
+#line 182 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-CDMA2000");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_HandoverFromUTRANCommand_CDMA2000, HandoverFromUTRANCommand_CDMA2000_choice,
@@ -57221,7 +57221,7 @@ static const per_choice_t MeasurementControl_choice[] = {
static int
dissect_rrc_MeasurementControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 233 "rrc.cnf"
+#line 234 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementControl");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_MeasurementControl, MeasurementControl_choice,
@@ -57313,7 +57313,7 @@ static const per_sequence_t PagingType2_sequence[] = {
static int
dissect_rrc_PagingType2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 249 "rrc.cnf"
+#line 250 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "PagingType2");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_PagingType2, PagingType2_sequence);
@@ -58689,7 +58689,7 @@ static const per_choice_t PhysicalChannelReconfiguration_choice[] = {
static int
dissect_rrc_PhysicalChannelReconfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 253 "rrc.cnf"
+#line 254 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfiguration");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_PhysicalChannelReconfiguration, PhysicalChannelReconfiguration_choice,
@@ -59993,7 +59993,7 @@ static const per_choice_t PhysicalSharedChannelAllocation_choice[] = {
static int
dissect_rrc_PhysicalSharedChannelAllocation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 265 "rrc.cnf"
+#line 266 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalSharedChannelAllocation");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_PhysicalSharedChannelAllocation, PhysicalSharedChannelAllocation_choice,
@@ -62198,7 +62198,7 @@ static const per_choice_t RadioBearerReconfiguration_choice[] = {
static int
dissect_rrc_RadioBearerReconfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 273 "rrc.cnf"
+#line 274 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfiguration");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerReconfiguration, RadioBearerReconfiguration_choice,
@@ -63610,7 +63610,7 @@ static const per_choice_t RadioBearerRelease_choice[] = {
static int
dissect_rrc_RadioBearerRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 285 "rrc.cnf"
+#line 286 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerRelease");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerRelease, RadioBearerRelease_choice,
@@ -65788,7 +65788,7 @@ static const per_choice_t RadioBearerSetup_choice[] = {
static int
dissect_rrc_RadioBearerSetup(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 297 "rrc.cnf"
+#line 298 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerSetup");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerSetup, RadioBearerSetup_choice,
@@ -66438,7 +66438,7 @@ static const per_choice_t RRCConnectionRelease_choice[] = {
static int
dissect_rrc_RRCConnectionRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 313 "rrc.cnf"
+#line 314 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRelease");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCConnectionRelease, RRCConnectionRelease_choice,
@@ -66717,7 +66717,7 @@ static const per_choice_t SecurityModeCommand_choice[] = {
static int
dissect_rrc_SecurityModeCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 341 "rrc.cnf"
+#line 342 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeCommand");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_SecurityModeCommand, SecurityModeCommand_choice,
@@ -66830,7 +66830,7 @@ static const per_choice_t SignallingConnectionRelease_choice[] = {
static int
dissect_rrc_SignallingConnectionRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 353 "rrc.cnf"
+#line 354 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SignallingConnectionRelease");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_SignallingConnectionRelease, SignallingConnectionRelease_choice,
@@ -68244,7 +68244,7 @@ static const per_choice_t TransportChannelReconfiguration_choice[] = {
static int
dissect_rrc_TransportChannelReconfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 373 "rrc.cnf"
+#line 374 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfiguration");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_TransportChannelReconfiguration, TransportChannelReconfiguration_choice,
@@ -68389,7 +68389,7 @@ static const per_sequence_t TransportFormatCombinationControl_sequence[] = {
static int
dissect_rrc_TransportFormatCombinationControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 385 "rrc.cnf"
+#line 386 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportFormatCombinationControl");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_TransportFormatCombinationControl, TransportFormatCombinationControl_sequence);
@@ -68755,7 +68755,7 @@ static const per_choice_t UECapabilityEnquiry_choice[] = {
static int
dissect_rrc_UECapabilityEnquiry(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 393 "rrc.cnf"
+#line 394 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityEnquiry");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_UECapabilityEnquiry, UECapabilityEnquiry_choice,
@@ -68913,7 +68913,7 @@ static const per_choice_t UECapabilityInformationConfirm_choice[] = {
static int
dissect_rrc_UECapabilityInformationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 401 "rrc.cnf"
+#line 402 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityInformationConfirm");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_UECapabilityInformationConfirm, UECapabilityInformationConfirm_choice,
@@ -69677,7 +69677,7 @@ static const per_choice_t UplinkPhysicalChannelControl_choice[] = {
static int
dissect_rrc_UplinkPhysicalChannelControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 409 "rrc.cnf"
+#line 410 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UplinkPhysicalChannelControl");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_UplinkPhysicalChannelControl, UplinkPhysicalChannelControl_choice,
@@ -70020,7 +70020,7 @@ static const per_choice_t URAUpdateConfirm_choice[] = {
static int
dissect_rrc_URAUpdateConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 417 "rrc.cnf"
+#line 418 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "URAUpdateConfirm");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_URAUpdateConfirm, URAUpdateConfirm_choice,
@@ -71473,7 +71473,7 @@ static const per_choice_t UTRANMobilityInformation_choice[] = {
static int
dissect_rrc_UTRANMobilityInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 425 "rrc.cnf"
+#line 426 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformation");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_UTRANMobilityInformation, UTRANMobilityInformation_choice,
@@ -71660,7 +71660,7 @@ static const per_sequence_t HandoverFromUTRANCommand_GERANIu_sequence[] = {
static int
dissect_rrc_HandoverFromUTRANCommand_GERANIu(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 173 "rrc.cnf"
+#line 174 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-GERANIu");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_HandoverFromUTRANCommand_GERANIu, HandoverFromUTRANCommand_GERANIu_sequence);
@@ -72098,7 +72098,7 @@ static const per_sequence_t MBMSModifiedServicesInformation_sequence[] = {
static int
dissect_rrc_MBMSModifiedServicesInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 217 "rrc.cnf"
+#line 218 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSModifiedServicesInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSModifiedServicesInformation, MBMSModifiedServicesInformation_sequence);
@@ -72480,7 +72480,7 @@ static const per_sequence_t ActiveSetUpdateComplete_sequence[] = {
static int
dissect_rrc_ActiveSetUpdateComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 125 "rrc.cnf"
+#line 126 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "ActiveSetUpdateComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_ActiveSetUpdateComplete, ActiveSetUpdateComplete_sequence);
@@ -72651,7 +72651,7 @@ static const per_sequence_t ActiveSetUpdateFailure_sequence[] = {
static int
dissect_rrc_ActiveSetUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 129 "rrc.cnf"
+#line 130 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "ActiveSetUpdateFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_ActiveSetUpdateFailure, ActiveSetUpdateFailure_sequence);
@@ -72798,7 +72798,7 @@ static const per_choice_t CellChangeOrderFromUTRANFailure_choice[] = {
static int
dissect_rrc_CellChangeOrderFromUTRANFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 141 "rrc.cnf"
+#line 142 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "CellChangeOrderFromUTRANFailure");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_CellChangeOrderFromUTRANFailure, CellChangeOrderFromUTRANFailure_choice,
@@ -72888,7 +72888,7 @@ static const per_sequence_t CounterCheckResponse_sequence[] = {
static int
dissect_rrc_CounterCheckResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 161 "rrc.cnf"
+#line 162 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "CounterCheckResponse");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_CounterCheckResponse, CounterCheckResponse_sequence);
@@ -72937,7 +72937,7 @@ static const per_sequence_t HandoverToUTRANComplete_sequence[] = {
static int
dissect_rrc_HandoverToUTRANComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 169 "rrc.cnf"
+#line 170 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverToUTRANComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_HandoverToUTRANComplete, HandoverToUTRANComplete_sequence);
@@ -73854,7 +73854,7 @@ static const per_sequence_t InitialDirectTransfer_sequence[] = {
static int
dissect_rrc_InitialDirectTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 189 "rrc.cnf"
+#line 190 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "InitialDirectTransfer");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_InitialDirectTransfer, InitialDirectTransfer_sequence);
@@ -74062,7 +74062,7 @@ static const per_sequence_t HandoverFromUTRANFailure_sequence[] = {
static int
dissect_rrc_HandoverFromUTRANFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 185 "rrc.cnf"
+#line 186 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_HandoverFromUTRANFailure, HandoverFromUTRANFailure_sequence);
@@ -74140,7 +74140,7 @@ static const per_sequence_t MeasurementControlFailure_sequence[] = {
static int
dissect_rrc_MeasurementControlFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 237 "rrc.cnf"
+#line 238 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementControlFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MeasurementControlFailure, MeasurementControlFailure_sequence);
@@ -78376,7 +78376,7 @@ static const per_sequence_t MeasurementReport_sequence[] = {
static int
dissect_rrc_MeasurementReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 241 "rrc.cnf"
+#line 242 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementReport");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MeasurementReport, MeasurementReport_sequence);
@@ -78474,7 +78474,7 @@ static const per_sequence_t PhysicalChannelReconfigurationComplete_sequence[] =
static int
dissect_rrc_PhysicalChannelReconfigurationComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 257 "rrc.cnf"
+#line 258 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfigurationComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_PhysicalChannelReconfigurationComplete, PhysicalChannelReconfigurationComplete_sequence);
@@ -78523,7 +78523,7 @@ static const per_sequence_t PhysicalChannelReconfigurationFailure_sequence[] = {
static int
dissect_rrc_PhysicalChannelReconfigurationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 261 "rrc.cnf"
+#line 262 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfigurationFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_PhysicalChannelReconfigurationFailure, PhysicalChannelReconfigurationFailure_sequence);
@@ -78621,7 +78621,7 @@ static const per_sequence_t RadioBearerReconfigurationComplete_sequence[] = {
static int
dissect_rrc_RadioBearerReconfigurationComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 277 "rrc.cnf"
+#line 278 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfigurationComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerReconfigurationComplete, RadioBearerReconfigurationComplete_sequence);
@@ -78685,7 +78685,7 @@ static const per_sequence_t RadioBearerReconfigurationFailure_sequence[] = {
static int
dissect_rrc_RadioBearerReconfigurationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 281 "rrc.cnf"
+#line 282 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfigurationFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerReconfigurationFailure, RadioBearerReconfigurationFailure_sequence);
@@ -78783,7 +78783,7 @@ static const per_sequence_t RadioBearerReleaseComplete_sequence[] = {
static int
dissect_rrc_RadioBearerReleaseComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 289 "rrc.cnf"
+#line 290 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReleaseComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerReleaseComplete, RadioBearerReleaseComplete_sequence);
@@ -78833,7 +78833,7 @@ static const per_sequence_t RadioBearerReleaseFailure_sequence[] = {
static int
dissect_rrc_RadioBearerReleaseFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 293 "rrc.cnf"
+#line 294 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReleaseFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerReleaseFailure, RadioBearerReleaseFailure_sequence);
@@ -78932,7 +78932,7 @@ static const per_sequence_t RadioBearerSetupComplete_sequence[] = {
static int
dissect_rrc_RadioBearerSetupComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 301 "rrc.cnf"
+#line 302 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerSetupComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerSetupComplete, RadioBearerSetupComplete_sequence);
@@ -78982,7 +78982,7 @@ static const per_sequence_t RadioBearerSetupFailure_sequence[] = {
static int
dissect_rrc_RadioBearerSetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 305 "rrc.cnf"
+#line 306 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerSetupFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RadioBearerSetupFailure, RadioBearerSetupFailure_sequence);
@@ -79031,7 +79031,7 @@ static const per_sequence_t RRCConnectionReleaseComplete_sequence[] = {
static int
dissect_rrc_RRCConnectionReleaseComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 321 "rrc.cnf"
+#line 322 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReleaseComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCConnectionReleaseComplete, RRCConnectionReleaseComplete_sequence);
@@ -80046,7 +80046,7 @@ dissect_rrc_UE_RadioAccessCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static int
dissect_rrc_GSM_Classmark2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 481 "rrc.cnf"
+#line 482 "rrc.cnf"
tvbuff_t *parameter_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -80065,7 +80065,7 @@ tvbuff_t *parameter_tvb=NULL;
static int
dissect_rrc_GSM_Classmark3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 489 "rrc.cnf"
+#line 490 "rrc.cnf"
tvbuff_t *parameter_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -81474,7 +81474,7 @@ static const per_sequence_t RRCConnectionSetupComplete_sequence[] = {
static int
dissect_rrc_RRCConnectionSetupComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 333 "rrc.cnf"
+#line 334 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionSetupComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCConnectionSetupComplete, RRCConnectionSetupComplete_sequence);
@@ -81653,7 +81653,7 @@ static const per_sequence_t RRCStatus_sequence[] = {
static int
dissect_rrc_RRCStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 337 "rrc.cnf"
+#line 338 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCStatus");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCStatus, RRCStatus_sequence);
@@ -81703,7 +81703,7 @@ static const per_sequence_t SecurityModeComplete_sequence[] = {
static int
dissect_rrc_SecurityModeComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 345 "rrc.cnf"
+#line 346 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_SecurityModeComplete, SecurityModeComplete_sequence);
@@ -81752,7 +81752,7 @@ static const per_sequence_t SecurityModeFailure_sequence[] = {
static int
dissect_rrc_SecurityModeFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 349 "rrc.cnf"
+#line 350 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_SecurityModeFailure, SecurityModeFailure_sequence);
@@ -81845,7 +81845,7 @@ static const per_sequence_t SignallingConnectionReleaseIndication_sequence[] = {
static int
dissect_rrc_SignallingConnectionReleaseIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 357 "rrc.cnf"
+#line 358 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SignallingConnectionReleaseIndication");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_SignallingConnectionReleaseIndication, SignallingConnectionReleaseIndication_sequence);
@@ -81943,7 +81943,7 @@ static const per_sequence_t TransportChannelReconfigurationComplete_sequence[] =
static int
dissect_rrc_TransportChannelReconfigurationComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 377 "rrc.cnf"
+#line 378 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfigurationComplete");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_TransportChannelReconfigurationComplete, TransportChannelReconfigurationComplete_sequence);
@@ -81992,7 +81992,7 @@ static const per_sequence_t TransportChannelReconfigurationFailure_sequence[] =
static int
dissect_rrc_TransportChannelReconfigurationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 381 "rrc.cnf"
+#line 382 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfigurationFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_TransportChannelReconfigurationFailure, TransportChannelReconfigurationFailure_sequence);
@@ -82041,7 +82041,7 @@ static const per_sequence_t TransportFormatCombinationControlFailure_sequence[]
static int
dissect_rrc_TransportFormatCombinationControlFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 389 "rrc.cnf"
+#line 390 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportFormatCombinationControlFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_TransportFormatCombinationControlFailure, TransportFormatCombinationControlFailure_sequence);
@@ -82317,7 +82317,7 @@ static const per_sequence_t UECapabilityInformation_sequence[] = {
static int
dissect_rrc_UECapabilityInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 397 "rrc.cnf"
+#line 398 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_UECapabilityInformation, UECapabilityInformation_sequence);
@@ -82396,7 +82396,7 @@ static const per_sequence_t UplinkDirectTransfer_sequence[] = {
static int
dissect_rrc_UplinkDirectTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 405 "rrc.cnf"
+#line 406 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UplinkDirectTransfer");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_UplinkDirectTransfer, UplinkDirectTransfer_sequence);
@@ -82492,7 +82492,7 @@ static const per_sequence_t UTRANMobilityInformationConfirm_sequence[] = {
static int
dissect_rrc_UTRANMobilityInformationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 429 "rrc.cnf"
+#line 430 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformationConfirm");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_UTRANMobilityInformationConfirm, UTRANMobilityInformationConfirm_sequence);
@@ -82541,7 +82541,7 @@ static const per_sequence_t UTRANMobilityInformationFailure_sequence[] = {
static int
dissect_rrc_UTRANMobilityInformationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 433 "rrc.cnf"
+#line 434 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformationFailure");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_UTRANMobilityInformationFailure, UTRANMobilityInformationFailure_sequence);
@@ -82698,7 +82698,7 @@ static const per_sequence_t MBMSModificationRequest_sequence[] = {
static int
dissect_rrc_MBMSModificationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 213 "rrc.cnf"
+#line 214 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSModificationRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSModificationRequest, MBMSModificationRequest_sequence);
@@ -83434,7 +83434,7 @@ static const per_choice_t CellUpdateConfirm_CCCH_choice[] = {
static int
dissect_rrc_CellUpdateConfirm_CCCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 149 "rrc.cnf"
+#line 150 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdateConfirm-CCCH");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_CellUpdateConfirm_CCCH, CellUpdateConfirm_CCCH_choice,
@@ -83888,7 +83888,7 @@ static const per_choice_t RRCConnectionReject_choice[] = {
static int
dissect_rrc_RRCConnectionReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 309 "rrc.cnf"
+#line 310 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReject");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCConnectionReject, RRCConnectionReject_choice,
@@ -84384,7 +84384,7 @@ static const per_choice_t RRCConnectionRelease_CCCH_choice[] = {
static int
dissect_rrc_RRCConnectionRelease_CCCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 317 "rrc.cnf"
+#line 318 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRelease-CCCH");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCConnectionRelease_CCCH, RRCConnectionRelease_CCCH_choice,
@@ -85992,7 +85992,7 @@ static const per_choice_t RRCConnectionSetup_choice[] = {
static int
dissect_rrc_RRCConnectionSetup(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 329 "rrc.cnf"
+#line 330 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionSetup");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCConnectionSetup, RRCConnectionSetup_choice,
@@ -86136,7 +86136,7 @@ static const per_choice_t URAUpdateConfirm_CCCH_choice[] = {
static int
dissect_rrc_URAUpdateConfirm_CCCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 421 "rrc.cnf"
+#line 422 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "URAUpdateConfirm-CCCH");
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_rrc_URAUpdateConfirm_CCCH, URAUpdateConfirm_CCCH_choice,
@@ -86668,7 +86668,7 @@ static const per_sequence_t CellUpdate_sequence[] = {
static int
dissect_rrc_CellUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 145 "rrc.cnf"
+#line 146 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdate");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_CellUpdate, CellUpdate_sequence);
@@ -87308,7 +87308,7 @@ static const per_sequence_t RRCConnectionRequest_sequence[] = {
static int
dissect_rrc_RRCConnectionRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 325 "rrc.cnf"
+#line 326 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_RRCConnectionRequest, RRCConnectionRequest_sequence);
@@ -87559,7 +87559,7 @@ static const per_sequence_t URAUpdate_sequence[] = {
static int
dissect_rrc_URAUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 413 "rrc.cnf"
+#line 414 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "URAUpdate");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_URAUpdate, URAUpdate_sequence);
@@ -87982,7 +87982,7 @@ static const per_sequence_t PagingType1_sequence[] = {
static int
dissect_rrc_PagingType1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 245 "rrc.cnf"
+#line 246 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "PagingType1");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_PagingType1, PagingType1_sequence);
@@ -88187,7 +88187,7 @@ static const per_sequence_t PUSCHCapacityRequest_sequence[] = {
static int
dissect_rrc_PUSCHCapacityRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 269 "rrc.cnf"
+#line 270 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "PUSCHCapacityRequest");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_PUSCHCapacityRequest, PUSCHCapacityRequest_sequence);
@@ -88563,7 +88563,7 @@ static const per_sequence_t SystemInformation_FACH_sequence[] = {
static int
dissect_rrc_SystemInformation_FACH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 365 "rrc.cnf"
+#line 366 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformation-FACH");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_SystemInformation_FACH, SystemInformation_FACH_sequence);
@@ -88640,7 +88640,7 @@ static const per_sequence_t SystemInformationChangeIndication_sequence[] = {
static int
dissect_rrc_SystemInformationChangeIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 369 "rrc.cnf"
+#line 370 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformationChangeIndication");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_SystemInformationChangeIndication, SystemInformationChangeIndication_sequence);
@@ -88821,7 +88821,7 @@ static const per_sequence_t SystemInformation_BCH_sequence[] = {
static int
dissect_rrc_SystemInformation_BCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 361 "rrc.cnf"
+#line 362 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformation-BCH");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_SystemInformation_BCH, SystemInformation_BCH_sequence);
@@ -88961,7 +88961,7 @@ static const per_sequence_t MBMSAccessInformation_sequence[] = {
static int
dissect_rrc_MBMSAccessInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 193 "rrc.cnf"
+#line 194 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSAccessInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSAccessInformation, MBMSAccessInformation_sequence);
@@ -89830,7 +89830,7 @@ static const per_sequence_t MBMSCommonPTMRBInformation_sequence[] = {
static int
dissect_rrc_MBMSCommonPTMRBInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 197 "rrc.cnf"
+#line 198 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSCommonPTMRBInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSCommonPTMRBInformation, MBMSCommonPTMRBInformation_sequence);
@@ -90218,7 +90218,7 @@ static const per_sequence_t MBMSCurrentCellPTMRBInformation_sequence[] = {
static int
dissect_rrc_MBMSCurrentCellPTMRBInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 201 "rrc.cnf"
+#line 202 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSCurrentCellPTMRBInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSCurrentCellPTMRBInformation, MBMSCurrentCellPTMRBInformation_sequence);
@@ -90996,7 +90996,7 @@ static const per_sequence_t MBMSGeneralInformation_sequence[] = {
static int
dissect_rrc_MBMSGeneralInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 209 "rrc.cnf"
+#line 210 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSGeneralInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSGeneralInformation, MBMSGeneralInformation_sequence);
@@ -91670,7 +91670,7 @@ static const per_sequence_t MBMSNeighbouringCellPTMRBInformation_sequence[] = {
static int
dissect_rrc_MBMSNeighbouringCellPTMRBInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 221 "rrc.cnf"
+#line 222 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSNeighbouringCellPTMRBInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSNeighbouringCellPTMRBInformation, MBMSNeighbouringCellPTMRBInformation_sequence);
@@ -91807,7 +91807,7 @@ static const per_sequence_t MBMSUnmodifiedServicesInformation_sequence[] = {
static int
dissect_rrc_MBMSUnmodifiedServicesInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 229 "rrc.cnf"
+#line 230 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSUnmodifiedServicesInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSUnmodifiedServicesInformation, MBMSUnmodifiedServicesInformation_sequence);
@@ -91963,7 +91963,7 @@ static const per_sequence_t MBMSSchedulingInformation_sequence[] = {
static int
dissect_rrc_MBMSSchedulingInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 225 "rrc.cnf"
+#line 226 "rrc.cnf"
col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSSchedulingInformation");
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_rrc_MBMSSchedulingInformation, MBMSSchedulingInformation_sequence);
@@ -94849,7 +94849,7 @@ dissect_rrc_T_uE_SecurityInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static int
dissect_rrc_T_present(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 111 "rrc.cnf"
+#line 112 "rrc.cnf"
tvbuff_t *ue_radio_access_cap_info_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -113425,7 +113425,7 @@ dissect_rrc_UE_HistoryInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static int
dissect_rrc_T_interRATHandoverInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 496 "rrc.cnf"
+#line 497 "rrc.cnf"
tvbuff_t *parameter_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -117788,7 +117788,7 @@ dissect_rrc_ToTargetRNC_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static int
dissect_rrc_T_dL_DCCHmessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 437 "rrc.cnf"
+#line 438 "rrc.cnf"
tvbuff_t *dl_dcch_message_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -118008,10 +118008,10 @@ static void dissect_MSCH_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_,
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
dissect_rrc_MSCH_Message(tvb, 0, &asn1_ctx, tree, hf_rrc_MSCH_Message_PDU);
}
-static void dissect_HandoverToUTRANCommand_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+void dissect_rrc_HandoverToUTRANCommand_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
- dissect_rrc_HandoverToUTRANCommand(tvb, 0, &asn1_ctx, tree, hf_rrc_HandoverToUTRANCommand_PDU);
+ dissect_rrc_HandoverToUTRANCommand(tvb, 0, &asn1_ctx, tree, hf_rrc_rrc_HandoverToUTRANCommand_PDU);
}
void dissect_rrc_InterRATHandoverInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
asn1_ctx_t asn1_ctx;
@@ -118446,7 +118446,7 @@ void proto_register_rrc(void) {
{ "MSCH-Message", "rrc.MSCH_Message",
FT_NONE, BASE_NONE, NULL, 0,
"rrc.MSCH_Message", HFILL }},
- { &hf_rrc_HandoverToUTRANCommand_PDU,
+ { &hf_rrc_rrc_HandoverToUTRANCommand_PDU,
{ "HandoverToUTRANCommand", "rrc.HandoverToUTRANCommand",
FT_UINT32, BASE_DEC, VALS(rrc_HandoverToUTRANCommand_vals), 0,
"rrc.HandoverToUTRANCommand", HFILL }},
@@ -156123,7 +156123,7 @@ void proto_register_rrc(void) {
register_dissector("rrc.bcch.bch", dissect_BCCH_BCH_Message_PDU, proto_rrc);
register_dissector("rrc.mcch", dissect_MCCH_Message_PDU, proto_rrc);
register_dissector("rrc.msch", dissect_MSCH_Message_PDU, proto_rrc);
- register_dissector("rrc.irat.ho_to_utran_cmd", dissect_HandoverToUTRANCommand_PDU, proto_rrc);
+ register_dissector("rrc.irat.ho_to_utran_cmd", dissect_rrc_HandoverToUTRANCommand_PDU, proto_rrc);
register_dissector("rrc.irat.irat_ho_info", dissect_rrc_InterRATHandoverInfo_PDU, proto_rrc);
register_dissector("rrc.sysinfo", dissect_SystemInformation_BCH_PDU, proto_rrc);
register_dissector("rrc.ue_radio_access_cap_info", dissect_UE_RadioAccessCapabilityInfo_PDU, proto_rrc);
diff --git a/epan/dissectors/packet-rrc.h b/epan/dissectors/packet-rrc.h
index 172a5f0acf..21039572f3 100644
--- a/epan/dissectors/packet-rrc.h
+++ b/epan/dissectors/packet-rrc.h
@@ -38,6 +38,7 @@ extern int proto_rrc;
/*--- Included file: packet-rrc-exp.h ---*/
#line 1 "packet-rrc-exp.h"
int dissect_rrc_InterRATHandoverInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+void dissect_rrc_HandoverToUTRANCommand_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
void dissect_rrc_InterRATHandoverInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
void dissect_rrc_ToTargetRNC_Container_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
void dissect_rrc_TargetRNC_ToSourceRNC_Container_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);