diff options
author | Pascal Quantin <pascal@wireshark.org> | 2019-07-01 17:56:25 +0200 |
---|---|---|
committer | Pascal Quantin <pascal@wireshark.org> | 2019-07-01 16:53:03 +0000 |
commit | 7af35b68bd0004e7bc57221cbdf84ffad0135894 (patch) | |
tree | 00629a73e48640baee1767bb49d4a6a2c82104ce | |
parent | 376d4c35952b087a9759c6919ac96892fa61032a (diff) |
LTE RRC: dissect requestedCapabilityCommon / appliedCapabilityFilterCommon IEs
Change-Id: I39198df9a048510d040d56a53183669bda176cdc
Reviewed-on: https://code.wireshark.org/review/33804
Petri-Dish: Pascal Quantin <pascal@wireshark.org>
Tested-by: Petri Dish Buildbot
Reviewed-by: Pascal Quantin <pascal@wireshark.org>
-rw-r--r-- | epan/dissectors/asn1/lte-rrc/lte-rrc.cnf | 16 | ||||
-rw-r--r-- | epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c | 4 | ||||
-rw-r--r-- | epan/dissectors/asn1/nr-rrc/nr-rrc.cnf | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-lte-rrc.c | 58 | ||||
-rw-r--r-- | epan/dissectors/packet-nr-rrc.c | 15 | ||||
-rw-r--r-- | epan/dissectors/packet-nr-rrc.h | 1 |
6 files changed, 84 insertions, 12 deletions
diff --git a/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf b/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf index c2c6b51476..e58712e465 100644 --- a/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf +++ b/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf @@ -217,6 +217,14 @@ SI-OrPSI-GERAN TYPE_PREFIX dissect_nr_rrc_UE_CapabilityRequestFilterNR_PDU(ue_cap_req_filter_nr_tvb, actx->pinfo, subtree, NULL); } +#.FN_BODY UECapabilityEnquiry-v1560-IEs/requestedCapabilityCommon-r15 VAL_PTR = &ue_cap_req_filter_common_tvb + tvbuff_t *ue_cap_req_filter_common_tvb = NULL; +%(DEFAULT_BODY)s + if (ue_cap_req_filter_common_tvb) { + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_requestedCapabilityCommon_r15); + dissect_nr_rrc_UE_CapabilityRequestFilterCommon_PDU(ue_cap_req_filter_common_tvb, actx->pinfo, subtree, NULL); + } + #.FN_BODY UE-CapabilityRAT-Container /* Initialise to invalid value */ private_data_set_rat_type(actx, 0xFF); @@ -345,6 +353,14 @@ if(ue_cap_tvb){ dissect_lte_rrc_featureGroupIndRel9Add(featureGroupIndRel9Add_tvb, actx); } +#.FN_BODY UE-EUTRA-Capability-v1560-IEs/appliedCapabilityFilterCommon-r15 VAL_PTR = &ue_cap_req_filter_common_tvb + tvbuff_t *ue_cap_req_filter_common_tvb = NULL; +%(DEFAULT_BODY)s + if (ue_cap_req_filter_common_tvb) { + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_requestedCapabilityCommon_r15); + dissect_nr_rrc_UE_CapabilityRequestFilterCommon_PDU(ue_cap_req_filter_common_tvb, actx->pinfo, subtree, NULL); + } + #.FN_BODY UE-EUTRA-CapabilityAddXDD-Mode-r9/featureGroupIndicators-r9 VAL_PTR = &featureGroupIndicators_tvb tvbuff_t *featureGroupIndicators_tvb=NULL; %(DEFAULT_BODY)s diff --git a/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c b/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c index 7cd6cc1c8d..50766056a5 100644 --- a/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c +++ b/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c @@ -309,6 +309,7 @@ static gint ett_lte_rrc_measGapPatterns_r15 = -1; static gint ett_lte_rrc_nas_Container_r15 = -1; static gint ett_lte_rrc_sourceRB_ConfigIntra5GC_r15 = -1; static gint ett_lte_rrc_selectedbandCombinationInfoEN_DC_v1540 = -1; +static gint ett_lte_rrc_requestedCapabilityCommon_r15 = -1; static expert_field ei_lte_rrc_number_pages_le15 = EI_INIT; static expert_field ei_lte_rrc_si_info_value_changed = EI_INIT; @@ -4345,7 +4346,8 @@ void proto_register_lte_rrc(void) { &ett_lte_rrc_measGapPatterns_r15, &ett_lte_rrc_nas_Container_r15, &ett_lte_rrc_sourceRB_ConfigIntra5GC_r15, - &ett_lte_rrc_selectedbandCombinationInfoEN_DC_v1540 + &ett_lte_rrc_selectedbandCombinationInfoEN_DC_v1540, + &ett_lte_rrc_requestedCapabilityCommon_r15 }; static ei_register_info ei[] = { diff --git a/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf b/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf index f9f9c32407..3a1fa79a19 100644 --- a/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf +++ b/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf @@ -71,6 +71,7 @@ SIB7_PDU SIB8_PDU SIB9_PDU UE-CapabilityRAT-ContainerList_PDU +UE-CapabilityRequestFilterCommon_PDU UE-CapabilityRequestFilterNR_PDU UE-MRDC-Capability_PDU UE-NR-Capability_PDU @@ -115,6 +116,7 @@ SIB7 SIB8 SIB9 UE-CapabilityRAT-ContainerList +UE-CapabilityRequestFilterCommon UE-CapabilityRequestFilterNR UE-MRDC-Capability @ue_mrdc_cap UE-NR-Capability @ue_nr_cap diff --git a/epan/dissectors/packet-lte-rrc.c b/epan/dissectors/packet-lte-rrc.c index 4fe6fd98ad..9aadca03d9 100644 --- a/epan/dissectors/packet-lte-rrc.c +++ b/epan/dissectors/packet-lte-rrc.c @@ -1848,7 +1848,7 @@ static int hf_lte_rrc_eutra_nr_only_r15 = -1; /* T_eutra_nr_only_r15 */ static int hf_lte_rrc_nonCriticalExtension_200 = -1; /* UECapabilityEnquiry_v1550_IEs */ static int hf_lte_rrc_requestedCapabilityNR_r15 = -1; /* T_requestedCapabilityNR_r15 */ static int hf_lte_rrc_nonCriticalExtension_201 = -1; /* UECapabilityEnquiry_v1560_IEs */ -static int hf_lte_rrc_requestedCapabilityCommon_r15 = -1; /* OCTET_STRING */ +static int hf_lte_rrc_requestedCapabilityCommon_r15 = -1; /* T_requestedCapabilityCommon_r15 */ static int hf_lte_rrc_nonCriticalExtension_202 = -1; /* T_nonCriticalExtension_62 */ static int hf_lte_rrc_UE_CapabilityRequest_item = -1; /* RAT_Type */ static int hf_lte_rrc_criticalExtensions_49 = -1; /* T_criticalExtensions_49 */ @@ -5481,7 +5481,7 @@ static int hf_lte_rrc_tdd_Add_UE_EUTRA_Capabilities_v1550 = -1; /* UE_EUTRA_Cap static int hf_lte_rrc_nonCriticalExtension_290 = -1; /* UE_EUTRA_Capability_v1560_IEs */ static int hf_lte_rrc_pdcp_ParametersNR_v1560 = -1; /* PDCP_ParametersNR_v1560 */ static int hf_lte_rrc_irat_ParametersNR_v1560 = -1; /* IRAT_ParametersNR_v1560 */ -static int hf_lte_rrc_appliedCapabilityFilterCommon_r15 = -1; /* OCTET_STRING */ +static int hf_lte_rrc_appliedCapabilityFilterCommon_r15 = -1; /* T_appliedCapabilityFilterCommon_r15 */ static int hf_lte_rrc_fdd_Add_UE_EUTRA_Capabilities_v1560 = -1; /* UE_EUTRA_CapabilityAddXDD_Mode_v1560 */ static int hf_lte_rrc_tdd_Add_UE_EUTRA_Capabilities_v1560 = -1; /* UE_EUTRA_CapabilityAddXDD_Mode_v1560 */ static int hf_lte_rrc_nonCriticalExtension_291 = -1; /* T_nonCriticalExtension_80 */ @@ -11168,6 +11168,7 @@ static gint ett_lte_rrc_measGapPatterns_r15 = -1; static gint ett_lte_rrc_nas_Container_r15 = -1; static gint ett_lte_rrc_sourceRB_ConfigIntra5GC_r15 = -1; static gint ett_lte_rrc_selectedbandCombinationInfoEN_DC_v1540 = -1; +static gint ett_lte_rrc_requestedCapabilityCommon_r15 = -1; static expert_field ei_lte_rrc_number_pages_le15 = EI_INIT; static expert_field ei_lte_rrc_si_info_value_changed = EI_INIT; @@ -68810,6 +68811,23 @@ dissect_lte_rrc_T_requestedCapabilityNR_r15(tvbuff_t *tvb _U_, int offset _U_, a } + +static int +dissect_lte_rrc_T_requestedCapabilityCommon_r15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *ue_cap_req_filter_common_tvb = NULL; + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, FALSE, &ue_cap_req_filter_common_tvb); + + if (ue_cap_req_filter_common_tvb) { + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_requestedCapabilityCommon_r15); + dissect_nr_rrc_UE_CapabilityRequestFilterCommon_PDU(ue_cap_req_filter_common_tvb, actx->pinfo, subtree, NULL); + } + + + return offset; +} + + static const per_sequence_t T_nonCriticalExtension_62_sequence[] = { { NULL, 0, 0, NULL } }; @@ -68824,7 +68842,7 @@ dissect_lte_rrc_T_nonCriticalExtension_62(tvbuff_t *tvb _U_, int offset _U_, asn static const per_sequence_t UECapabilityEnquiry_v1560_IEs_sequence[] = { - { &hf_lte_rrc_requestedCapabilityCommon_r15, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_OCTET_STRING }, + { &hf_lte_rrc_requestedCapabilityCommon_r15, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_requestedCapabilityCommon_r15 }, { &hf_lte_rrc_nonCriticalExtension_202, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_nonCriticalExtension_62 }, { NULL, 0, 0, NULL } }; @@ -95101,6 +95119,23 @@ dissect_lte_rrc_IRAT_ParametersNR_v1560(tvbuff_t *tvb _U_, int offset _U_, asn1_ } + +static int +dissect_lte_rrc_T_appliedCapabilityFilterCommon_r15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *ue_cap_req_filter_common_tvb = NULL; + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, FALSE, &ue_cap_req_filter_common_tvb); + + if (ue_cap_req_filter_common_tvb) { + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_requestedCapabilityCommon_r15); + dissect_nr_rrc_UE_CapabilityRequestFilterCommon_PDU(ue_cap_req_filter_common_tvb, actx->pinfo, subtree, NULL); + } + + + return offset; +} + + static const per_sequence_t UE_EUTRA_CapabilityAddXDD_Mode_v1560_sequence[] = { { &hf_lte_rrc_pdcp_ParametersNR_v1560, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_PDCP_ParametersNR_v1560 }, { NULL, 0, 0, NULL } @@ -95131,7 +95166,7 @@ dissect_lte_rrc_T_nonCriticalExtension_80(tvbuff_t *tvb _U_, int offset _U_, asn static const per_sequence_t UE_EUTRA_Capability_v1560_IEs_sequence[] = { { &hf_lte_rrc_pdcp_ParametersNR_v1560, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_PDCP_ParametersNR_v1560 }, { &hf_lte_rrc_irat_ParametersNR_v1560, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_IRAT_ParametersNR_v1560 }, - { &hf_lte_rrc_appliedCapabilityFilterCommon_r15, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_OCTET_STRING }, + { &hf_lte_rrc_appliedCapabilityFilterCommon_r15, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_appliedCapabilityFilterCommon_r15 }, { &hf_lte_rrc_fdd_Add_UE_EUTRA_Capabilities_v1560, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_UE_EUTRA_CapabilityAddXDD_Mode_v1560 }, { &hf_lte_rrc_tdd_Add_UE_EUTRA_Capabilities_v1560, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lte_rrc_UE_EUTRA_CapabilityAddXDD_Mode_v1560 }, { &hf_lte_rrc_nonCriticalExtension_291, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lte_rrc_T_nonCriticalExtension_80 }, @@ -111465,7 +111500,7 @@ static int dissect_UE_RadioPagingInfo_NB_r13_PDU(tvbuff_t *tvb _U_, packet_info /*--- End of included file: packet-lte-rrc-fn.c ---*/ -#line 3175 "./asn1/lte-rrc/packet-lte-rrc-template.c" +#line 3176 "./asn1/lte-rrc/packet-lte-rrc-template.c" static int dissect_lte_rrc_DL_CCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) @@ -118034,7 +118069,7 @@ void proto_register_lte_rrc(void) { { &hf_lte_rrc_requestedCapabilityCommon_r15, { "requestedCapabilityCommon-r15", "lte-rrc.requestedCapabilityCommon_r15", FT_BYTES, BASE_NONE, NULL, 0, - "OCTET_STRING", HFILL }}, + NULL, HFILL }}, { &hf_lte_rrc_nonCriticalExtension_202, { "nonCriticalExtension", "lte-rrc.nonCriticalExtension_element", FT_NONE, BASE_NONE, NULL, 0, @@ -132566,7 +132601,7 @@ void proto_register_lte_rrc(void) { { &hf_lte_rrc_appliedCapabilityFilterCommon_r15, { "appliedCapabilityFilterCommon-r15", "lte-rrc.appliedCapabilityFilterCommon_r15", FT_BYTES, BASE_NONE, NULL, 0, - "OCTET_STRING", HFILL }}, + NULL, HFILL }}, { &hf_lte_rrc_fdd_Add_UE_EUTRA_Capabilities_v1560, { "fdd-Add-UE-EUTRA-Capabilities-v1560", "lte-rrc.fdd_Add_UE_EUTRA_Capabilities_v1560_element", FT_NONE, BASE_NONE, NULL, 0, @@ -141181,7 +141216,7 @@ void proto_register_lte_rrc(void) { "CarrierFreq_NB_r13", HFILL }}, /*--- End of included file: packet-lte-rrc-hfarr.c ---*/ -#line 3550 "./asn1/lte-rrc/packet-lte-rrc-template.c" +#line 3551 "./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", @@ -145235,7 +145270,7 @@ void proto_register_lte_rrc(void) { &ett_lte_rrc_PCI_ARFCN_NB_r14, /*--- End of included file: packet-lte-rrc-ettarr.c ---*/ -#line 4309 "./asn1/lte-rrc/packet-lte-rrc-template.c" +#line 4310 "./asn1/lte-rrc/packet-lte-rrc-template.c" &ett_lte_rrc_featureGroupIndicators, &ett_lte_rrc_featureGroupIndRel9Add, @@ -145275,7 +145310,8 @@ void proto_register_lte_rrc(void) { &ett_lte_rrc_measGapPatterns_r15, &ett_lte_rrc_nas_Container_r15, &ett_lte_rrc_sourceRB_ConfigIntra5GC_r15, - &ett_lte_rrc_selectedbandCombinationInfoEN_DC_v1540 + &ett_lte_rrc_selectedbandCombinationInfoEN_DC_v1540, + &ett_lte_rrc_requestedCapabilityCommon_r15 }; static ei_register_info ei[] = { @@ -145366,7 +145402,7 @@ void proto_register_lte_rrc(void) { /*--- End of included file: packet-lte-rrc-dis-reg.c ---*/ -#line 4403 "./asn1/lte-rrc/packet-lte-rrc-template.c" +#line 4405 "./asn1/lte-rrc/packet-lte-rrc-template.c" lte_rrc_etws_cmas_dcs_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal); lte_rrc_system_info_value_changed_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal); diff --git a/epan/dissectors/packet-nr-rrc.c b/epan/dissectors/packet-nr-rrc.c index c2e856267e..b96d6fba61 100644 --- a/epan/dissectors/packet-nr-rrc.c +++ b/epan/dissectors/packet-nr-rrc.c @@ -294,6 +294,7 @@ static int hf_nr_rrc_nr_rrc_RadioBearerConfig_PDU = -1; /* RadioBearerConfig */ static int hf_nr_rrc_nr_rrc_UplinkTxDirectCurrentList_PDU = -1; /* UplinkTxDirectCurrentList */ static int hf_nr_rrc_nr_rrc_FreqBandList_PDU = -1; /* FreqBandList */ static int hf_nr_rrc_nr_rrc_UE_CapabilityRAT_ContainerList_PDU = -1; /* UE_CapabilityRAT_ContainerList */ +static int hf_nr_rrc_nr_rrc_UE_CapabilityRequestFilterCommon_PDU = -1; /* UE_CapabilityRequestFilterCommon */ static int hf_nr_rrc_nr_rrc_UE_CapabilityRequestFilterNR_PDU = -1; /* UE_CapabilityRequestFilterNR */ static int hf_nr_rrc_nr_rrc_UE_MRDC_Capability_PDU = -1; /* UE_MRDC_Capability */ static int hf_nr_rrc_nr_rrc_UE_NR_Capability_PDU = -1; /* UE_NR_Capability */ @@ -43931,6 +43932,16 @@ int dissect_nr_rrc_UE_CapabilityRAT_ContainerList_PDU(tvbuff_t *tvb _U_, packet_ offset += 7; offset >>= 3; return offset; } +int dissect_nr_rrc_UE_CapabilityRequestFilterCommon_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + proto_item *prot_ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA); + proto_item_set_hidden(prot_ti); + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo); + offset = dissect_nr_rrc_UE_CapabilityRequestFilterCommon(tvb, offset, &asn1_ctx, tree, hf_nr_rrc_nr_rrc_UE_CapabilityRequestFilterCommon_PDU); + offset += 7; offset >>= 3; + return offset; +} int dissect_nr_rrc_UE_CapabilityRequestFilterNR_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { proto_item *prot_ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA); proto_item_set_hidden(prot_ti); @@ -44177,6 +44188,10 @@ proto_register_nr_rrc(void) { { "UE-CapabilityRAT-ContainerList", "nr-rrc.UE_CapabilityRAT_ContainerList", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_nr_rrc_nr_rrc_UE_CapabilityRequestFilterCommon_PDU, + { "UE-CapabilityRequestFilterCommon", "nr-rrc.UE_CapabilityRequestFilterCommon_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_nr_rrc_nr_rrc_UE_CapabilityRequestFilterNR_PDU, { "UE-CapabilityRequestFilterNR", "nr-rrc.UE_CapabilityRequestFilterNR_element", FT_NONE, BASE_NONE, NULL, 0, diff --git a/epan/dissectors/packet-nr-rrc.h b/epan/dissectors/packet-nr-rrc.h index bc0df48ed6..76e9081664 100644 --- a/epan/dissectors/packet-nr-rrc.h +++ b/epan/dissectors/packet-nr-rrc.h @@ -56,6 +56,7 @@ int dissect_nr_rrc_RadioBearerConfig_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _ int dissect_nr_rrc_UplinkTxDirectCurrentList_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); int dissect_nr_rrc_FreqBandList_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); int dissect_nr_rrc_UE_CapabilityRAT_ContainerList_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); +int dissect_nr_rrc_UE_CapabilityRequestFilterCommon_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); int dissect_nr_rrc_UE_CapabilityRequestFilterNR_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); int dissect_nr_rrc_UE_MRDC_Capability_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); int dissect_nr_rrc_UE_NR_Capability_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); |