diff options
author | martinm <martinm@f5534014-38df-0310-8fa8-9805f1628bb7> | 2011-04-17 21:34:47 +0000 |
---|---|---|
committer | martinm <martinm@f5534014-38df-0310-8fa8-9805f1628bb7> | 2011-04-17 21:34:47 +0000 |
commit | 9a0604e07bf2b1a6025fe488e2414c66892ef2ff (patch) | |
tree | 426b78e67fb84cf50913a121d05d668c81c7e2c5 /epan/dissectors | |
parent | f879ff305c08c3212d3554238f8c60750bd83a22 (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.c | 16 | ||||
-rw-r--r-- | epan/dissectors/packet-rlc-lte.h | 3 |
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 */ |