arehbein has uploaded this change for review.
gsm_objclass2mo(): First check if TRX number is valid
This is the first step in fixing the error handling w.r.t. NACK messages. The next step will be to have the function to receive an additional out-parameter that contains the cause of error if this function fails.
Related: OS#5961
Related: OS#5967
Change-Id: I9f21f1a0a9dab897d4fd89ab6b7341ca4aec8b22
---
M src/common/oml.c
1 file changed, 26 insertions(+), 13 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/73/32073/1
diff --git a/src/common/oml.c b/src/common/oml.c
index 724e4f8..ff3d0e9 100644
--- a/src/common/oml.c
+++ b/src/common/oml.c
@@ -1614,30 +1614,30 @@
{
struct gsm_bts_trx *trx;
struct gsm_abis_mo *mo = NULL;
-
+ /* Handle finding TRX number first */
+ switch (obj_class) {
+ case NM_OC_RADIO_CARRIER:
+ case NM_OC_BASEB_TRANSC:
+ case NM_OC_CHANNEL:
+ case NM_OC_GPRS_NSVC:
+ if (obj_inst->trx_nr >= bts->num_trx)
+ return NULL;
+ if (!(trx = gsm_bts_trx_num(bts, obj_inst->trx_nr)))
+ return NULL;
+ break;
+ }
+ /* Other cases, set mo */
switch (obj_class) {
case NM_OC_BTS:
mo = &bts->mo;
break;
case NM_OC_RADIO_CARRIER:
- if (obj_inst->trx_nr >= bts->num_trx) {
- return NULL;
- }
- trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
mo = &trx->mo;
break;
case NM_OC_BASEB_TRANSC:
- if (obj_inst->trx_nr >= bts->num_trx) {
- return NULL;
- }
- trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
mo = &trx->bb_transc.mo;
break;
case NM_OC_CHANNEL:
- if (obj_inst->trx_nr >= bts->num_trx) {
- return NULL;
- }
- trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
if (obj_inst->ts_nr >= TRX_NR_TS)
return NULL;
mo = &trx->ts[obj_inst->ts_nr].mo;
To view, visit change 32073. To unsubscribe, or for help writing mail filters, visit settings.