diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2018-10-04 13:26:30 +0200 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2018-10-04 12:49:46 +0000 |
commit | 3887162e95ab41eeacf7433607dce98be7f9bbed (patch) | |
tree | 978a8be15ba415eb710c1728f656204016a53226 /epan/dissectors/packet-lte-rrc.c | |
parent | 2370973e63ef58f965942bf0b4b922ff74015161 (diff) |
LTE RRC: fix RLC configuration for NB-IoT UE
R15 introduced UM mode for DRBs.
Change-Id: Ifd9030a46bcb237d6e6c1909f2dbad3be3a4eb86
Reviewed-on: https://code.wireshark.org/review/30014
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-lte-rrc.c')
-rw-r--r-- | epan/dissectors/packet-lte-rrc.c | 96 |
1 files changed, 78 insertions, 18 deletions
diff --git a/epan/dissectors/packet-lte-rrc.c b/epan/dissectors/packet-lte-rrc.c index 102c2ba98b..6d5de92f52 100644 --- a/epan/dissectors/packet-lte-rrc.c +++ b/epan/dissectors/packet-lte-rrc.c @@ -7294,9 +7294,9 @@ static int hf_lte_rrc_DRB_ToReleaseList_NB_r13_item = -1; /* DRB_Identity */ static int hf_lte_rrc_am_01 = -1; /* T_am_01 */ static int hf_lte_rrc_ul_AM_RLC_r13 = -1; /* UL_AM_RLC_NB_r13 */ static int hf_lte_rrc_dl_AM_RLC_r13 = -1; /* DL_AM_RLC_NB_r13 */ -static int hf_lte_rrc_um_Bi_Directional_r15_01 = -1; /* NULL */ -static int hf_lte_rrc_um_Uni_Directional_UL_r15_01 = -1; /* NULL */ -static int hf_lte_rrc_um_Uni_Directional_DL_r15_01 = -1; /* NULL */ +static int hf_lte_rrc_um_Bi_Directional_r15_01 = -1; /* T_um_Bi_Directional_r15_01 */ +static int hf_lte_rrc_um_Uni_Directional_UL_r15_01 = -1; /* T_um_Uni_Directional_UL_r15_01 */ +static int hf_lte_rrc_um_Uni_Directional_DL_r15_01 = -1; /* T_um_Uni_Directional_DL_r15_01 */ static int hf_lte_rrc_t_Reordering_r14 = -1; /* T_Reordering */ static int hf_lte_rrc_t_PollRetransmit_r13 = -1; /* T_PollRetransmit_NB_r13 */ static int hf_lte_rrc_maxRetxThreshold_r13 = -1; /* T_maxRetxThreshold_r13 */ @@ -94992,9 +94992,78 @@ static const per_sequence_t T_am_01_sequence[] = { static int dissect_lte_rrc_T_am_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + drb_mapping_t *mapping = private_data_get_drb_mapping(actx); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_lte_rrc_T_am_01, T_am_01_sequence); + if (mapping != NULL) { + mapping->rlcMode = RLC_AM_MODE; + mapping->rlcMode_present = TRUE; + mapping->pdcp_sn_size = 7; + mapping->pdcp_sn_size_present = TRUE; + } + + + return offset; +} + + + +static int +dissect_lte_rrc_T_um_Bi_Directional_r15_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + drb_mapping_t *mapping = private_data_get_drb_mapping(actx); + offset = dissect_per_null(tvb, offset, actx, tree, hf_index); + + if (mapping != NULL) { + mapping->rlcMode = RLC_UM_MODE; + mapping->rlcMode_present = TRUE; + mapping->um_sn_length = 5; + mapping->um_sn_length_present = TRUE; + mapping->pdcp_sn_size = 7; + mapping->pdcp_sn_size_present = TRUE; + } + + + return offset; +} + + + +static int +dissect_lte_rrc_T_um_Uni_Directional_UL_r15_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + drb_mapping_t *mapping = private_data_get_drb_mapping(actx); + offset = dissect_per_null(tvb, offset, actx, tree, hf_index); + + if (mapping != NULL) { + mapping->rlcMode = RLC_UM_MODE; + mapping->rlcMode_present = TRUE; + mapping->um_sn_length = 5; + mapping->um_sn_length_present = TRUE; + mapping->pdcp_sn_size = 7; + mapping->pdcp_sn_size_present = TRUE; + } + + + return offset; +} + + + +static int +dissect_lte_rrc_T_um_Uni_Directional_DL_r15_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + drb_mapping_t *mapping = private_data_get_drb_mapping(actx); + offset = dissect_per_null(tvb, offset, actx, tree, hf_index); + + if (mapping != NULL) { + mapping->rlcMode = RLC_UM_MODE; + mapping->rlcMode_present = TRUE; + mapping->um_sn_length = 5; + mapping->um_sn_length_present = TRUE; + mapping->pdcp_sn_size = 7; + mapping->pdcp_sn_size_present = TRUE; + } + + return offset; } @@ -95009,27 +95078,18 @@ static const value_string lte_rrc_RLC_Config_NB_r13_vals[] = { static const per_choice_t RLC_Config_NB_r13_choice[] = { { 0, &hf_lte_rrc_am_01 , ASN1_EXTENSION_ROOT , dissect_lte_rrc_T_am_01 }, - { 1, &hf_lte_rrc_um_Bi_Directional_r15_01, ASN1_NOT_EXTENSION_ROOT, dissect_lte_rrc_NULL }, - { 2, &hf_lte_rrc_um_Uni_Directional_UL_r15_01, ASN1_NOT_EXTENSION_ROOT, dissect_lte_rrc_NULL }, - { 3, &hf_lte_rrc_um_Uni_Directional_DL_r15_01, ASN1_NOT_EXTENSION_ROOT, dissect_lte_rrc_NULL }, + { 1, &hf_lte_rrc_um_Bi_Directional_r15_01, ASN1_NOT_EXTENSION_ROOT, dissect_lte_rrc_T_um_Bi_Directional_r15_01 }, + { 2, &hf_lte_rrc_um_Uni_Directional_UL_r15_01, ASN1_NOT_EXTENSION_ROOT, dissect_lte_rrc_T_um_Uni_Directional_UL_r15_01 }, + { 3, &hf_lte_rrc_um_Uni_Directional_DL_r15_01, ASN1_NOT_EXTENSION_ROOT, dissect_lte_rrc_T_um_Uni_Directional_DL_r15_01 }, { 0, NULL, 0, NULL } }; static int dissect_lte_rrc_RLC_Config_NB_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - drb_mapping_t *mapping = private_data_get_drb_mapping(actx); offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_lte_rrc_RLC_Config_NB_r13, RLC_Config_NB_r13_choice, NULL); - if (mapping != NULL) { - mapping->rlcMode = RLC_AM_MODE; - mapping->rlcMode_present = TRUE; - mapping->pdcp_sn_size = 7; - mapping->pdcp_sn_size_present = TRUE; - } - - return offset; } @@ -136160,15 +136220,15 @@ void proto_register_lte_rrc(void) { { &hf_lte_rrc_um_Bi_Directional_r15_01, { "um-Bi-Directional-r15", "lte-rrc.um_Bi_Directional_r15_element", FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, + "T_um_Bi_Directional_r15_01", HFILL }}, { &hf_lte_rrc_um_Uni_Directional_UL_r15_01, { "um-Uni-Directional-UL-r15", "lte-rrc.um_Uni_Directional_UL_r15_element", FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, + "T_um_Uni_Directional_UL_r15_01", HFILL }}, { &hf_lte_rrc_um_Uni_Directional_DL_r15_01, { "um-Uni-Directional-DL-r15", "lte-rrc.um_Uni_Directional_DL_r15_element", FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, + "T_um_Uni_Directional_DL_r15_01", HFILL }}, { &hf_lte_rrc_t_Reordering_r14, { "t-Reordering-r14", "lte-rrc.t_Reordering_r14", FT_UINT32, BASE_DEC|BASE_EXT_STRING, <e_rrc_T_Reordering_vals_ext, 0, |