aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-06-14 17:00:35 +0800
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-06-14 17:00:35 +0800
commit9f972a5fb01d98c920f577c60e5995bd42a3a26e (patch)
tree50b91b39bdb3eee5d43d368307ddbc5abdb58a39
parent33f3dcbbcae533a3ed492d634d884e38e489c8bb (diff)
vty: Add show lchan-status to show the status...
Sometimes we see channels being allocated and never be freed. This command should help to understand why this is happening and in which state this channel is.
-rw-r--r--openbsc/src/vty_interface.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/openbsc/src/vty_interface.c b/openbsc/src/vty_interface.c
index 880c9910..945b571a 100644
--- a/openbsc/src/vty_interface.c
+++ b/openbsc/src/vty_interface.c
@@ -779,6 +779,17 @@ static void lchan_dump_short_vty(struct vty *vty, struct gsm_lchan *lchan)
VTY_NEWLINE);
}
+static void lchan_dump_status_vty(struct vty *vty, struct gsm_lchan *lchan)
+{
+ vty_out(vty, "Lchan: %u/%u/%u/%u Type: %s State: %s ref: %u Subscriber: %d "
+ "Time: %lu %s",
+ lchan->nr, lchan->ts->nr, lchan->ts->trx->nr,
+ lchan->ts->trx->bts->nr, gsm_lchant_name(lchan->type),
+ gsm_lchans_name(lchan->state), lchan->conn.use_count,
+ lchan->conn.subscr != NULL, (unsigned long) lchan->alloc_time.tv_sec,
+ VTY_NEWLINE);
+}
+
static int lchan_summary(struct vty *vty, int argc, const char **argv,
void (*dump_cb)(struct vty *, struct gsm_lchan *))
{
@@ -865,6 +876,14 @@ DEFUN(show_lchan_summary,
return lchan_summary(vty, argc, argv, lchan_dump_short_vty);
}
+DEFUN(show_lchan_status,
+ show_lchan_status_cmd,
+ "show lchan-status [bts_nr] [trx_nr] [ts_nr] [lchan_nr]",
+ SHOW_STR "Display a short stat about a logical channel\n")
+{
+ return lchan_summary(vty, argc, argv, lchan_dump_status_vty);
+}
+
static void e1drv_dump_vty(struct vty *vty, struct e1inp_driver *drv)
{
vty_out(vty, "E1 Input Driver %s%s", drv->name, VTY_NEWLINE);
@@ -2171,6 +2190,7 @@ int bsc_vty_init(struct gsm_network *net)
install_element(VIEW_NODE, &show_ts_cmd);
install_element(VIEW_NODE, &show_lchan_cmd);
install_element(VIEW_NODE, &show_lchan_summary_cmd);
+ install_element(VIEW_NODE, &show_lchan_status_cmd);
install_element(VIEW_NODE, &show_e1drv_cmd);
install_element(VIEW_NODE, &show_e1line_cmd);