From 6aba76666da060f12b379cf8786686e545007f2a Mon Sep 17 00:00:00 2001 From: Darien Spencer Date: Sat, 14 Oct 2017 20:22:29 +0300 Subject: [PATCH] rrc: Dissect algorithm capabilities asn2wrs created fields for several BITSTRING bits but does not actually uses them. This changeset calls them for the umts ciphering/integrity algorithms and gsm algorithms Change-Id: I88ddc2aec6805a77fcb3f3d547efda4d513ec919 Reviewed-on: https://code.wireshark.org/review/23899 Petri-Dish: Pascal Quantin Tested-by: Petri Dish Buildbot Reviewed-by: Pascal Quantin --- .../dissectors/asn1/rrc/packet-rrc-template.c | 4 + epan/dissectors/asn1/rrc/rrc.cnf | 79 +++++++ epan/dissectors/packet-rrc.c | 192 +++++++++++++----- 3 files changed, 222 insertions(+), 53 deletions(-) diff --git a/epan/dissectors/asn1/rrc/packet-rrc-template.c b/epan/dissectors/asn1/rrc/packet-rrc-template.c index fc12efcec0..d3baf96bad 100644 --- a/epan/dissectors/asn1/rrc/packet-rrc-template.c +++ b/epan/dissectors/asn1/rrc/packet-rrc-template.c @@ -286,6 +286,8 @@ static gint ett_rrc_eutraFeatureGroupIndicators = -1; static gint ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo = -1; static gint ett_rrc_ims_info = -1; static gint ett_rrc_cellIdentity = -1; +static gint ett_rrc_cipheringAlgorithmCap = -1; +static gint ett_rrc_integrityProtectionAlgorithmCap = -1; static expert_field ei_rrc_no_hrnti = EI_INIT; @@ -539,6 +541,8 @@ void proto_register_rrc(void) { &ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo, &ett_rrc_ims_info, &ett_rrc_cellIdentity, + &ett_rrc_cipheringAlgorithmCap, + &ett_rrc_integrityProtectionAlgorithmCap, }; static ei_register_info ei[] = { diff --git a/epan/dissectors/asn1/rrc/rrc.cnf b/epan/dissectors/asn1/rrc/rrc.cnf index 7ee9b77b03..02ccc7027f 100644 --- a/epan/dissectors/asn1/rrc/rrc.cnf +++ b/epan/dissectors/asn1/rrc/rrc.cnf @@ -556,6 +556,85 @@ HandoverFromUTRANCommand-GSM-r6-IEs/gsm-message/single-GSM-Message single-GSM-Me col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformationFailure"); %(DEFAULT_BODY)s +#.FN_BODY SecurityCapability/cipheringAlgorithmCap VAL_PTR = &cap_tvb + tvbuff_t *cap_tvb=NULL; + proto_tree *subtree; + +%(DEFAULT_BODY)s + + if (cap_tvb) { + subtree = proto_item_add_subtree(actx->created_item, ett_rrc_cipheringAlgorithmCap); + /* NOTE: If one of the lines below fail to compile after updating the RRC .asn files + * it probably means one of the 'spare' bits has been utilized and the hf member has a new name + */ + /* First octet */ + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare15, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare14, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare13, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare12, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare11, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare10, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare9, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare8, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + /* Second octet */ + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare7, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare6, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare5, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare4, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare3, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_uea2, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_uea1, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_uea0, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + } + +#.FN_BODY SecurityCapability/integrityProtectionAlgorithmCap VAL_PTR = &cap_tvb + tvbuff_t *cap_tvb=NULL; + proto_tree *subtree; + +%(DEFAULT_BODY)s + + if (cap_tvb) { + subtree = proto_item_add_subtree(actx->created_item, ett_rrc_integrityProtectionAlgorithmCap); + /* NOTE: If one of the lines below fail to compile after updating the RRC .asn files + * it probably means one of the 'spare' bits has been utilized and the hf member has a new name + */ + /* First octet */ + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare15, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare14, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare13, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare12, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare11, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare10, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare9, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare8, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + /* Second octet */ + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare7, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare6, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare5, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare4, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare3, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_uia2, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_uia1, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare0, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + } + +#.FN_BODY GsmSecurityCapability VAL_PTR = &cap_tvb + tvbuff_t *cap_tvb=NULL; + proto_tree *subtree; + +%(DEFAULT_BODY)s + + if (cap_tvb) { + subtree = proto_item_add_subtree(actx->created_item, ett_rrc_GsmSecurityCapability); + proto_tree_add_item(subtree, hf_rrc_GsmSecurityCapability_a5_7, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_GsmSecurityCapability_a5_6, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_GsmSecurityCapability_a5_5, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_GsmSecurityCapability_a5_4, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_GsmSecurityCapability_a5_3, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_GsmSecurityCapability_a5_2, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_GsmSecurityCapability_a5_1, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + } + #.FN_BODY TargetRNC-ToSourceRNC-Container/dL-DCCHmessage VAL_PTR = &dl_dcch_message_tvb tvbuff_t *dl_dcch_message_tvb=NULL; diff --git a/epan/dissectors/packet-rrc.c b/epan/dissectors/packet-rrc.c index 751e746576..69f552514f 100644 --- a/epan/dissectors/packet-rrc.c +++ b/epan/dissectors/packet-rrc.c @@ -18226,6 +18226,8 @@ static gint ett_rrc_eutraFeatureGroupIndicators = -1; static gint ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo = -1; static gint ett_rrc_ims_info = -1; static gint ett_rrc_cellIdentity = -1; +static gint ett_rrc_cipheringAlgorithmCap = -1; +static gint ett_rrc_integrityProtectionAlgorithmCap = -1; static expert_field ei_rrc_no_hrnti = EI_INIT; @@ -18576,7 +18578,7 @@ dissect_rrc_ActivationTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ static int dissect_rrc_RB_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1160 "./asn1/rrc/rrc.cnf" +#line 1239 "./asn1/rrc/rrc.cnf" guint32 rbid; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 32U, &rbid, FALSE); @@ -18593,7 +18595,7 @@ private_data_set_rbid(actx, rbid); static int dissect_rrc_RLC_SequenceNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1166 "./asn1/rrc/rrc.cnf" +#line 1245 "./asn1/rrc/rrc.cnf" guint32 rlc_ciphering_sqn; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 4095U, &rlc_ciphering_sqn, FALSE); @@ -18614,7 +18616,7 @@ static const per_sequence_t RB_ActivationTimeInfo_sequence[] = { static int dissect_rrc_RB_ActivationTimeInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1132 "./asn1/rrc/rrc.cnf" +#line 1211 "./asn1/rrc/rrc.cnf" fp_info *fpinf; rlc_info *rlcinf; rrc_ciphering_info *ciphering_info; @@ -18683,7 +18685,7 @@ dissect_rrc_CipheringModeInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static int dissect_rrc_SRNC_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 873 "./asn1/rrc/rrc.cnf" +#line 952 "./asn1/rrc/rrc.cnf" tvbuff_t * s_rnc_id_tvb = NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 12, 12, FALSE, &s_rnc_id_tvb, NULL); @@ -18701,7 +18703,7 @@ dissect_rrc_SRNC_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int dissect_rrc_S_RNTI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 880 "./asn1/rrc/rrc.cnf" +#line 959 "./asn1/rrc/rrc.cnf" tvbuff_t * s_rnti_tvb = NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 20, 20, FALSE, &s_rnti_tvb, NULL); @@ -18724,7 +18726,7 @@ static const per_sequence_t U_RNTI_sequence[] = { static int dissect_rrc_U_RNTI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 887 "./asn1/rrc/rrc.cnf" +#line 966 "./asn1/rrc/rrc.cnf" private_data_set_s_rnc_id(actx, 0); private_data_set_s_rnti(actx, 0); guint32 s_rnc_id; @@ -18760,7 +18762,7 @@ dissect_rrc_U_RNTI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, prot static int dissect_rrc_Digit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 755 "./asn1/rrc/rrc.cnf" +#line 834 "./asn1/rrc/rrc.cnf" guint32 digit; wmem_strbuf_t* digits_strbuf; /* The string of either an IMSI or a MCC-MNC pair */ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, @@ -18829,7 +18831,7 @@ static const per_sequence_t PLMN_Identity_sequence[] = { static int dissect_rrc_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 698 "./asn1/rrc/rrc.cnf" +#line 777 "./asn1/rrc/rrc.cnf" wmem_strbuf_t* mcc_mnc_strbuf; guint32 string_len; gchar* mcc_mnc_string; @@ -18869,7 +18871,7 @@ dissect_rrc_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int dissect_rrc_NAS_SystemInformationGSM_MAP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 841 "./asn1/rrc/rrc.cnf" +#line 920 "./asn1/rrc/rrc.cnf" tvbuff_t *nas_sys_info_gsm_map_tvb = NULL; guint32 length; enum nas_sys_info_gsm_map cn_domain; @@ -18912,7 +18914,7 @@ dissect_rrc_NAS_SystemInformationGSM_MAP(tvbuff_t *tvb _U_, int offset _U_, asn1 static int dissect_rrc_T_cn_CommonGSM_MAP_NAS_SysInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 825 "./asn1/rrc/rrc.cnf" +#line 904 "./asn1/rrc/rrc.cnf" private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_CN_COMMON); offset = dissect_rrc_NAS_SystemInformationGSM_MAP(tvb, offset, actx, tree, hf_index); @@ -18932,7 +18934,7 @@ static const value_string rrc_CN_DomainIdentity_vals[] = { static int dissect_rrc_CN_DomainIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 818 "./asn1/rrc/rrc.cnf" +#line 897 "./asn1/rrc/rrc.cnf" guint32 nas_sys_info; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, &nas_sys_info, FALSE, 0, NULL); @@ -22591,7 +22593,7 @@ dissect_rrc_SSDT_UL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro static int dissect_rrc_CellIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 986 "./asn1/rrc/rrc.cnf" +#line 1065 "./asn1/rrc/rrc.cnf" tvbuff_t * cell_id_tvb = NULL; proto_item *temp_ti; proto_tree *cell_identity_tree; @@ -22816,7 +22818,7 @@ dissect_rrc_T_r3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_ static int dissect_rrc_H_RNTI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1074 "./asn1/rrc/rrc.cnf" +#line 1153 "./asn1/rrc/rrc.cnf" tvbuff_t *hrnti_tvb; struct rrc_info *rrcinf; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, @@ -22825,7 +22827,7 @@ dissect_rrc_H_RNTI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, prot -#line 1079 "./asn1/rrc/rrc.cnf" +#line 1158 "./asn1/rrc/rrc.cnf" rrcinf = (struct rrc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_rrc, 0); if (!rrcinf) { rrcinf = wmem_new0(wmem_file_scope(), struct rrc_info); @@ -22851,7 +22853,7 @@ dissect_rrc_E_RNTI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, prot static int dissect_rrc_T_cn_CommonGSM_MAP_NAS_SysInfo_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 829 "./asn1/rrc/rrc.cnf" +#line 908 "./asn1/rrc/rrc.cnf" private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_CN_COMMON); offset = dissect_rrc_NAS_SystemInformationGSM_MAP(tvb, offset, actx, tree, hf_index); @@ -28325,7 +28327,7 @@ dissect_rrc_ScramblingCodeType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int dissect_rrc_UL_ScramblingCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 981 "./asn1/rrc/rrc.cnf" +#line 1060 "./asn1/rrc/rrc.cnf" guint32 scrambling_code; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 16777215U, &scrambling_code, FALSE); @@ -38879,7 +38881,7 @@ dissect_rrc_CellChangeOrderFromUTRAN_r3_IEs(tvbuff_t *tvb _U_, int offset _U_, a static int dissect_rrc_GERAN_SystemInfoBlock(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 607 "./asn1/rrc/rrc.cnf" +#line 686 "./asn1/rrc/rrc.cnf" tvbuff_t *parameter_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -39070,7 +39072,7 @@ dissect_rrc_CellChangeOrderFromUTRAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx static int dissect_rrc_C_RNTI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 912 "./asn1/rrc/rrc.cnf" +#line 991 "./asn1/rrc/rrc.cnf" fp_info *fpinf = NULL; umts_mac_info *macinf = NULL; rlc_info *rlcinf = NULL; @@ -46178,7 +46180,7 @@ dissect_rrc_RLC_Info_r5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static int dissect_rrc_MAC_d_FlowIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1071 "./asn1/rrc/rrc.cnf" +#line 1150 "./asn1/rrc/rrc.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 7U, &flowd, FALSE); @@ -46226,7 +46228,7 @@ static const per_choice_t DL_TransportChannelType_r5_choice[] = { static int dissect_rrc_DL_TransportChannelType_r5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1000 "./asn1/rrc/rrc.cnf" +#line 1079 "./asn1/rrc/rrc.cnf" /*Here we try to figure out which HS-DSCH channels are multiplexed*/ guint *flowd_p; guint *cur_val=NULL; @@ -49700,7 +49702,7 @@ static const per_choice_t DL_TransportChannelType_r7_choice[] = { static int dissect_rrc_DL_TransportChannelType_r7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1035 "./asn1/rrc/rrc.cnf" +#line 1114 "./asn1/rrc/rrc.cnf" /*Here we try to figure out which HS-DSCH channels are multiplexed*/ guint *flowd_p; guint *cur_val=NULL; @@ -63849,7 +63851,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 576 "./asn1/rrc/rrc.cnf" +#line 655 "./asn1/rrc/rrc.cnf" tvbuff_t *gsm_message_tvb=NULL; guint bits_remaining, whole_octets_remaining; @@ -63875,7 +63877,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 568 "./asn1/rrc/rrc.cnf" +#line 647 "./asn1/rrc/rrc.cnf" tvbuff_t *gsm_messagelist_tvb=NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, @@ -64135,7 +64137,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 591 "./asn1/rrc/rrc.cnf" +#line 670 "./asn1/rrc/rrc.cnf" tvbuff_t *gsm_message_tvb=NULL; guint bits_remaining, whole_octets_remaining; @@ -90278,7 +90280,7 @@ static const value_string rrc_ReleaseCause_vals[] = { static int dissect_rrc_ReleaseCause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1188 "./asn1/rrc/rrc.cnf" +#line 1267 "./asn1/rrc/rrc.cnf" guint32 value; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 8, &value, FALSE, 0, NULL); @@ -91024,8 +91026,40 @@ dissect_rrc_RRCConnectionRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * static int dissect_rrc_T_cipheringAlgorithmCap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 560 "./asn1/rrc/rrc.cnf" + tvbuff_t *cap_tvb=NULL; + proto_tree *subtree; + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 16, 16, FALSE, NULL, NULL); + 16, 16, FALSE, &cap_tvb, NULL); + + + if (cap_tvb) { + subtree = proto_item_add_subtree(actx->created_item, ett_rrc_cipheringAlgorithmCap); + /* NOTE: If one of the lines below fail to compile after updating the RRC .asn files + * it probably means one of the 'spare' bits has been utilized and the hf member has a new name + */ + /* First octet */ + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare15, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare14, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare13, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare12, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare11, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare10, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare9, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare8, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + /* Second octet */ + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare7, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare6, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare5, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare4, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_spare3, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_uea2, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_uea1, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_cipheringAlgorithmCap_uea0, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + } + + return offset; } @@ -91034,8 +91068,40 @@ dissect_rrc_T_cipheringAlgorithmCap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_ static int dissect_rrc_T_integrityProtectionAlgorithmCap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 591 "./asn1/rrc/rrc.cnf" + tvbuff_t *cap_tvb=NULL; + proto_tree *subtree; + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 16, 16, FALSE, NULL, NULL); + 16, 16, FALSE, &cap_tvb, NULL); + + + if (cap_tvb) { + subtree = proto_item_add_subtree(actx->created_item, ett_rrc_integrityProtectionAlgorithmCap); + /* NOTE: If one of the lines below fail to compile after updating the RRC .asn files + * it probably means one of the 'spare' bits has been utilized and the hf member has a new name + */ + /* First octet */ + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare15, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare14, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare13, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare12, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare11, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare10, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare9, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare8, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + /* Second octet */ + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare7, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare6, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare5, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare4, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare3, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_uia2, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_uia1, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_T_integrityProtectionAlgorithmCap_spare0, cap_tvb, 1, 1, ENC_BIG_ENDIAN); + } + + return offset; } @@ -91059,8 +91125,26 @@ dissect_rrc_SecurityCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int dissect_rrc_GsmSecurityCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 622 "./asn1/rrc/rrc.cnf" + tvbuff_t *cap_tvb=NULL; + proto_tree *subtree; + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 7, 7, FALSE, NULL, NULL); + 7, 7, FALSE, &cap_tvb, NULL); + + + if (cap_tvb) { + subtree = proto_item_add_subtree(actx->created_item, ett_rrc_GsmSecurityCapability); + proto_tree_add_item(subtree, hf_rrc_GsmSecurityCapability_a5_7, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_GsmSecurityCapability_a5_6, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_GsmSecurityCapability_a5_5, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_GsmSecurityCapability_a5_4, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_GsmSecurityCapability_a5_3, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_GsmSecurityCapability_a5_2, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_rrc_GsmSecurityCapability_a5_1, cap_tvb, 0, 1, ENC_BIG_ENDIAN); + } + + return offset; } @@ -95859,7 +95943,7 @@ dissect_rrc_UE_ConnTimersAndConstants(tvbuff_t *tvb _U_, int offset _U_, asn1_ct static int dissect_rrc_T_cn_CommonGSM_MAP_NAS_SysInfo_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 833 "./asn1/rrc/rrc.cnf" +#line 912 "./asn1/rrc/rrc.cnf" private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_CN_COMMON); offset = dissect_rrc_NAS_SystemInformationGSM_MAP(tvb, offset, actx, tree, hf_index); @@ -98464,7 +98548,7 @@ dissect_rrc_ETWSPrimaryNotificationWithSecurity(tvbuff_t *tvb _U_, int offset _U static int dissect_rrc_T_eutra_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 662 "./asn1/rrc/rrc.cnf" +#line 741 "./asn1/rrc/rrc.cnf" tvbuff_t *eutra_message_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, &eutra_message_tvb); @@ -98526,7 +98610,7 @@ dissect_rrc_T_r8_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro static int dissect_rrc_T_ims_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 780 "./asn1/rrc/rrc.cnf" +#line 859 "./asn1/rrc/rrc.cnf" tvbuff_t *imsInformation_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 1, 32, FALSE, &imsInformation_tvb); @@ -98581,7 +98665,7 @@ dissect_rrc_RSR_VCC_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static int dissect_rrc_T_eutra_Message_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 668 "./asn1/rrc/rrc.cnf" +#line 747 "./asn1/rrc/rrc.cnf" tvbuff_t *eutra_message_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, &eutra_message_tvb); @@ -99716,7 +99800,7 @@ static const per_choice_t DL_DCCH_MessageType_choice[] = { static int dissect_rrc_DL_DCCH_MessageType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1171 "./asn1/rrc/rrc.cnf" +#line 1250 "./asn1/rrc/rrc.cnf" offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_rrc_DL_DCCH_MessageType, DL_DCCH_MessageType_choice, &msg_type); @@ -99736,7 +99820,7 @@ static const per_sequence_t DL_DCCH_Message_sequence[] = { static int dissect_rrc_DL_DCCH_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1174 "./asn1/rrc/rrc.cnf" +#line 1253 "./asn1/rrc/rrc.cnf" offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_rrc_DL_DCCH_Message, DL_DCCH_Message_sequence); @@ -99750,7 +99834,7 @@ dissect_rrc_DL_DCCH_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_rrc_START_Value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1087 "./asn1/rrc/rrc.cnf" +#line 1166 "./asn1/rrc/rrc.cnf" tvbuff_t * start_val; fp_info *fpinf; rlc_info *rlcinf; @@ -101659,7 +101743,7 @@ dissect_rrc_HandoverFromUtranFailure_v590ext_IEs(tvbuff_t *tvb _U_, int offset _ static int dissect_rrc_T_eutra_Message_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 674 "./asn1/rrc/rrc.cnf" +#line 753 "./asn1/rrc/rrc.cnf" tvbuff_t *eutra_message_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, &eutra_message_tvb); @@ -109273,7 +109357,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 624 "./asn1/rrc/rrc.cnf" +#line 703 "./asn1/rrc/rrc.cnf" tvbuff_t *parameter_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -109292,7 +109376,7 @@ dissect_rrc_GSM_Classmark2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ 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 632 "./asn1/rrc/rrc.cnf" +#line 711 "./asn1/rrc/rrc.cnf" tvbuff_t *parameter_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -114942,7 +115026,7 @@ static const per_sequence_t IMSI_GSM_MAP_sequence_of[1] = { static int dissect_rrc_IMSI_GSM_MAP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 727 "./asn1/rrc/rrc.cnf" +#line 806 "./asn1/rrc/rrc.cnf" wmem_strbuf_t* imsi_strbuf; guint32 string_len; gchar* imsi_string; @@ -129534,7 +129618,7 @@ static const per_choice_t HandoverToUTRANCommand_choice[] = { static int dissect_rrc_HandoverToUTRANCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1177 "./asn1/rrc/rrc.cnf" +#line 1256 "./asn1/rrc/rrc.cnf" offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_rrc_HandoverToUTRANCommand, HandoverToUTRANCommand_choice, NULL); @@ -129675,7 +129759,7 @@ static const per_sequence_t UE_SecurityInformation_sequence[] = { static int dissect_rrc_UE_SecurityInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1180 "./asn1/rrc/rrc.cnf" +#line 1259 "./asn1/rrc/rrc.cnf" private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_CS); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_rrc_UE_SecurityInformation, UE_SecurityInformation_sequence); @@ -130078,7 +130162,7 @@ static const per_sequence_t UE_SecurityInformation2_sequence[] = { static int dissect_rrc_UE_SecurityInformation2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1184 "./asn1/rrc/rrc.cnf" +#line 1263 "./asn1/rrc/rrc.cnf" private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_PS); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_rrc_UE_SecurityInformation2, UE_SecurityInformation2_sequence); @@ -137148,7 +137232,7 @@ dissect_rrc_T_supportOfInterRATHOToEUTRATDD(tvbuff_t *tvb _U_, int offset _U_, a static int dissect_rrc_T_eutraFeatureGroupIndicators(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 680 "./asn1/rrc/rrc.cnf" +#line 759 "./asn1/rrc/rrc.cnf" tvbuff_t *eutraFeatureGroupIndicators_tvb=NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 4, 4, FALSE, &eutraFeatureGroupIndicators_tvb, NULL); @@ -138746,7 +138830,7 @@ dissect_rrc_T_supportOfInter_RAT_PS_Handover(tvbuff_t *tvb _U_, int offset _U_, static int dissect_rrc_GSM_MS_RadioAccessCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 640 "./asn1/rrc/rrc.cnf" +#line 719 "./asn1/rrc/rrc.cnf" tvbuff_t *parameter_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -139059,7 +139143,7 @@ dissect_rrc_UE_RadioAccessCapability_v860ext_IEs(tvbuff_t *tvb _U_, int offset _ static int dissect_rrc_T_ue_EUTRA_Capability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 656 "./asn1/rrc/rrc.cnf" +#line 735 "./asn1/rrc/rrc.cnf" tvbuff_t *ue_eutra_cap_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, &ue_eutra_cap_tvb); @@ -150772,7 +150856,7 @@ dissect_rrc_ExtSIBTypeInfoSchedulingInfo_List3(tvbuff_t *tvb _U_, int offset _U_ static int dissect_rrc_HNBName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 812 "./asn1/rrc/rrc.cnf" +#line 891 "./asn1/rrc/rrc.cnf" tvbuff_t *hnbname_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, -1, @@ -151363,7 +151447,7 @@ dissect_rrc_SIB_ReferenceList2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int dissect_rrc_T_cn_CommonGSM_MAP_NAS_SysInfo_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 837 "./asn1/rrc/rrc.cnf" +#line 916 "./asn1/rrc/rrc.cnf" private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_CN_COMMON); offset = dissect_rrc_NAS_SystemInformationGSM_MAP(tvb, offset, actx, tree, hf_index); @@ -156667,7 +156751,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 648 "./asn1/rrc/rrc.cnf" +#line 727 "./asn1/rrc/rrc.cnf" tvbuff_t *parameter_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -162246,7 +162330,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 560 "./asn1/rrc/rrc.cnf" +#line 639 "./asn1/rrc/rrc.cnf" tvbuff_t *dl_dcch_message_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -163078,7 +163162,7 @@ static int dissect_MeasurementReport_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _ /*--- End of included file: packet-rrc-fn.c ---*/ -#line 398 "./asn1/rrc/packet-rrc-template.c" +#line 400 "./asn1/rrc/packet-rrc-template.c" static int @@ -206485,7 +206569,7 @@ void proto_register_rrc(void) { NULL, HFILL }}, /*--- End of included file: packet-rrc-hfarr.c ---*/ -#line 488 "./asn1/rrc/packet-rrc-template.c" +#line 490 "./asn1/rrc/packet-rrc-template.c" { &hf_test, { "RAB Test", "rrc.RAB.test", FT_UINT8, BASE_DEC, NULL, 0, @@ -213434,11 +213518,13 @@ void proto_register_rrc(void) { &ett_rrc_UL_RFC3095_Context, /*--- End of included file: packet-rrc-ettarr.c ---*/ -#line 538 "./asn1/rrc/packet-rrc-template.c" +#line 540 "./asn1/rrc/packet-rrc-template.c" &ett_rrc_eutraFeatureGroupIndicators, &ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo, &ett_rrc_ims_info, &ett_rrc_cellIdentity, + &ett_rrc_cipheringAlgorithmCap, + &ett_rrc_integrityProtectionAlgorithmCap, }; static ei_register_info ei[] = { @@ -213533,7 +213619,7 @@ void proto_register_rrc(void) { /*--- End of included file: packet-rrc-dis-reg.c ---*/ -#line 561 "./asn1/rrc/packet-rrc-template.c" +#line 565 "./asn1/rrc/packet-rrc-template.c"