aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/packet-pdcp-lte.c9
-rw-r--r--epan/dissectors/packet-pdcp-lte.h2
2 files changed, 11 insertions, 0 deletions
diff --git a/epan/dissectors/packet-pdcp-lte.c b/epan/dissectors/packet-pdcp-lte.c
index 3a517ab7bb..6c13f4d423 100644
--- a/epan/dissectors/packet-pdcp-lte.c
+++ b/epan/dissectors/packet-pdcp-lte.c
@@ -942,6 +942,10 @@ static gboolean dissect_pdcp_lte_heur(tvbuff_t *tvb, packet_info *pinfo,
p_pdcp_lte_info->profile = tvb_get_ntohs(tvb, offset);
offset += 2;
break;
+ case PDCP_LTE_CHANNEL_ID_TAG:
+ p_pdcp_lte_info->channelId = tvb_get_ntohs(tvb, offset);
+ offset += 2;
+ break;
case PDCP_LTE_PAYLOAD_TAG:
/* Have reached data, so get out of loop */
@@ -1059,6 +1063,11 @@ static void dissect_pdcp_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
write_pdu_label_and_info(root_ti, pinfo, " sn=%-2u ", seqnum);
offset++;
+ if (tvb_length_remaining(tvb, offset) == 0) {
+ /* Only PDCP header was captured, stop dissection here */
+ return;
+ }
+
/* RRC data is all but last 4 bytes.
Call lte-rrc dissector (according to direction and channel type) */
if (global_pdcp_dissect_signalling_plane_as_rrc) {
diff --git a/epan/dissectors/packet-pdcp-lte.h b/epan/dissectors/packet-pdcp-lte.h
index 5abcc1354f..20f6e5d1a2 100644
--- a/epan/dissectors/packet-pdcp-lte.h
+++ b/epan/dissectors/packet-pdcp-lte.h
@@ -161,6 +161,8 @@ typedef struct pdcp_lte_info
#define PDCP_LTE_ROHC_PROFILE_TAG 0x0C
/* 2 bytes, network order */
+#define PDCP_LTE_CHANNEL_ID_TAG 0x0D
+/* 2 bytes, network order */
/* PDCP PDU. Following this tag comes the actual PDCP PDU (there is no length, the PDU
continues until the end of the frame) */