arehbein has uploaded this change for review.

View Change

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.

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I9f21f1a0a9dab897d4fd89ab6b7341ca4aec8b22
Gerrit-Change-Number: 32073
Gerrit-PatchSet: 1
Gerrit-Owner: arehbein <arehbein@sysmocom.de>
Gerrit-MessageType: newchange