From 3d049d27f5ab8d1b51bf02e752349df83774066c Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 9 Oct 2017 17:12:53 +0200 Subject: OML: consider RSL link state OML link state is available via vty ("sh bts 0" command) and ctrl ("oml-connection-state" RO variable). When showing OML link state, take into consideration RSL link state as well: if OML is up but RSL is missing show it as degraded. That's implemented via BTS model-specific functions (currently Sysmo- and Nano- BTS only) Change-Id: I5952fc59e4d82e0aa627ad91d20f964d9559a4c4 Related: OS#2486 --- src/libbsc/abis_nm.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/libbsc/abis_nm.c') diff --git a/src/libbsc/abis_nm.c b/src/libbsc/abis_nm.c index 9567cfa3a..f0dfe9e79 100644 --- a/src/libbsc/abis_nm.c +++ b/src/libbsc/abis_nm.c @@ -683,6 +683,34 @@ static int abis_nm_rx_lmt_event(struct msgb *mb) return 0; } +static inline bool all_trx_rsl_connected(const struct gsm_bts *bts) +{ + const struct gsm_bts_trx *trx; + + llist_for_each_entry(trx, &bts->trx_list, list) { + if (!trx->rsl_link) + return false; + } + + return true; +} + +char *get_oml_status(const struct gsm_bts *bts) +{ + if (bts->oml_link) + return all_trx_rsl_connected(bts) ? "connected" : "degraded"; + + return "disconnected"; +} + +char *get_model_oml_status(const struct gsm_bts *bts) +{ + if (bts->model->oml_status) + return bts->model->oml_status(bts); + + return "unknown"; +} + void abis_nm_queue_send_next(struct gsm_bts *bts) { int wait = 0; -- cgit v1.2.3