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
This commit is contained in:
Anders Broman 2010-04-29 20:45:53 +00:00
parent 3f9d9a766e
commit 447faa6082
12 changed files with 767 additions and 219 deletions

View File

@ -43,6 +43,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" */

View File

@ -230,6 +230,29 @@ MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
#.END
#.FN_BODY OldBSS-ToNewBSS-Information VAL_PTR = &bss_info_tvb
tvbuff_t *bss_info_tvb=NULL;
%(DEFAULT_BODY)s
if (bss_info_tvb)
bssmap_old_bss_to_new_bss_info(bss_info_tvb, tree, actx->pinfo);
#.END
#.FN_BODY NewBSS-To-OldBSS-Information VAL_PTR = &bss_info_tvb
tvbuff_t *bss_info_tvb=NULL;
%(DEFAULT_BODY)s
if (bss_info_tvb)
bssmap_new_bss_to_old_bss_info(bss_info_tvb, tree, actx->pinfo);
#.END
#.FN_BODY L3-Information VAL_PTR = &l3_info_tvb
tvbuff_t *l3_info_tvb=NULL;
%(DEFAULT_BODY)s
if (l3_info_tvb)
dissector_try_port(nas_pdu_dissector_table, 0x1, l3_info_tvb, %(ACTX)s->pinfo, proto_tree_get_root(tree));
#.END
# following construction is not supported by asn2wrs
# PLMNidentity ::= TBCD-STRING (SIZE (3))

View File

@ -13,6 +13,7 @@ InterRATHandoverInfo
InterRATHandoverInfo_PDU
ToTargetRNC-Container_PDU
TargetRNC-ToSourceRNC-Container_PDU
HandoverToUTRANCommand_PDU
#.OMIT_ASSIGNMENT
UE-RadioAccessCapability-v890ext
UL-PhysChCapabilityFDD-r6

View File

@ -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,

View File

@ -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__ */

View File

@ -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[] = {
static const value_string bssmap_field_element_ids[] = {
{ 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 */
{ 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;
guint16 len;
if (!tree) {
return;
}
curr_offset = offset;
g_pinfo = pinfo;
g_tree = tree;
if (len == 0)
return len;
len = tvb_length(tvb);
be_field_element_dissect(tvb, tree, 0, len, NULL, 0);
proto_tree_add_text(tree, tvb, curr_offset, len , "Not decoded yet");
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");
}

View File

@ -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;

View File

@ -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
{

View File

@ -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",

View File

@ -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);
}

View File

@ -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);

View File

@ -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_);