diff options
author | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2010-04-29 20:45:53 +0000 |
---|---|---|
committer | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2010-04-29 20:45:53 +0000 |
commit | 5413f969a3cb59efe6dfaca865ea6750be2ed7e9 (patch) | |
tree | 2594675b8efedad7769dacfe13fb85fbc2ef4454 /epan/dissectors | |
parent | 21b1f8451502d9141b46f9ef98ea1dee5608e3a6 (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
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@32606 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors')
-rw-r--r-- | epan/dissectors/packet-bssgp.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-bssgp.h | 3 | ||||
-rw-r--r-- | epan/dissectors/packet-gsm_a_bssmap.c | 579 | ||||
-rw-r--r-- | epan/dissectors/packet-gsm_a_common.c | 69 | ||||
-rw-r--r-- | epan/dissectors/packet-gsm_a_common.h | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-gsm_a_rr.c | 67 | ||||
-rw-r--r-- | epan/dissectors/packet-ranap.c | 54 | ||||
-rw-r--r-- | epan/dissectors/packet-rrc.c | 184 | ||||
-rw-r--r-- | epan/dissectors/packet-rrc.h | 1 |
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_); |