aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/e1_config.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2011-02-05 15:41:24 +0100
committerHarald Welte <laforge@gnumonks.org>2011-02-05 15:43:15 +0100
commit889f16eac3e856318ba88587a0c9e2c72cd4db89 (patch)
tree1ec39446ba400200b15cbbb53ea592c2162a59b1 /openbsc/src/e1_config.c
parentfefb52361a068e9e3be74d91a21740aaeb5b1fd8 (diff)
[E1 input] proper config error reporting
Diffstat (limited to 'openbsc/src/e1_config.c')
-rw-r--r--openbsc/src/e1_config.c42
1 files changed, 34 insertions, 8 deletions
diff --git a/openbsc/src/e1_config.c b/openbsc/src/e1_config.c
index f781b9e25..dd819926f 100644
--- a/openbsc/src/e1_config.c
+++ b/openbsc/src/e1_config.c
@@ -48,12 +48,19 @@ int e1_reconfig_ts(struct gsm_bts_trx_ts *ts)
DEBUGP(DMI, "e1_reconfig_ts(%u,%u,%u)\n", ts->trx->bts->nr, ts->trx->nr, ts->nr);
- if (!e1_link->e1_ts)
+ if (!e1_link->e1_ts) {
+ LOGP(DINP, LOGL_ERROR, "TS (%u/%u/%u) without E1 timeslot?\n",
+ ts->nr, ts->trx->nr, ts->trx->bts->nr);
return 0;
+ }
line = e1inp_line_get(e1_link->e1_nr);
- if (!line)
+ if (!line) {
+ LOGP(DINP, LOGL_ERROR, "TS (%u/%u/%u) referring to "
+ "non-existing E1 line %u\n", ts->nr, ts->trx->nr,
+ ts->trx->bts->nr, e1_link->e1_nr);
return -ENOMEM;
+ }
switch (ts->pchan) {
case GSM_PCHAN_TCH_F:
@@ -77,19 +84,29 @@ int e1_reconfig_trx(struct gsm_bts_trx *trx)
struct e1inp_sign_link *rsl_link;
int i;
- if (!e1_link->e1_ts)
+ if (!e1_link->e1_ts) {
+ LOGP(DINP, LOGL_ERROR, "TRX (%u/%u) RSL link without "
+ "timeslot?\n", trx->bts->nr, trx->nr);
return -EINVAL;
+ }
/* RSL Link */
line = e1inp_line_get(e1_link->e1_nr);
- if (!line)
+ if (!line) {
+ LOGP(DINP, LOGL_ERROR, "TRX (%u/%u) RSL link referring "
+ "to non-existing E1 line %u\n", trx->bts->nr,
+ trx->nr, e1_link->e1_nr);
return -ENOMEM;
+ }
sign_ts = &line->ts[e1_link->e1_ts-1];
e1inp_ts_config(sign_ts, line, E1INP_TS_TYPE_SIGN);
rsl_link = e1inp_sign_link_create(sign_ts, E1INP_SIGN_RSL,
trx, trx->rsl_tei, SAPI_RSL);
- if (!rsl_link)
+ if (!rsl_link) {
+ LOGP(DINP, LOGL_ERROR, "TRX (%u/%u) RSL link creation "
+ "failed\n", trx->bts->nr, trx->nr);
return -ENOMEM;
+ }
if (trx->rsl_link)
e1inp_sign_link_destroy(trx->rsl_link);
trx->rsl_link = rsl_link;
@@ -110,19 +127,28 @@ int e1_reconfig_bts(struct gsm_bts *bts)
DEBUGP(DMI, "e1_reconfig_bts(%u)\n", bts->nr);
- if (!e1_link->e1_ts)
+ if (!e1_link->e1_ts) {
+ LOGP(DINP, LOGL_ERROR, "BTS %u OML link without timeslot?\n",
+ bts->nr);
return -EINVAL;
+ }
/* OML link */
line = e1inp_line_get(e1_link->e1_nr);
- if (!line)
+ if (!line) {
+ LOGP(DINP, LOGL_ERROR, "BTS %u OML link referring to "
+ "non-existing E1 line %u\n", bts->nr, e1_link->e1_nr);
return -ENOMEM;
+ }
sign_ts = &line->ts[e1_link->e1_ts-1];
e1inp_ts_config(sign_ts, line, E1INP_TS_TYPE_SIGN);
oml_link = e1inp_sign_link_create(sign_ts, E1INP_SIGN_OML,
bts->c0, bts->oml_tei, SAPI_OML);
- if (!oml_link)
+ if (!oml_link) {
+ LOGP(DINP, LOGL_ERROR, "BTS %u OML link creation failed\n",
+ bts->nr);
return -ENOMEM;
+ }
if (bts->oml_link)
e1inp_sign_link_destroy(bts->oml_link);
bts->oml_link = oml_link;