aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-pdcp-nr.c
diff options
context:
space:
mode:
authorMartin Mathieson <martin.mathieson@keysight.com>2020-09-25 13:47:08 +0100
committerMartin Mathieson <martin.r.mathieson@googlemail.com>2020-09-25 13:22:37 +0000
commit6f49de2e652476141bfff74e0ac699adf150a037 (patch)
treee1a57a92cacb3f76b53813100816322afcd6169a /epan/dissectors/packet-pdcp-nr.c
parentd0256f168a457e40ea1caf88e65591a9b28063f3 (diff)
SDAP: Show presence in configuration, and summary in root.
Diffstat (limited to 'epan/dissectors/packet-pdcp-nr.c')
-rw-r--r--epan/dissectors/packet-pdcp-nr.c33
1 files changed, 29 insertions, 4 deletions
diff --git a/epan/dissectors/packet-pdcp-nr.c b/epan/dissectors/packet-pdcp-nr.c
index ce436d0247..88a8cb3934 100644
--- a/epan/dissectors/packet-pdcp-nr.c
+++ b/epan/dissectors/packet-pdcp-nr.c
@@ -52,6 +52,7 @@ static int hf_pdcp_nr_bearer_type = -1;
static int hf_pdcp_nr_bearer_id = -1;
static int hf_pdcp_nr_plane = -1;
static int hf_pdcp_nr_seqnum_length = -1;
+static int hf_pdcp_nr_sdap = -1;
static int hf_pdcp_nr_rohc_compression = -1;
static int hf_pdcp_nr_rohc_mode = -1;
@@ -738,6 +739,14 @@ static void show_pdcp_config(packet_info *pinfo, tvbuff_t *tvb, proto_tree *tree
p_pdcp_info->seqnum_length);
proto_item_set_generated(ti);
+ /* SDAP */
+ ti = proto_tree_add_boolean(configuration_tree, hf_pdcp_nr_sdap, tvb, 0, 0,
+ (p_pdcp_info->direction == PDCP_NR_DIRECTION_UPLINK) ?
+ p_pdcp_info->sdap_header & PDCP_NR_UL_SDAP_HEADER_PRESENT :
+ p_pdcp_info->sdap_header & PDCP_NR_DL_SDAP_HEADER_PRESENT);
+ proto_item_set_generated(ti);
+
+
/* ROHC compression */
ti = proto_tree_add_boolean(configuration_tree, hf_pdcp_nr_rohc_compression, tvb, 0, 0,
p_pdcp_info->rohc.rohc_compression);
@@ -1315,20 +1324,30 @@ static int dissect_pdcp_nr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
p_pdcp_info->sdap_header & PDCP_NR_UL_SDAP_HEADER_PRESENT) ||
(p_pdcp_info->direction == PDCP_NR_DIRECTION_DOWNLINK &&
p_pdcp_info->sdap_header & PDCP_NR_DL_SDAP_HEADER_PRESENT)) {
+
+ /* SDAP */
proto_item *sdap_ti;
proto_tree *sdap_tree;
+ guint32 qfi;
+ /* Protocol subtree */
sdap_ti = proto_tree_add_item(pdcp_tree, proto_sdap, payload_tvb, offset, 1, ENC_NA);
sdap_tree = proto_item_add_subtree(sdap_ti, ett_sdap);
if (p_pdcp_info->direction == PDCP_NR_DIRECTION_UPLINK) {
- proto_tree_add_item(sdap_tree, hf_sdap_data_control, payload_tvb, offset, 1, ENC_NA);
+ gboolean data_control;
+ proto_tree_add_item_ret_boolean(sdap_tree, hf_sdap_data_control, payload_tvb, offset, 1, ENC_NA, &data_control);
proto_tree_add_item(sdap_tree, hf_sdap_reserved, payload_tvb, offset, 1, ENC_NA);
+ proto_item_append_text(sdap_ti, " (%s", tfs_get_string(data_control, &pdu_type_bit));
} else {
- proto_tree_add_item(sdap_tree, hf_sdap_rdi, payload_tvb, offset, 1, ENC_NA);
- proto_tree_add_item(sdap_tree, hf_sdap_rqi, payload_tvb, offset, 1, ENC_NA);
+ gboolean rdi, rqi;
+ proto_tree_add_item_ret_boolean(sdap_tree, hf_sdap_rdi, payload_tvb, offset, 1, ENC_NA, &rdi);
+ proto_tree_add_item_ret_boolean(sdap_tree, hf_sdap_rqi, payload_tvb, offset, 1, ENC_NA, &rqi);
+ proto_item_append_text(sdap_ti, " (RDI=%s, RQI=%s",
+ tfs_get_string(rdi, &sdap_rdi), tfs_get_string(rqi, &sdap_rqi));
}
- proto_tree_add_item(sdap_tree, hf_sdap_qfi, payload_tvb, offset, 1, ENC_NA);
+ proto_tree_add_item_ret_uint(sdap_tree, hf_sdap_qfi, payload_tvb, offset, 1, ENC_NA, &qfi);
offset++;
+ proto_item_append_text(sdap_ti, " QFI=%u)", qfi);
payload_length--;
}
@@ -1459,6 +1478,12 @@ void proto_register_pdcp_nr(void)
"Sequence Number Length", HFILL
}
},
+ { &hf_pdcp_nr_sdap,
+ { "SDAP header",
+ "pdcp-nr.sdap", FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x0,
+ "Indicates whether SDAP appears after PDCP headers", HFILL
+ }
+ },
{ &hf_pdcp_nr_rohc_compression,
{ "ROHC Compression",