Check OML state per-BTS
To properly decide if a given OML link is degraded we have to use
BTS-specific information about MO state.
* move check function into BTS-specific part
* add generic wrapper
Related: OS#2486
Change-Id: Iddc7a4d20fbb95a6566eed1487a12733e5adb9e2
diff --git a/include/osmocom/bsc/abis_nm.h b/include/osmocom/bsc/abis_nm.h
index 34f16a9..e25cb4f 100644
--- a/include/osmocom/bsc/abis_nm.h
+++ b/include/osmocom/bsc/abis_nm.h
@@ -162,6 +162,7 @@
const char *ipacc_testres_name(uint8_t res);
/* Functions calling into other code parts */
+bool all_trx_rsl_connected(const struct gsm_bts *bts);
int nm_is_running(struct gsm_nm_state *s);
int abis_nm_vty_init(void);
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index 51b2c98..74298b8 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -654,7 +654,6 @@
extern const struct value_string bts_type_names[_NUM_GSM_BTS_TYPE+1];
extern const struct value_string bts_type_descs[_NUM_GSM_BTS_TYPE+1];
-char *get_oml_status(const struct gsm_bts *bts);
char *get_model_oml_status(const struct gsm_bts *bts);
unsigned long long bts_uptime(const struct gsm_bts *bts);
diff --git a/src/libbsc/abis_nm.c b/src/libbsc/abis_nm.c
index f0dfe9e..b7391a1 100644
--- a/src/libbsc/abis_nm.c
+++ b/src/libbsc/abis_nm.c
@@ -683,7 +683,7 @@
return 0;
}
-static inline bool all_trx_rsl_connected(const struct gsm_bts *bts)
+bool all_trx_rsl_connected(const struct gsm_bts *bts)
{
const struct gsm_bts_trx *trx;
@@ -695,14 +695,6 @@
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)
diff --git a/src/libbsc/bts_ipaccess_nanobts.c b/src/libbsc/bts_ipaccess_nanobts.c
index dbb0e4f..9e273f5 100644
--- a/src/libbsc/bts_ipaccess_nanobts.c
+++ b/src/libbsc/bts_ipaccess_nanobts.c
@@ -47,6 +47,14 @@
static int bts_model_nanobts_start(struct gsm_network *net);
static void bts_model_nanobts_e1line_bind_ops(struct e1inp_line *line);
+static char *get_oml_status(const struct gsm_bts *bts)
+{
+ if (bts->oml_link)
+ return all_trx_rsl_connected(bts) ? "connected" : "degraded";
+
+ return "disconnected";
+}
+
struct gsm_bts_model bts_model_nanobts = {
.type = GSM_BTS_TYPE_NANOBTS,
.name = "nanobts",