From 049643cf28fd3e00c5d712b2d40cacac8575cea9 Mon Sep 17 00:00:00 2001 From: Martin Mathieson Date: Tue, 19 Jul 2011 16:41:56 +0000 Subject: [PATCH] From Pradip Biswas, bug 6127 - Added Decode for RRC BCCH (BCH and DL_SCH) messages on RLC-over-UDP. Add separate codes/cases for BCH-over-BCH and BCH-over-DLSCH. svn path=/trunk/; revision=38115 --- epan/dissectors/packet-rlc-lte.c | 21 ++++++++++++--------- epan/dissectors/packet-rlc-lte.h | 3 ++- gtk/rlc_lte_stat_dlg.c | 3 ++- tap-rlcltestat.c | 3 ++- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/epan/dissectors/packet-rlc-lte.c b/epan/dissectors/packet-rlc-lte.c index 4e575a5af0..55d36e8aec 100644 --- a/epan/dissectors/packet-rlc-lte.c +++ b/epan/dissectors/packet-rlc-lte.c @@ -200,11 +200,12 @@ static const value_string rlc_mode_vals[] = static const value_string rlc_channel_type_vals[] = { - { CHANNEL_TYPE_CCCH, "CCCH"}, - { CHANNEL_TYPE_BCCH, "BCCH"}, - { CHANNEL_TYPE_PCCH, "PCCH"}, - { CHANNEL_TYPE_SRB, "SRB"}, - { CHANNEL_TYPE_DRB, "DRB"}, + { CHANNEL_TYPE_CCCH, "CCCH"}, + { CHANNEL_TYPE_BCCH_BCH, "BCCH_BCH"}, + { CHANNEL_TYPE_PCCH, "PCCH"}, + { CHANNEL_TYPE_SRB, "SRB"}, + { CHANNEL_TYPE_DRB, "DRB"}, + { CHANNEL_TYPE_BCCH_DL_SCH, "BCCH_DL_SCH"}, { 0, NULL } }; @@ -1386,10 +1387,12 @@ static void dissect_rlc_lte_tm(tvbuff_t *tvb, packet_info *pinfo, } break; - case CHANNEL_TYPE_BCCH: - /* TODO: Problem is don't know which transport channel... */ - return; - + case CHANNEL_TYPE_BCCH_BCH: + protocol_handle = find_dissector("lte_rrc.bcch.bch"); + break; + case CHANNEL_TYPE_BCCH_DL_SCH: + protocol_handle = find_dissector("lte_rrc.bcch.dl.sch"); + break; case CHANNEL_TYPE_PCCH: protocol_handle = find_dissector("lte-rrc.pcch"); break; diff --git a/epan/dissectors/packet-rlc-lte.h b/epan/dissectors/packet-rlc-lte.h index ab85d6cdc8..e79301a7a5 100644 --- a/epan/dissectors/packet-rlc-lte.h +++ b/epan/dissectors/packet-rlc-lte.h @@ -36,10 +36,11 @@ /* channelType */ #define CHANNEL_TYPE_CCCH 1 -#define CHANNEL_TYPE_BCCH 2 +#define CHANNEL_TYPE_BCCH_BCH 2 #define CHANNEL_TYPE_PCCH 3 #define CHANNEL_TYPE_SRB 4 #define CHANNEL_TYPE_DRB 5 +#define CHANNEL_TYPE_BCCH_DL_SCH 6 /* UMSequenceNumberLength */ #define UM_SN_LENGTH_5_BITS 5 diff --git a/gtk/rlc_lte_stat_dlg.c b/gtk/rlc_lte_stat_dlg.c index 1ed140233e..c341019407 100644 --- a/gtk/rlc_lte_stat_dlg.c +++ b/gtk/rlc_lte_stat_dlg.c @@ -391,7 +391,8 @@ rlc_lte_stat_packet(void *phs, packet_info *pinfo, epan_dissect_t *edt _U_, /* Common channel stats */ switch (si->channelType) { - case CHANNEL_TYPE_BCCH: + case CHANNEL_TYPE_BCCH_BCH: + case CHANNEL_TYPE_BCCH_DL_SCH: hs->common_stats.bcch_frames++; hs->common_stats.bcch_bytes += si->pduLength; return 1; diff --git a/tap-rlcltestat.c b/tap-rlcltestat.c index e9e291c327..a64c2d9024 100644 --- a/tap-rlcltestat.c +++ b/tap-rlcltestat.c @@ -187,7 +187,8 @@ rlc_lte_stat_packet(void *phs, packet_info *pinfo, epan_dissect_t *edt _U_, /* Common channel stats */ switch (si->channelType) { - case CHANNEL_TYPE_BCCH: + case CHANNEL_TYPE_BCCH_BCH: + case CHANNEL_TYPE_BCCH_DL_SCH: hs->common_stats.bcch_frames++; hs->common_stats.bcch_bytes += si->pduLength; return 1;