diff options
author | Max <msuraev@sysmocom.de> | 2017-10-09 17:12:53 +0200 |
---|---|---|
committer | Max <msuraev@sysmocom.de> | 2017-10-09 18:42:15 +0200 |
commit | 3d049d27f5ab8d1b51bf02e752349df83774066c (patch) | |
tree | ecd4f4c64a1a699a4c7eb5c8e4148eb50c1e505e /src/libbsc/abis_nm.c | |
parent | 081cebaa6ddf3abebb93025c7eb430f0c9844016 (diff) |
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
Diffstat (limited to 'src/libbsc/abis_nm.c')
-rw-r--r-- | src/libbsc/abis_nm.c | 28 |
1 files changed, 28 insertions, 0 deletions
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; |