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
This commit is contained in:
Max 2018-02-01 16:07:33 +01:00 committed by Harald Welte
parent 0e6ac799f7
commit 12a0987b36
3 changed files with 23 additions and 8 deletions

View File

@ -1083,11 +1083,20 @@ DEFUN(cfg_pcu_gb_dialect,
DEFUN(show_tbf,
show_tbf_cmd,
"show tbf all",
SHOW_STR "information about TBFs\n" "All TBFs\n")
"show tbf (all|ccch|pacch)",
SHOW_STR "information about TBFs\n"
"All TBFs\n"
"TBFs allocated via CCCH\n"
"TBFs allocated via PACCH\n")
{
struct gprs_rlcmac_bts *bts = bts_main_data();
return pcu_vty_show_tbf_all(vty, bts);
if (!strcmp(argv[0], "all"))
return pcu_vty_show_tbf_all(vty, bts, true, true);
if (!strcmp(argv[0], "ccch"))
return pcu_vty_show_tbf_all(vty, bts_main_data(), true, false);
return pcu_vty_show_tbf_all(vty, bts_main_data(), false, true);
}
DEFUN(show_ms_all,

View File

@ -44,11 +44,17 @@ extern "C" {
#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 @@ static void tbf_print_vty_info(struct vty *vty, gprs_rlcmac_tbf *tbf)
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;
}

View File

@ -27,7 +27,7 @@ extern "C" {
struct vty;
struct gprs_rlcmac_bts;
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);
int pcu_vty_show_ms_all(struct vty *vty, struct gprs_rlcmac_bts *bts_data);
int pcu_vty_show_ms_by_tlli(struct vty *vty, struct gprs_rlcmac_bts *bts_data,
uint32_t tlli);