aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authormartinm <martinm@f5534014-38df-0310-8fa8-9805f1628bb7>2011-04-17 21:34:47 +0000
committermartinm <martinm@f5534014-38df-0310-8fa8-9805f1628bb7>2011-04-17 21:34:47 +0000
commit9a0604e07bf2b1a6025fe488e2414c66892ef2ff (patch)
tree426b78e67fb84cf50913a121d05d668c81c7e2c5 /epan/dissectors
parentf879ff305c08c3212d3554238f8c60750bd83a22 (diff)
Allow signaling protocol (e.g. RRC) to set number of SN bits
PDCP should use for DRB channels. Not yet called by RRC. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@36692 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-rlc-lte.c16
-rw-r--r--epan/dissectors/packet-rlc-lte.h3
2 files changed, 18 insertions, 1 deletions
diff --git a/epan/dissectors/packet-rlc-lte.c b/epan/dissectors/packet-rlc-lte.c
index 7a648d52af..cfe72cf9ea 100644
--- a/epan/dissectors/packet-rlc-lte.c
+++ b/epan/dissectors/packet-rlc-lte.c
@@ -61,14 +61,16 @@ static gint global_rlc_lte_um_sequence_analysis = FALSE;
/* By default don't call PDCP/RRC dissectors for SDU data */
static gboolean global_rlc_lte_call_pdcp_for_srb = FALSE;
-enum pdcp_for_drb { PDCP_drb_off, PDCP_drb_SN_7, PDCP_drb_SN_12};
+enum pdcp_for_drb { PDCP_drb_off, PDCP_drb_SN_7, PDCP_drb_SN_12, PDCP_drb_SN_signalled};
static enum_val_t pdcp_drb_col_vals[] = {
{"pdcp-drb-off", "Off", PDCP_drb_off},
{"pdcp-drb-sn-7", "7-bit SN", PDCP_drb_SN_7},
{"pdcp-drb-sn-12", "12-bit SN", PDCP_drb_SN_12},
+ {"pdcp-drb-sn-signalling", "Use signalled value", PDCP_drb_SN_signalled},
{NULL, NULL, -1}
};
static gint global_rlc_lte_call_pdcp_for_drb = (gint)PDCP_drb_off;
+static gint signalled_pdcp_sn_bits = 12;
static gboolean global_rlc_lte_call_rrc = FALSE;
@@ -530,6 +532,11 @@ static void show_PDU_in_tree(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb
case PDCP_drb_SN_12:
p_pdcp_lte_info->seqnum_length = 12;
break;
+ case PDCP_drb_SN_signalled:
+ /* Use whatever was signalled (e.g. in RRC) */
+ p_pdcp_lte_info->seqnum_length = signalled_pdcp_sn_bits;
+ break;
+
default:
DISSECTOR_ASSERT(FALSE);
break;
@@ -2131,6 +2138,13 @@ rlc_lte_init_protocol(void)
}
+/* Configure number of PDCP SN bits to use for DRB channels.
+ TODO: currently assume all UEs/Channels will use the same length... */
+void set_rlc_lte_drb_pdcp_seqnum_length(guint16 ueid _U_, guint8 drbid _U_, guint8 userplane_seqnum_length)
+{
+ signalled_pdcp_sn_bits = userplane_seqnum_length;
+}
+
void proto_register_rlc_lte(void)
diff --git a/epan/dissectors/packet-rlc-lte.h b/epan/dissectors/packet-rlc-lte.h
index 8e8fe4a6a0..ab85d6cdc8 100644
--- a/epan/dissectors/packet-rlc-lte.h
+++ b/epan/dissectors/packet-rlc-lte.h
@@ -84,6 +84,9 @@ typedef struct rlc_lte_tap_info {
} rlc_lte_tap_info;
+/* Configure number of PDCP SN bits to use for DRB channels. */
+void set_rlc_lte_drb_pdcp_seqnum_length(guint16 ueid, guint8 drbid, guint8 userplane_seqnum_length);
+
/*****************************************************************/
/* UDP framing format */