aboutsummaryrefslogtreecommitdiffstats
path: root/src/common/oml.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2012-03-18 21:25:45 +0100
committerHarald Welte <laforge@gnumonks.org>2012-03-18 21:25:45 +0100
commit452112e82391df347823175df86ca8fcc922ef3c (patch)
tree4cb8a6106556f4c79a5e0542629b2a6cd6134833 /src/common/oml.c
parentd0e67493276b4e14007d359a5dd866e49a137574 (diff)
Ensure that ADM_STATE IE is presnent when sending NM_MT_CHG_ADM_STATE_ACK
Diffstat (limited to 'src/common/oml.c')
-rw-r--r--src/common/oml.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/common/oml.c b/src/common/oml.c
index c7591d76..37fb4bda 100644
--- a/src/common/oml.c
+++ b/src/common/oml.c
@@ -274,6 +274,19 @@ int oml_mo_fom_ack_nack(struct gsm_abis_mo *mo, uint8_t orig_msg_type,
return oml_mo_send_msg(mo, msg, new_msg_type);
}
+int oml_mo_statechg_ack(struct gsm_abis_mo *mo)
+{
+ struct msgb *msg;
+
+ msg = oml_msgb_alloc();
+ if (!msg)
+ return -ENOMEM;
+
+ msgb_tv_put(msg, NM_ATT_ADM_STATE, mo->nm_state.administrative);
+
+ return oml_mo_send_msg(mo, msg, NM_MT_CHG_ADM_STATE_ACK);
+}
+
int oml_mo_opstart_ack(struct gsm_abis_mo *mo)
{
return oml_mo_fom_ack_nack(mo, NM_MT_OPSTART, 0);
@@ -712,7 +725,7 @@ static int oml_rx_chg_adm_state(struct gsm_bts *bts, struct msgb *msg)
if (mo->nm_state.administrative == adm_state) {
DEBUGP(DOML, "... automatic ACK, ADM state already was %s\n",
get_value_string(abis_nm_adm_state_names, adm_state));
- return oml_fom_ack_nack(msg, 0);
+ return oml_mo_statechg_ack(mo);
}
/* Step 3: Ask BTS driver to apply the state chg */