diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-11-15 20:43:02 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-12-21 13:53:41 +0100 |
commit | 39e6ba09c2ef18b6b6cc19ca5a7982325f7c356c (patch) | |
tree | 7638e0b8d96bf00136456cd674d45cde426bcf79 | |
parent | c7a1a1fd2e4d5a25c375b62737272553fc6ae5ff (diff) |
oml: In case we get a NACK, drop the OML connection and hope for the best
Assume that a NACK is a onetime failure and that on the next
attempt it will work better. If that is not the case we might
even send a reboot to the BTS.
-rw-r--r-- | openbsc/src/bsc_init.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/openbsc/src/bsc_init.c b/openbsc/src/bsc_init.c index 7a08e27d4..d3edd9e84 100644 --- a/openbsc/src/bsc_init.c +++ b/openbsc/src/bsc_init.c @@ -33,6 +33,7 @@ #include <openbsc/signal.h> #include <openbsc/chan_alloc.h> #include <osmocore/talloc.h> +#include <openbsc/ipaccess.h> /* global pointer to the gsm network data structure */ extern struct gsm_network *bsc_gsmnet; @@ -565,10 +566,20 @@ static int sw_activ_rep(struct msgb *mb) /* Callback function for NACK on the OML NM */ static int oml_msg_nack(struct nm_nack_signal_data *nack) { + int i; + 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); + } else { + LOGP(DNM, LOGL_ERROR, "Got a NACK going to drop the OML links.\n"); + for (i = 0; i < bsc_gsmnet->num_bts; ++i) { + struct gsm_bts *bts = gsm_bts_num(bsc_gsmnet, i); + if (is_ipaccess_bts(bts)) + ipaccess_drop_oml(bts); + } } return 0; |