aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/abis_nm.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2009-11-13 12:10:18 +0100
committerHarald Welte <laforge@gnumonks.org>2009-11-13 12:10:18 +0100
commit999549d9ae62a182d426b092042400e54abc23fd (patch)
treedc3349bde662b87e6f5b324de7e82a23b9d88c46 /openbsc/src/abis_nm.c
parentb40a38ff46c1c6bfd8434ae346b892df3bd07efc (diff)
[OML] more verbose error reporting in case object instance unknown
Diffstat (limited to 'openbsc/src/abis_nm.c')
-rwxr-xr-xopenbsc/src/abis_nm.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/openbsc/src/abis_nm.c b/openbsc/src/abis_nm.c
index 63fda92e0..757bb95f5 100755
--- a/openbsc/src/abis_nm.c
+++ b/openbsc/src/abis_nm.c
@@ -619,20 +619,26 @@ objclass2nmstate(struct gsm_bts *bts, u_int8_t obj_class,
nm_state = &bts->nm_state;
break;
case NM_OC_RADIO_CARRIER:
- if (obj_inst->trx_nr >= bts->num_trx)
+ if (obj_inst->trx_nr >= bts->num_trx) {
+ DEBUGPC(DNM, "TRX %u does not exist ", obj_inst->trx_nr);
return NULL;
+ }
trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
nm_state = &trx->nm_state;
break;
case NM_OC_BASEB_TRANSC:
- if (obj_inst->trx_nr >= bts->num_trx)
+ if (obj_inst->trx_nr >= bts->num_trx) {
+ DEBUGPC(DNM, "TRX %u does not exist ", obj_inst->trx_nr);
return NULL;
+ }
trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
nm_state = &trx->bb_transc.nm_state;
break;
case NM_OC_CHANNEL:
- if (obj_inst->trx_nr > bts->num_trx)
+ if (obj_inst->trx_nr > bts->num_trx) {
+ DEBUGPC(DNM, "TRX %u does not exist ", obj_inst->trx_nr);
return NULL;
+ }
trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
if (obj_inst->ts_nr >= TRX_NR_TS)
return NULL;
@@ -697,20 +703,26 @@ objclass2obj(struct gsm_bts *bts, u_int8_t obj_class,
obj = bts;
break;
case NM_OC_RADIO_CARRIER:
- if (obj_inst->trx_nr >= bts->num_trx)
+ if (obj_inst->trx_nr >= bts->num_trx) {
+ DEBUGPC(DNM, "TRX %u does not exist ", obj_inst->trx_nr);
return NULL;
+ }
trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
obj = trx;
break;
case NM_OC_BASEB_TRANSC:
- if (obj_inst->trx_nr >= bts->num_trx)
+ if (obj_inst->trx_nr >= bts->num_trx) {
+ DEBUGPC(DNM, "TRX %u does not exist ", obj_inst->trx_nr);
return NULL;
+ }
trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
obj = &trx->bb_transc;
break;
case NM_OC_CHANNEL:
- if (obj_inst->trx_nr > bts->num_trx)
+ if (obj_inst->trx_nr > bts->num_trx) {
+ DEBUGPC(DNM, "TRX %u does not exist ", obj_inst->trx_nr);
return NULL;
+ }
trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
if (obj_inst->ts_nr >= TRX_NR_TS)
return NULL;
@@ -744,6 +756,8 @@ static int update_admstate(struct gsm_bts *bts, u_int8_t obj_class,
int rc;
obj = objclass2obj(bts, obj_class, obj_inst);
+ if (!obj)
+ return -EINVAL;
nm_state = objclass2nmstate(bts, obj_class, obj_inst);
if (!nm_state)
return -1;
@@ -773,7 +787,7 @@ static int abis_nm_rx_statechg_rep(struct msgb *mb)
nm_state = objclass2nmstate(bts, foh->obj_class, &foh->obj_inst);
if (!nm_state) {
- DEBUGPC(DNM, "\n");
+ DEBUGPC(DNM, "unknown object class\n");
return -EINVAL;
}