aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-lte-rrc.c
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2018-10-04 13:26:30 +0200
committerPascal Quantin <pascal.quantin@gmail.com>2018-10-04 12:49:46 +0000
commit3887162e95ab41eeacf7433607dce98be7f9bbed (patch)
tree978a8be15ba415eb710c1728f656204016a53226 /epan/dissectors/packet-lte-rrc.c
parent2370973e63ef58f965942bf0b4b922ff74015161 (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.c96
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, &lte_rrc_T_Reordering_vals_ext, 0,