aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openbsc/include/openbsc/signal.h1
-rw-r--r--openbsc/src/libbsc/abis_nm.c1
-rw-r--r--openbsc/src/libbsc/bsc_init.c12
3 files changed, 7 insertions, 7 deletions
diff --git a/openbsc/include/openbsc/signal.h b/openbsc/include/openbsc/signal.h
index fa38bbe03..598d470f5 100644
--- a/openbsc/include/openbsc/signal.h
+++ b/openbsc/include/openbsc/signal.h
@@ -185,6 +185,7 @@ struct nm_om2k_signal_data {
struct nm_nack_signal_data {
struct msgb *msg;
+ struct gsm_bts *bts;
uint8_t mt;
};
diff --git a/openbsc/src/libbsc/abis_nm.c b/openbsc/src/libbsc/abis_nm.c
index 4fd11c703..e95c0a905 100644
--- a/openbsc/src/libbsc/abis_nm.c
+++ b/openbsc/src/libbsc/abis_nm.c
@@ -548,6 +548,7 @@ static int abis_nm_rcvmsg_fom(struct msgb *mb)
nack_data.msg = mb;
nack_data.mt = mt;
+ nack_data.bts = sign_link->trx->bts;
osmo_signal_dispatch(SS_NM, S_NM_NACK, &nack_data);
abis_nm_queue_send_next(sign_link->trx->bts);
return 0;
diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c
index f5d7969ef..9e734c049 100644
--- a/openbsc/src/libbsc/bsc_init.c
+++ b/openbsc/src/libbsc/bsc_init.c
@@ -43,8 +43,6 @@ extern int hsl_setup(struct gsm_network *gsmnet);
/* Callback function for NACK on the OML NM */
static int oml_msg_nack(struct nm_nack_signal_data *nack)
{
- struct gsm_bts *bts;
-
if (nack->mt == NM_MT_SET_BTS_ATTR_NACK) {
LOGP(DNM, LOGL_ERROR, "Failed to set BTS attributes. That is fatal. "
@@ -58,13 +56,13 @@ static int oml_msg_nack(struct nm_nack_signal_data *nack)
return 0;
drop_bts:
- if (!nack->msg || !nack->msg->trx)
+ if (!nack->bts) {
+ LOGP(DNM, LOGL_ERROR, "Unknown bts. Can not drop it.\n");
return 0;
+ }
- bts = nack->msg->trx->bts;
-
- if (is_ipaccess_bts(bts))
- ipaccess_drop_oml(bts);
+ if (is_ipaccess_bts(nack->bts))
+ ipaccess_drop_oml(nack->bts);
return 0;
}