diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2015-07-16 17:08:31 +0200 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2015-07-16 16:56:43 +0000 |
commit | da914431ce2d4e5b154b1491490a54d1de15366f (patch) | |
tree | 348f76c50de597fba3e8f1f8d1535cd066a6460d /epan | |
parent | 6d33c124d55c1fdbe8225e82256b77e8f0a13e3c (diff) |
LTE RRC: fix dissection of ETWS/CMAS warning messages
Change-Id: I20bb219a32b6c7e39ac415c5c13ad5379f78cba2
Reviewed-on: https://code.wireshark.org/review/9658
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-lte-rrc.c | 284 |
1 files changed, 266 insertions, 18 deletions
diff --git a/epan/dissectors/packet-lte-rrc.c b/epan/dissectors/packet-lte-rrc.c index 5343e32fa7..d2b0105586 100644 --- a/epan/dissectors/packet-lte-rrc.c +++ b/epan/dissectors/packet-lte-rrc.c @@ -41,6 +41,7 @@ #include <epan/to_str.h> #include <epan/asn1.h> #include <epan/expert.h> +#include <epan/reassemble.h> #include "packet-per.h" #include "packet-rrc.h" @@ -195,7 +196,7 @@ typedef enum _SI_OrPSI_GERAN_enum { } SI_OrPSI_GERAN_enum; /*--- End of included file: packet-lte-rrc-val.h ---*/ -#line 76 "../../asn1/lte-rrc/packet-lte-rrc-template.c" +#line 77 "../../asn1/lte-rrc/packet-lte-rrc-template.c" /* Initialize the protocol and registered fields */ static int proto_lte_rrc = -1; @@ -1346,13 +1347,13 @@ static int hf_lte_rrc_dummy = -1; /* OCTET_STRING_SIZE_50 */ static int hf_lte_rrc_messageIdentifier_01 = -1; /* T_messageIdentifier_01 */ static int hf_lte_rrc_serialNumber_01 = -1; /* T_serialNumber_01 */ static int hf_lte_rrc_warningMessageSegmentType = -1; /* T_warningMessageSegmentType */ -static int hf_lte_rrc_warningMessageSegmentNumber = -1; /* INTEGER_0_63 */ +static int hf_lte_rrc_warningMessageSegmentNumber = -1; /* T_warningMessageSegmentNumber */ static int hf_lte_rrc_warningMessageSegment = -1; /* T_warningMessageSegment */ static int hf_lte_rrc_dataCodingScheme = -1; /* T_dataCodingScheme */ static int hf_lte_rrc_messageIdentifier_r9 = -1; /* T_messageIdentifier_r9 */ static int hf_lte_rrc_serialNumber_r9 = -1; /* T_serialNumber_r9 */ static int hf_lte_rrc_warningMessageSegmentType_r9 = -1; /* T_warningMessageSegmentType_r9 */ -static int hf_lte_rrc_warningMessageSegmentNumber_r9 = -1; /* INTEGER_0_63 */ +static int hf_lte_rrc_warningMessageSegmentNumber_r9 = -1; /* T_warningMessageSegmentNumber_r9 */ static int hf_lte_rrc_warningMessageSegment_r9 = -1; /* T_warningMessageSegment_r9 */ static int hf_lte_rrc_dataCodingScheme_r9 = -1; /* T_dataCodingScheme_r9 */ static int hf_lte_rrc_mbsfn_AreaInfoList_r9 = -1; /* MBSFN_AreaInfoList_r9 */ @@ -3019,7 +3020,7 @@ static int hf_lte_rrc_reserved_r12 = -1; /* BIT_STRING_SIZE_19 */ static int dummy_hf_lte_rrc_eag_field = -1; /* never registered */ /*--- End of included file: packet-lte-rrc-hf.c ---*/ -#line 81 "../../asn1/lte-rrc/packet-lte-rrc-template.c" +#line 82 "../../asn1/lte-rrc/packet-lte-rrc-template.c" static int hf_lte_rrc_eutra_cap_feat_group_ind_1 = -1; static int hf_lte_rrc_eutra_cap_feat_group_ind_2 = -1; @@ -3175,6 +3176,28 @@ static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_28 = -1; static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_29 = -1; static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_30 = -1; static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_31 = -1; +static int hf_lte_rrc_sib11_fragments = -1; +static int hf_lte_rrc_sib11_fragment = -1; +static int hf_lte_rrc_sib11_fragment_overlap = -1; +static int hf_lte_rrc_sib11_fragment_overlap_conflict = -1; +static int hf_lte_rrc_sib11_fragment_multiple_tails = -1; +static int hf_lte_rrc_sib11_fragment_too_long_fragment = -1; +static int hf_lte_rrc_sib11_fragment_error = -1; +static int hf_lte_rrc_sib11_fragment_count = -1; +static int hf_lte_rrc_sib11_reassembled_in = -1; +static int hf_lte_rrc_sib11_reassembled_length = -1; +static int hf_lte_rrc_sib11_reassembled_data = -1; +static int hf_lte_rrc_sib12_fragments = -1; +static int hf_lte_rrc_sib12_fragment = -1; +static int hf_lte_rrc_sib12_fragment_overlap = -1; +static int hf_lte_rrc_sib12_fragment_overlap_conflict = -1; +static int hf_lte_rrc_sib12_fragment_multiple_tails = -1; +static int hf_lte_rrc_sib12_fragment_too_long_fragment = -1; +static int hf_lte_rrc_sib12_fragment_error = -1; +static int hf_lte_rrc_sib12_fragment_count = -1; +static int hf_lte_rrc_sib12_reassembled_in = -1; +static int hf_lte_rrc_sib12_reassembled_length = -1; +static int hf_lte_rrc_sib12_reassembled_data = -1; /* Initialize the subtree pointers */ static int ett_lte_rrc = -1; @@ -4555,7 +4578,7 @@ static gint ett_lte_rrc_SBCCH_SL_BCH_Message = -1; static gint ett_lte_rrc_MasterInformationBlock_SL = -1; /*--- End of included file: packet-lte-rrc-ett.c ---*/ -#line 241 "../../asn1/lte-rrc/packet-lte-rrc-template.c" +#line 264 "../../asn1/lte-rrc/packet-lte-rrc-template.c" static gint ett_lte_rrc_featureGroupIndicators = -1; static gint ett_lte_rrc_featureGroupIndRel9Add = -1; @@ -4575,6 +4598,10 @@ static gint ett_lte_rrc_tdd_FDD_CA_PCellDuplex_r12 = -1; static gint ett_lte_rrc_sr_ConfigIndex = -1; static gint ett_lte_rrc_transmissionModeList_r12 = -1; static gint ett_lte_rrc_modifiedMPR_Behavior_r10 = -1; +static gint ett_lte_rrc_sib11_fragment = -1; +static gint ett_lte_rrc_sib11_fragments = -1; +static gint ett_lte_rrc_sib12_fragment = -1; +static gint ett_lte_rrc_sib12_fragments = -1; static expert_field ei_lte_rrc_number_pages_le15 = EI_INIT; static expert_field ei_lte_rrc_si_info_value_changed = EI_INIT; @@ -4586,6 +4613,43 @@ static expert_field ei_lte_rrc_unexpected_length_value = EI_INIT; static expert_field ei_lte_rrc_too_many_group_a_rapids = EI_INIT; static expert_field ei_lte_rrc_invalid_drx_config = EI_INIT; +static reassembly_table lte_rrc_sib11_reassembly_table; +static reassembly_table lte_rrc_sib12_reassembly_table; + +static const fragment_items lte_rrc_sib11_frag_items = { + &ett_lte_rrc_sib11_fragment, + &ett_lte_rrc_sib11_fragments, + &hf_lte_rrc_sib11_fragments, + &hf_lte_rrc_sib11_fragment, + &hf_lte_rrc_sib11_fragment_overlap, + &hf_lte_rrc_sib11_fragment_overlap_conflict, + &hf_lte_rrc_sib11_fragment_multiple_tails, + &hf_lte_rrc_sib11_fragment_too_long_fragment, + &hf_lte_rrc_sib11_fragment_error, + &hf_lte_rrc_sib11_fragment_count, + &hf_lte_rrc_sib11_reassembled_in, + &hf_lte_rrc_sib11_reassembled_length, + &hf_lte_rrc_sib11_reassembled_data, + "SIB11 warning message segments" +}; + +static const fragment_items lte_rrc_sib12_frag_items = { + &ett_lte_rrc_sib12_fragment, + &ett_lte_rrc_sib12_fragments, + &hf_lte_rrc_sib12_fragments, + &hf_lte_rrc_sib12_fragment, + &hf_lte_rrc_sib12_fragment_overlap, + &hf_lte_rrc_sib12_fragment_overlap_conflict, + &hf_lte_rrc_sib12_fragment_multiple_tails, + &hf_lte_rrc_sib12_fragment_too_long_fragment, + &hf_lte_rrc_sib12_fragment_error, + &hf_lte_rrc_sib12_fragment_count, + &hf_lte_rrc_sib12_reassembled_in, + &hf_lte_rrc_sib12_reassembled_length, + &hf_lte_rrc_sib12_reassembled_data, + "SIB12 warning message segments" +}; + /* Forward declarations */ static int dissect_DL_DCCH_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); static int dissect_UECapabilityInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); @@ -6423,6 +6487,8 @@ typedef struct lte_rrc_private_data_t guint8 si_or_psi_geran; guint8 ra_preambles; guint16 message_identifier; + guint8 warning_message_segment_type; + guint8 warning_message_segment_number; drb_mapping_t drb_mapping; drx_config_t drx_config; pdcp_security_info_t pdcp_security; @@ -6516,6 +6582,34 @@ static void private_data_set_message_identifier(asn1_ctx_t *actx, guint16 messag } +/* Warning message segment type */ +static guint16 private_data_get_warning_message_segment_type(asn1_ctx_t *actx) +{ + lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx); + return private_data->warning_message_segment_type; +} + +static void private_data_set_warning_message_segment_type(asn1_ctx_t *actx, guint8 segment_type) +{ + lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx); + private_data->warning_message_segment_type = segment_type; +} + + +/* Warning message segment number */ +static guint16 private_data_get_warning_message_segment_number(asn1_ctx_t *actx) +{ + lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx); + return private_data->warning_message_segment_number; +} + +static void private_data_set_warning_message_segment_number(asn1_ctx_t *actx, guint8 segment_number) +{ + lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx); + private_data->warning_message_segment_number = segment_number; +} + + /* Number of RA-preambles */ static guint8 private_data_get_ra_preambles(asn1_ctx_t *actx) { @@ -26293,8 +26387,26 @@ static const value_string lte_rrc_T_warningMessageSegmentType_vals[] = { static int dissect_lte_rrc_T_warningMessageSegmentType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + guint32 segment_type; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 2, NULL, FALSE, 0, NULL); + 2, &segment_type, FALSE, 0, NULL); + + private_data_set_warning_message_segment_type(actx, (guint8)segment_type); + + + return offset; +} + + + +static int +dissect_lte_rrc_T_warningMessageSegmentNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + guint32 segment_number; + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 63U, &segment_number, FALSE); + + private_data_set_warning_message_segment_number(actx, (guint8)segment_number); + return offset; } @@ -26313,8 +26425,18 @@ dissect_lte_rrc_T_warningMessageSegment(tvbuff_t *tvb _U_, int offset _U_, asn1_ p_dcs = g_hash_table_lookup(lte_rrc_etws_cmas_dcs_hash, GUINT_TO_POINTER((guint)private_data_get_message_identifier(actx))); if (warning_msg_seg_tvb && p_dcs) { proto_tree *subtree; + tvbuff_t *frag_tvb; + fragment_head *frag_data = fragment_add_seq_check(<e_rrc_sib11_reassembly_table, warning_msg_seg_tvb, 0, actx->pinfo, + private_data_get_message_identifier(actx), NULL, + private_data_get_warning_message_segment_number(actx), + tvb_reported_length(warning_msg_seg_tvb), + private_data_get_warning_message_segment_type(actx) ? FALSE : TRUE); subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_warningMessageSegment); - dissect_lte_rrc_warningMessageSegment(warning_msg_seg_tvb, subtree, actx->pinfo, GPOINTER_TO_UINT(p_dcs)); + frag_tvb = process_reassembled_data(warning_msg_seg_tvb, 0, actx->pinfo, "Reassembled SIB11 warning message", + frag_data, <e_rrc_sib11_frag_items, NULL, subtree); + if (frag_tvb) { + dissect_lte_rrc_warningMessageSegment(frag_tvb, subtree, actx->pinfo, GPOINTER_TO_UINT(p_dcs)); + } } return offset; @@ -26347,7 +26469,7 @@ static const per_sequence_t SystemInformationBlockType11_sequence[] = { { &hf_lte_rrc_messageIdentifier_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_messageIdentifier_01 }, { &hf_lte_rrc_serialNumber_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_serialNumber_01 }, { &hf_lte_rrc_warningMessageSegmentType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_warningMessageSegmentType }, - { &hf_lte_rrc_warningMessageSegmentNumber, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_0_63 }, + { &hf_lte_rrc_warningMessageSegmentNumber, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_warningMessageSegmentNumber }, { &hf_lte_rrc_warningMessageSegment, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_warningMessageSegment }, { &hf_lte_rrc_dataCodingScheme, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_T_dataCodingScheme }, { &hf_lte_rrc_lateNonCriticalExtension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_lte_rrc_OCTET_STRING }, @@ -26416,8 +26538,26 @@ static const value_string lte_rrc_T_warningMessageSegmentType_r9_vals[] = { static int dissect_lte_rrc_T_warningMessageSegmentType_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + guint32 segment_type; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 2, NULL, FALSE, 0, NULL); + 2, &segment_type, FALSE, 0, NULL); + + private_data_set_warning_message_segment_type(actx, (guint8)segment_type); + + + return offset; +} + + + +static int +dissect_lte_rrc_T_warningMessageSegmentNumber_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + guint32 segment_number; + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 63U, &segment_number, FALSE); + + private_data_set_warning_message_segment_number(actx, (guint8)segment_number); + return offset; } @@ -26436,8 +26576,18 @@ dissect_lte_rrc_T_warningMessageSegment_r9(tvbuff_t *tvb _U_, int offset _U_, as p_dcs = g_hash_table_lookup(lte_rrc_etws_cmas_dcs_hash, GUINT_TO_POINTER((guint)private_data_get_message_identifier(actx))); if (warning_msg_seg_tvb && p_dcs) { proto_tree *subtree; + tvbuff_t *frag_tvb; + fragment_head *frag_data = fragment_add_seq_check(<e_rrc_sib12_reassembly_table, warning_msg_seg_tvb, 0, actx->pinfo, + private_data_get_message_identifier(actx), NULL, + private_data_get_warning_message_segment_number(actx), + tvb_reported_length(warning_msg_seg_tvb), + private_data_get_warning_message_segment_type(actx) ? FALSE : TRUE); subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_warningMessageSegment); - dissect_lte_rrc_warningMessageSegment(warning_msg_seg_tvb, subtree, actx->pinfo, GPOINTER_TO_UINT(p_dcs)); + frag_tvb = process_reassembled_data(warning_msg_seg_tvb, 0, actx->pinfo, "Reassembled SIB12 warning message", + frag_data, <e_rrc_sib12_frag_items, NULL, subtree); + if (frag_tvb) { + dissect_lte_rrc_warningMessageSegment(frag_tvb, subtree, actx->pinfo, GPOINTER_TO_UINT(p_dcs)); + } } return offset; @@ -26470,7 +26620,7 @@ static const per_sequence_t SystemInformationBlockType12_r9_sequence[] = { { &hf_lte_rrc_messageIdentifier_r9, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_messageIdentifier_r9 }, { &hf_lte_rrc_serialNumber_r9, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_serialNumber_r9 }, { &hf_lte_rrc_warningMessageSegmentType_r9, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_warningMessageSegmentType_r9 }, - { &hf_lte_rrc_warningMessageSegmentNumber_r9, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_INTEGER_0_63 }, + { &hf_lte_rrc_warningMessageSegmentNumber_r9, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_warningMessageSegmentNumber_r9 }, { &hf_lte_rrc_warningMessageSegment_r9, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lte_rrc_T_warningMessageSegment_r9 }, { &hf_lte_rrc_dataCodingScheme_r9, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_T_dataCodingScheme_r9 }, { &hf_lte_rrc_lateNonCriticalExtension, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lte_rrc_OCTET_STRING }, @@ -44230,7 +44380,7 @@ static int dissect_UE_EUTRA_Capability_v9a0_IEs_PDU(tvbuff_t *tvb _U_, packet_in /*--- End of included file: packet-lte-rrc-fn.c ---*/ -#line 2560 "../../asn1/lte-rrc/packet-lte-rrc-template.c" +#line 2654 "../../asn1/lte-rrc/packet-lte-rrc-template.c" static void dissect_lte_rrc_DL_CCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) @@ -44385,6 +44535,10 @@ lte_rrc_init_protocol(void) { lte_rrc_etws_cmas_dcs_hash = g_hash_table_new(g_direct_hash, g_direct_equal); lte_rrc_system_info_value_changed_hash = g_hash_table_new(g_direct_hash, g_direct_equal); + reassembly_table_init(<e_rrc_sib11_reassembly_table, + &addresses_reassembly_table_functions); + reassembly_table_init(<e_rrc_sib12_reassembly_table, + &addresses_reassembly_table_functions); } static void @@ -44392,6 +44546,8 @@ lte_rrc_cleanup_protocol(void) { g_hash_table_destroy(lte_rrc_etws_cmas_dcs_hash); g_hash_table_destroy(lte_rrc_system_info_value_changed_hash); + reassembly_table_destroy(<e_rrc_sib11_reassembly_table); + reassembly_table_destroy(<e_rrc_sib12_reassembly_table); } /*--- proto_register_rrc -------------------------------------------*/ @@ -48978,7 +49134,7 @@ void proto_register_lte_rrc(void) { { &hf_lte_rrc_warningMessageSegmentNumber, { "warningMessageSegmentNumber", "lte-rrc.warningMessageSegmentNumber", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_63", HFILL }}, + NULL, HFILL }}, { &hf_lte_rrc_warningMessageSegment, { "warningMessageSegment", "lte-rrc.warningMessageSegment", FT_BYTES, BASE_NONE, NULL, 0, @@ -49002,7 +49158,7 @@ void proto_register_lte_rrc(void) { { &hf_lte_rrc_warningMessageSegmentNumber_r9, { "warningMessageSegmentNumber-r9", "lte-rrc.warningMessageSegmentNumber_r9", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_63", HFILL }}, + NULL, HFILL }}, { &hf_lte_rrc_warningMessageSegment_r9, { "warningMessageSegment-r9", "lte-rrc.warningMessageSegment_r9", FT_BYTES, BASE_NONE, NULL, 0, @@ -55657,7 +55813,7 @@ void proto_register_lte_rrc(void) { "BIT_STRING_SIZE_19", HFILL }}, /*--- End of included file: packet-lte-rrc-hfarr.c ---*/ -#line 2730 "../../asn1/lte-rrc/packet-lte-rrc-template.c" +#line 2830 "../../asn1/lte-rrc/packet-lte-rrc-template.c" { &hf_lte_rrc_eutra_cap_feat_group_ind_1, { "Indicator 1", "lte-rrc.eutra_cap_feat_group_ind_1", @@ -56275,6 +56431,94 @@ void proto_register_lte_rrc(void) { { "MPR/A-MPR behavior 31", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_31", FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0, NULL, HFILL }}, + { &hf_lte_rrc_sib11_fragments, + { "Fragments", "lte-rrc.warningMessageSegment.fragments", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib11_fragment, + { "Fragment", "lte-rrc.warningMessageSegment.fragment", + FT_FRAMENUM, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib11_fragment_overlap, + { "Fragment Overlap", "lte-rrc.warningMessageSegment.fragment_overlap", + FT_BOOLEAN, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib11_fragment_overlap_conflict, + { "Fragment Overlap Conflict", "lte-rrc.warningMessageSegment.fragment_overlap_conflict", + FT_BOOLEAN, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib11_fragment_multiple_tails, + { "Fragment Multiple Tails", "lte-rrc.warningMessageSegment.fragment_multiple_tails", + FT_BOOLEAN, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib11_fragment_too_long_fragment, + { "Too Long Fragment", "lte-rrc.warningMessageSegment.fragment_too_long_fragment", + FT_BOOLEAN, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib11_fragment_error, + { "Fragment Error", "lte-rrc.warningMessageSegment.fragment_error", + FT_FRAMENUM, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib11_fragment_count, + { "Fragment Count", "lte-rrc.warningMessageSegment.fragment_count", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib11_reassembled_in, + { "Reassembled In", "lte-rrc.warningMessageSegment.reassembled_in", + FT_FRAMENUM, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib11_reassembled_length, + { "Reassembled Length", "lte-rrc.warningMessageSegment.reassembled_length", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib11_reassembled_data, + { "Reassembled Data", "lte-rrc.warningMessageSegment.reassembled_data", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib12_fragments, + { "Fragments", "lte-rrc.warningMessageSegment_r9.fragments", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib12_fragment, + { "Fragment", "lte-rrc.warningMessageSegment_r9.fragment", + FT_FRAMENUM, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib12_fragment_overlap, + { "Fragment Overlap", "lte-rrc.warningMessageSegment_r9.fragment_overlap", + FT_BOOLEAN, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib12_fragment_overlap_conflict, + { "Fragment Overlap Conflict", "lte-rrc.warningMessageSegment_r9.fragment_overlap_conflict", + FT_BOOLEAN, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib12_fragment_multiple_tails, + { "Fragment Multiple Tails", "lte-rrc.warningMessageSegment_r9.fragment_multiple_tails", + FT_BOOLEAN, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib12_fragment_too_long_fragment, + { "Too Long Fragment", "lte-rrc.warningMessageSegment_r9.fragment_too_long_fragment", + FT_BOOLEAN, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib12_fragment_error, + { "Fragment Error", "lte-rrc.warningMessageSegment_r9.fragment_error", + FT_FRAMENUM, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib12_fragment_count, + { "Fragment Count", "lte-rrc.warningMessageSegment_r9.fragment_count", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib12_reassembled_in, + { "Reassembled In", "lte-rrc.warningMessageSegment_r9.reassembled_in", + FT_FRAMENUM, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib12_reassembled_length, + { "Reassembled Length", "lte-rrc.warningMessageSegment_r9.reassembled_length", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_sib12_reassembled_data, + { "Reassembled Data", "lte-rrc.warningMessageSegment_r9.reassembled_data", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }} }; /* List of subtrees */ @@ -57656,7 +57900,7 @@ void proto_register_lte_rrc(void) { &ett_lte_rrc_MasterInformationBlock_SL, /*--- End of included file: packet-lte-rrc-ettarr.c ---*/ -#line 3353 "../../asn1/lte-rrc/packet-lte-rrc-template.c" +#line 3541 "../../asn1/lte-rrc/packet-lte-rrc-template.c" &ett_lte_rrc_featureGroupIndicators, &ett_lte_rrc_featureGroupIndRel9Add, @@ -57675,7 +57919,11 @@ void proto_register_lte_rrc(void) { &ett_lte_rrc_tdd_FDD_CA_PCellDuplex_r12, &ett_lte_rrc_sr_ConfigIndex, &ett_lte_rrc_transmissionModeList_r12, - &ett_lte_rrc_modifiedMPR_Behavior_r10 + &ett_lte_rrc_modifiedMPR_Behavior_r10, + &ett_lte_rrc_sib11_fragment, + &ett_lte_rrc_sib11_fragments, + &ett_lte_rrc_sib12_fragment, + &ett_lte_rrc_sib12_fragments }; static ei_register_info ei[] = { @@ -57730,7 +57978,7 @@ void proto_register_lte_rrc(void) { /*--- End of included file: packet-lte-rrc-dis-reg.c ---*/ -#line 3410 "../../asn1/lte-rrc/packet-lte-rrc-template.c" +#line 3602 "../../asn1/lte-rrc/packet-lte-rrc-template.c" register_init_routine(<e_rrc_init_protocol); register_cleanup_routine(<e_rrc_cleanup_protocol); |