aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-07-14 02:08:35 +0800
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-07-14 02:08:35 +0800
commit6d2b66e89a9513c206ec76274f148cf65b06996d (patch)
treec20a739f8ae3b3bc885c3d419993969bf7dd7ae3 /openbsc/src
parent4f448c97ebc8dae095e109965ec038601125a7c8 (diff)
abis_nm: Create a signal data structure for the NACK message
Provide the message type and the msgb of the NACK message.
Diffstat (limited to 'openbsc/src')
-rw-r--r--openbsc/src/abis_nm.c5
-rw-r--r--openbsc/src/bsc_init.c9
2 files changed, 9 insertions, 5 deletions
diff --git a/openbsc/src/abis_nm.c b/openbsc/src/abis_nm.c
index 848755625..6f112e189 100644
--- a/openbsc/src/abis_nm.c
+++ b/openbsc/src/abis_nm.c
@@ -966,6 +966,7 @@ static int abis_nm_rcvmsg_fom(struct msgb *mb)
return abis_nm_rcvmsg_sw(mb);
if (is_in_arr(mt, nacks, ARRAY_SIZE(nacks))) {
+ struct nm_nack_signal_data nack_data;
struct tlv_parsed tp;
debugp_foh(foh);
@@ -979,7 +980,9 @@ static int abis_nm_rcvmsg_fom(struct msgb *mb)
else
DEBUGPC(DNM, "\n");
- dispatch_signal(SS_NM, S_NM_NACK, (void*) &mt);
+ nack_data.msg = mb;
+ nack_data.mt = mt;
+ dispatch_signal(SS_NM, S_NM_NACK, &nack_data);
return 0;
}
#if 0
diff --git a/openbsc/src/bsc_init.c b/openbsc/src/bsc_init.c
index 5f3707381..ce668086d 100644
--- a/openbsc/src/bsc_init.c
+++ b/openbsc/src/bsc_init.c
@@ -563,9 +563,9 @@ static int sw_activ_rep(struct msgb *mb)
}
/* Callback function for NACK on the OML NM */
-static int oml_msg_nack(u_int8_t mt)
+static int oml_msg_nack(struct nm_nack_signal_data *nack)
{
- if (mt == NM_MT_SET_BTS_ATTR_NACK) {
+ if (nack->mt == NM_MT_SET_BTS_ATTR_NACK) {
LOGP(DNM, LOGL_FATAL, "Failed to set BTS attributes. That is fatal. "
"Was the bts type and frequency properly specified?\n");
exit(-1);
@@ -578,14 +578,15 @@ static int oml_msg_nack(u_int8_t mt)
static int nm_sig_cb(unsigned int subsys, unsigned int signal,
void *handler_data, void *signal_data)
{
+ struct nm_nack_signal_data *nack;
u_int8_t *msg_type;
switch (signal) {
case S_NM_SW_ACTIV_REP:
return sw_activ_rep(signal_data);
case S_NM_NACK:
- msg_type = signal_data;
- return oml_msg_nack(*msg_type);
+ nack = signal_data;
+ return oml_msg_nack(nack);
default:
break;
}