aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2024-01-12 11:32:40 +0100
committerlaforge <laforge@osmocom.org>2024-01-24 08:52:55 +0000
commit9a730ee2d497b041cdb6fff297d9f6cda97d0633 (patch)
tree8459766ad417488effdb16baff4b6a102b15d077
parentf405db793e66cdfba8b78cea30cc08aa90a41b1f (diff)
VTY: Add command `show bts brief`
This line shows all BTS an their OML states in a single line. Additionally the uptime or downtime is displayed, if there was a connect or disconnect of the OML link. Related: OS#6018 Change-Id: I003fd32e589ddf53b7dd42089f904cfb598e3625
-rw-r--r--include/osmocom/bsc/vty.h1
-rw-r--r--src/osmo-bsc/bsc_vty.c17
-rw-r--r--src/osmo-bsc/bts_vty.c24
3 files changed, 33 insertions, 9 deletions
diff --git a/include/osmocom/bsc/vty.h b/include/osmocom/bsc/vty.h
index a54b18e44..092bc20dd 100644
--- a/include/osmocom/bsc/vty.h
+++ b/include/osmocom/bsc/vty.h
@@ -51,6 +51,7 @@ struct gsm_network *gsmnet_from_vty(struct vty *vty);
int bts_vty_init(void);
void bts_dump_vty(struct vty *vty, struct gsm_bts *bts);
+void bts_dump_vty_oml_link_state(struct vty *vty, struct gsm_bts *bts);
void trx_dump_vty(struct vty *vty, struct gsm_bts_trx *trx, bool print_rsl, bool show_connected);
void ts_dump_vty(struct vty *vty, struct gsm_bts_trx_ts *ts);
void lchan_dump_full_vty(struct vty *vty, struct gsm_lchan *lchan);
diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c
index 8a0747c3e..8690a47c3 100644
--- a/src/osmo-bsc/bsc_vty.c
+++ b/src/osmo-bsc/bsc_vty.c
@@ -257,6 +257,22 @@ DEFUN(show_bts, show_bts_cmd, "show bts [<0-255>]",
return CMD_SUCCESS;
}
+DEFUN(show_bts_brief, show_bts_brief_cmd, "show bts brief",
+ SHOW_STR "Display information about a BTS\n"
+ "Display availability status of all BTS\n")
+{
+ struct gsm_network *net = gsmnet_from_vty(vty);
+ struct gsm_bts *bts;
+
+ /* Print OML state of BTSs. */
+ llist_for_each_entry(bts, &net->bts_list, list) {
+ vty_out(vty, "BTS %d:", bts->nr);
+ bts_dump_vty_oml_link_state(vty, bts);
+ }
+
+ return CMD_SUCCESS;
+}
+
DEFUN(show_bts_fail_rep, show_bts_fail_rep_cmd, "show bts <0-255> fail-rep [reset]",
SHOW_STR "Display information about a BTS\n"
"BTS number\n" "OML failure reports\n"
@@ -3634,6 +3650,7 @@ int bsc_vty_init(struct gsm_network *network)
install_element_ve(&bsc_show_net_cmd);
install_element_ve(&show_bts_cmd);
+ install_element_ve(&show_bts_brief_cmd);
install_element_ve(&show_bts_fail_rep_cmd);
install_element_ve(&show_rejected_bts_cmd);
install_element_ve(&show_trx_cmd);
diff --git a/src/osmo-bsc/bts_vty.c b/src/osmo-bsc/bts_vty.c
index 8aa1f8920..e38ec94b0 100644
--- a/src/osmo-bsc/bts_vty.c
+++ b/src/osmo-bsc/bts_vty.c
@@ -3992,7 +3992,6 @@ static void bts_dump_vty_features(struct vty *vty, struct gsm_bts *bts)
void bts_dump_vty(struct vty *vty, struct gsm_bts *bts)
{
struct pchan_load pl;
- unsigned long long sec;
struct gsm_bts_trx *trx;
int ts_hopping_total;
int ts_non_hopping_total;
@@ -4124,14 +4123,7 @@ void bts_dump_vty(struct vty *vty, struct gsm_bts *bts)
if (is_ipa_abisip_bts(bts)) {
vty_out(vty, " OML Link: ");
e1isl_dump_vty_tcp(vty, bts->oml_link);
- vty_out(vty, " OML Link state: %s", get_model_oml_status(bts));
- if (bts_setup_ramp_active(bts->network))
- vty_out(vty, " BTS Ramping: %s", bts_setup_ramp_get_state_str(bts));
- sec = bts_updowntime(bts);
- if (sec)
- vty_out(vty, " %llu days %llu hours %llu min. %llu sec.",
- OSMO_SEC2DAY(sec), OSMO_SEC2HRS(sec), OSMO_SEC2MIN(sec), sec % 60);
- vty_out(vty, "%s", VTY_NEWLINE);
+ bts_dump_vty_oml_link_state(vty, bts);
} else {
vty_out(vty, " E1 Signalling Link:%s", VTY_NEWLINE);
e1isl_dump_vty(vty, bts->oml_link);
@@ -4209,6 +4201,20 @@ void bts_dump_vty(struct vty *vty, struct gsm_bts *bts)
bts_dump_vty_features(vty, bts);
}
+void bts_dump_vty_oml_link_state(struct vty *vty, struct gsm_bts *bts)
+{
+ unsigned long long sec;
+
+ vty_out(vty, " OML Link state: %s", get_model_oml_status(bts));
+ if (bts_setup_ramp_active(bts->network))
+ vty_out(vty, " BTS Ramping: %s", bts_setup_ramp_get_state_str(bts));
+ sec = bts_updowntime(bts);
+ if (sec)
+ vty_out(vty, " %llu days %llu hours %llu min. %llu sec.",
+ OSMO_SEC2DAY(sec), OSMO_SEC2HRS(sec), OSMO_SEC2MIN(sec), sec % 60);
+ vty_out(vty, "%s", VTY_NEWLINE);
+}
+
static void config_write_bts_gprs(struct vty *vty, struct gsm_bts *bts)
{
unsigned int i;