diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2012-08-30 16:43:28 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2013-01-28 15:41:27 +0100 |
commit | 3d119f1de474340bdfb98e237735e1a3170252cb (patch) | |
tree | 5c9d4eb2403e0cf1964fcc6c88c7416a4be09dfd /openbsc/src/osmo-bsc | |
parent | e30d40de0e0b9b55c551d87015a791d4a9bc418b (diff) |
bsc: A BTS excluded from the RF lock should be allowed to make a connection
When introducing the exclude for the BTS lock the RF stayed up but
all connections were immediately released. Optionally pass the BTS
as second parameter and check the exclude bit.
Tested-with: rf-lock-exclude/RFLockExcludeTest.st
Diffstat (limited to 'openbsc/src/osmo-bsc')
-rw-r--r-- | openbsc/src/osmo-bsc/osmo_bsc_bssap.c | 2 | ||||
-rw-r--r-- | openbsc/src/osmo-bsc/osmo_bsc_grace.c | 4 | ||||
-rw-r--r-- | openbsc/src/osmo-bsc/osmo_bsc_sccp.c | 5 |
3 files changed, 5 insertions, 6 deletions
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_bssap.c b/openbsc/src/osmo-bsc/osmo_bsc_bssap.c index 6b8504d21..8ea5a65ef 100644 --- a/openbsc/src/osmo-bsc/osmo_bsc_bssap.c +++ b/openbsc/src/osmo-bsc/osmo_bsc_bssap.c @@ -413,7 +413,7 @@ static int bssmap_rcvmsg_udt(struct osmo_msc_data *msc, ret = bssmap_handle_reset_ack(msc, msg, length); break; case BSS_MAP_MSG_PAGING: - if (bsc_grace_allow_new_connection(msc->network)) + if (bsc_grace_allow_new_connection(msc->network, NULL)) ret = bssmap_handle_paging(msc, msg, length); break; } diff --git a/openbsc/src/osmo-bsc/osmo_bsc_grace.c b/openbsc/src/osmo-bsc/osmo_bsc_grace.c index 3f73b5018..ad0a37e9c 100644 --- a/openbsc/src/osmo-bsc/osmo_bsc_grace.c +++ b/openbsc/src/osmo-bsc/osmo_bsc_grace.c @@ -24,10 +24,12 @@ #include <openbsc/gsm_04_80.h> #include <openbsc/signal.h> -int bsc_grace_allow_new_connection(struct gsm_network *network) +int bsc_grace_allow_new_connection(struct gsm_network *network, struct gsm_bts *bts) { if (!network->bsc_data->rf_ctrl) return 1; + if (bts && bts->excl_from_rf_lock) + return 1; return network->bsc_data->rf_ctrl->policy == S_RF_ON; } diff --git a/openbsc/src/osmo-bsc/osmo_bsc_sccp.c b/openbsc/src/osmo-bsc/osmo_bsc_sccp.c index 37eb1b799..3533d6df0 100644 --- a/openbsc/src/osmo-bsc/osmo_bsc_sccp.c +++ b/openbsc/src/osmo-bsc/osmo_bsc_sccp.c @@ -190,12 +190,9 @@ int bsc_queue_for_msc(struct osmo_bsc_sccp_con *conn, struct msgb *msg) int bsc_create_new_connection(struct gsm_subscriber_connection *conn, struct osmo_msc_data *msc) { - struct gsm_network *net; struct osmo_bsc_sccp_con *bsc_con; struct sccp_connection *sccp; - net = conn->bts->network; - /* This should not trigger */ if (!msc->msc_con->is_authenticated) { LOGP(DMSC, LOGL_ERROR, @@ -203,7 +200,7 @@ int bsc_create_new_connection(struct gsm_subscriber_connection *conn, return -1; } - if (!bsc_grace_allow_new_connection(net)) { + if (!bsc_grace_allow_new_connection(conn->bts->network, conn->bts)) { LOGP(DMSC, LOGL_NOTICE, "BSC in grace period. No new connections.\n"); return -1; } |