aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bsc
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-07-24 17:13:03 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2018-07-28 12:18:23 +0200
commit8757f42c8ef6c18ebb5884bfd3a44827af894c33 (patch)
tree7fa077bb81504fe6da8059aa96aaa91b6f0d2d91 /src/osmo-bsc
parenta07b6674531d201feeb628f0a51356eac9f11f0f (diff)
cosmetic: dissolve bsc_api.c
gsm0808_page() is just a thin wrapper for rsl_paging_cmd(), the only caller is page_ms() from paging.c. Directly call rsl_paging_cmd() instead. Move gsm0808_cipher_mode() to the only caller in osmo_bsc_bssap.c, make static. Change-Id: Ib7ce026b52d4ba3e53a8b2824e74ea92432c48c5
Diffstat (limited to 'src/osmo-bsc')
-rw-r--r--src/osmo-bsc/Makefile.am1
-rw-r--r--src/osmo-bsc/bsc_api.c75
-rw-r--r--src/osmo-bsc/osmo_bsc_bssap.c28
-rw-r--r--src/osmo-bsc/paging.c2
4 files changed, 29 insertions, 77 deletions
diff --git a/src/osmo-bsc/Makefile.am b/src/osmo-bsc/Makefile.am
index e9add3641..2d479c193 100644
--- a/src/osmo-bsc/Makefile.am
+++ b/src/osmo-bsc/Makefile.am
@@ -35,7 +35,6 @@ osmo_bsc_SOURCES = \
acc_ramp.c \
arfcn_range_encode.c \
assignment_fsm.c \
- bsc_api.c \
bsc_ctrl_commands.c \
bsc_ctrl_lookup.c \
bsc_init.c \
diff --git a/src/osmo-bsc/bsc_api.c b/src/osmo-bsc/bsc_api.c
deleted file mode 100644
index e5424c487..000000000
--- a/src/osmo-bsc/bsc_api.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* GSM 08.08 like API for OpenBSC. The bridge from MSC to BSC */
-
-/* (C) 2010-2011 by Holger Hans Peter Freyther
- * (C) 2010-2011 by On-Waves
- * (C) 2009,2017 by Harald Welte <laforge@gnumonks.org>
- *
- * All Rights Reserved
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <osmocom/bsc/bsc_api.h>
-#include <osmocom/bsc/gsm_data.h>
-#include <osmocom/bsc/signal.h>
-#include <osmocom/bsc/abis_rsl.h>
-#include <osmocom/bsc/chan_alloc.h>
-#include <osmocom/bsc/handover.h>
-#include <osmocom/bsc/debug.h>
-#include <osmocom/bsc/gsm_04_08_rr.h>
-#include <osmocom/bsc/bsc_subscriber.h>
-#include <osmocom/bsc/penalty_timers.h>
-#include <osmocom/bsc/osmo_bsc_sigtran.h>
-#include <osmocom/bsc/bsc_subscr_conn_fsm.h>
-#include <osmocom/bsc/lchan_fsm.h>
-
-#include <osmocom/gsm/protocol/gsm_08_08.h>
-#include <osmocom/gsm/gsm48.h>
-
-#include <osmocom/core/talloc.h>
-
-int gsm0808_page(struct gsm_bts *bts, unsigned int page_group, unsigned int mi_len,
- uint8_t *mi, int chan_type)
-{
- return rsl_paging_cmd(bts, page_group, mi_len, mi, chan_type, false);
-}
-
-/*! \brief We received a GSM 08.08 CIPHER MODE from the MSC */
-int gsm0808_cipher_mode(struct gsm_subscriber_connection *conn, int cipher,
- const uint8_t *key, int len, int include_imeisv)
-{
- if (cipher > 0 && key == NULL) {
- LOGP(DRSL, LOGL_ERROR, "%s: Need to have an encryption key.\n",
- bsc_subscr_name(conn->bsub));
- return -1;
- }
-
- if (len > MAX_A5_KEY_LEN) {
- LOGP(DRSL, LOGL_ERROR, "%s: The key is too long: %d\n",
- bsc_subscr_name(conn->bsub), len);
- return -1;
- }
-
- LOGP(DRSL, LOGL_DEBUG, "(subscr %s) Cipher Mode: cipher=%d key=%s include_imeisv=%d\n",
- bsc_subscr_name(conn->bsub), cipher, osmo_hexdump_nospc(key, len), include_imeisv);
-
- conn->lchan->encr.alg_id = RSL_ENC_ALG_A5(cipher);
- if (key) {
- conn->lchan->encr.key_len = len;
- memcpy(conn->lchan->encr.key, key, len);
- }
-
- return gsm48_send_rr_ciph_mode(conn->lchan, include_imeisv);
-}
diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c
index c6fbe23c8..95bad7b16 100644
--- a/src/osmo-bsc/osmo_bsc_bssap.c
+++ b/src/osmo-bsc/osmo_bsc_bssap.c
@@ -386,6 +386,34 @@ static int select_best_cipher(uint8_t msc_mask, uint8_t bsc_mask)
return -1;
}
+/*! We received a GSM 08.08 CIPHER MODE from the MSC */
+static int gsm0808_cipher_mode(struct gsm_subscriber_connection *conn, int cipher,
+ const uint8_t *key, int len, int include_imeisv)
+{
+ if (cipher > 0 && key == NULL) {
+ LOGP(DRSL, LOGL_ERROR, "%s: Need to have an encryption key.\n",
+ bsc_subscr_name(conn->bsub));
+ return -1;
+ }
+
+ if (len > MAX_A5_KEY_LEN) {
+ LOGP(DRSL, LOGL_ERROR, "%s: The key is too long: %d\n",
+ bsc_subscr_name(conn->bsub), len);
+ return -1;
+ }
+
+ LOGP(DRSL, LOGL_DEBUG, "(subscr %s) Cipher Mode: cipher=%d key=%s include_imeisv=%d\n",
+ bsc_subscr_name(conn->bsub), cipher, osmo_hexdump_nospc(key, len), include_imeisv);
+
+ conn->lchan->encr.alg_id = RSL_ENC_ALG_A5(cipher);
+ if (key) {
+ conn->lchan->encr.key_len = len;
+ memcpy(conn->lchan->encr.key, key, len);
+ }
+
+ return gsm48_send_rr_ciph_mode(conn->lchan, include_imeisv);
+}
+
/*
* GSM 08.08 ยง 3.4.7 cipher mode handling. We will have to pick
* the cipher to be used for this. In case we are already using
diff --git a/src/osmo-bsc/paging.c b/src/osmo-bsc/paging.c
index bc1927ec4..0ef89c1cd 100644
--- a/src/osmo-bsc/paging.c
+++ b/src/osmo-bsc/paging.c
@@ -96,7 +96,7 @@ static void page_ms(struct gsm_paging_request *request)
page_group = gsm0502_calc_paging_group(&bts->si_common.chan_desc,
str_to_imsi(request->bsub->imsi));
- gsm0808_page(bts, page_group, mi_len, mi, request->chan_type);
+ rsl_paging_cmd(bts, page_group, mi_len, mi, request->chan_type, false);
log_set_context(LOG_CTX_BSC_SUBSCR, NULL);
}