diff options
-rw-r--r-- | epan/dissectors/packet-pdcp-lte.c | 9 | ||||
-rw-r--r-- | epan/dissectors/packet-pdcp-lte.h | 2 |
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) */ |