vty: add commands to show TBF of a certain kind

Add vty commands to show only TBFs allocated via PACCH or CCCH.

Change-Id: I80f8df4fe663a0346f4289a4220b761e39726312
Related: OS#1759
diff --git a/src/pcu_vty_functions.cpp b/src/pcu_vty_functions.cpp
index c93935d..98e8185 100644
--- a/src/pcu_vty_functions.cpp
+++ b/src/pcu_vty_functions.cpp
@@ -44,11 +44,17 @@
 	#include "coding_scheme.h"
 }
 
-static void tbf_print_vty_info(struct vty *vty, gprs_rlcmac_tbf *tbf)
+static void tbf_print_vty_info(struct vty *vty, gprs_rlcmac_tbf *tbf, bool show_ccch, bool show_pacch)
 {
 	gprs_rlcmac_ul_tbf *ul_tbf = as_ul_tbf(tbf);
 	gprs_rlcmac_dl_tbf *dl_tbf = as_dl_tbf(tbf);
 
+	if (show_ccch && !(tbf->state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH)))
+		return;
+
+	if (show_pacch && !(tbf->state_flags & (1 << GPRS_RLCMAC_FLAG_PACCH)))
+		return;
+
 	vty_out(vty, "TBF: TFI=%d TLLI=0x%08x (%s) TA=%u DIR=%s IMSI=%s%s", tbf->tfi(),
 			tbf->tlli(), tbf->is_tlli_valid() ? "valid" : "invalid",
 			tbf->ta(),
@@ -101,18 +107,18 @@
 	vty_out(vty, "%s%s", VTY_NEWLINE, VTY_NEWLINE);
 }
 
-int pcu_vty_show_tbf_all(struct vty *vty, struct gprs_rlcmac_bts *bts_data)
+int pcu_vty_show_tbf_all(struct vty *vty, struct gprs_rlcmac_bts *bts_data, bool show_ccch, bool show_pacch)
 {
 	BTS *bts = bts_data->bts;
 	LListHead<gprs_rlcmac_tbf> *ms_iter;
 
 	vty_out(vty, "UL TBFs%s", VTY_NEWLINE);
 	llist_for_each(ms_iter, &bts->ul_tbfs())
-		tbf_print_vty_info(vty, ms_iter->entry());
+		tbf_print_vty_info(vty, ms_iter->entry(), show_ccch, show_pacch);
 
 	vty_out(vty, "%sDL TBFs%s", VTY_NEWLINE, VTY_NEWLINE);
 	llist_for_each(ms_iter, &bts->dl_tbfs())
-		tbf_print_vty_info(vty, ms_iter->entry());
+		tbf_print_vty_info(vty, ms_iter->entry(), show_ccch, show_pacch);
 
 	return CMD_SUCCESS;
 }