<p>Neels Hofmeyr <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/10146">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Jenkins Builder: Verified
Harald Welte: Looks good to me, approved
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">cosmetic: dissolve bsc_api.c<br><br>gsm0808_page() is just a thin wrapper for rsl_paging_cmd(), the only caller is<br>page_ms() from paging.c. Directly call rsl_paging_cmd() instead.<br><br>Move gsm0808_cipher_mode() to the only caller in osmo_bsc_bssap.c, make static.<br><br>Change-Id: Ib7ce026b52d4ba3e53a8b2824e74ea92432c48c5<br>---<br>M include/osmocom/bsc/bsc_api.h<br>M src/osmo-bsc/Makefile.am<br>D src/osmo-bsc/bsc_api.c<br>M src/osmo-bsc/osmo_bsc_bssap.c<br>M src/osmo-bsc/paging.c<br>M tests/handover/Makefile.am<br>6 files changed, 29 insertions(+), 82 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/bsc/bsc_api.h b/include/osmocom/bsc/bsc_api.h</span><br><span>index bc6c676..dcfcc45 100644</span><br><span>--- a/include/osmocom/bsc/bsc_api.h</span><br><span>+++ b/include/osmocom/bsc/bsc_api.h</span><br><span>@@ -20,10 +20,6 @@</span><br><span> int gsm0808_submit_dtap(struct gsm_subscriber_connection *conn, struct msgb *msg, uint8_t link_id,</span><br><span> bool allow_sacch);</span><br><span> int gsm0808_assign_req(struct gsm_subscriber_connection *conn, int chan_mode, int full_rate);</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm0808_cipher_mode(struct gsm_subscriber_connection *conn, int cipher,</span><br><span style="color: hsl(0, 100%, 40%);">- const uint8_t *key, int len, int include_imeisv);</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm0808_page(struct gsm_bts *bts, unsigned int page_group,</span><br><span style="color: hsl(0, 100%, 40%);">- unsigned int mi_len, uint8_t *mi, int chan_type);</span><br><span> int gsm0808_clear(struct gsm_subscriber_connection *conn);</span><br><span> </span><br><span> bool msc_connected(struct gsm_subscriber_connection *conn);</span><br><span>diff --git a/src/osmo-bsc/Makefile.am b/src/osmo-bsc/Makefile.am</span><br><span>index e9add36..2d479c1 100644</span><br><span>--- a/src/osmo-bsc/Makefile.am</span><br><span>+++ b/src/osmo-bsc/Makefile.am</span><br><span>@@ -35,7 +35,6 @@</span><br><span> acc_ramp.c \</span><br><span> arfcn_range_encode.c \</span><br><span> assignment_fsm.c \</span><br><span style="color: hsl(0, 100%, 40%);">- bsc_api.c \</span><br><span> bsc_ctrl_commands.c \</span><br><span> bsc_ctrl_lookup.c \</span><br><span> bsc_init.c \</span><br><span>diff --git a/src/osmo-bsc/bsc_api.c b/src/osmo-bsc/bsc_api.c</span><br><span>deleted file mode 100644</span><br><span>index e5424c4..0000000</span><br><span>--- a/src/osmo-bsc/bsc_api.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,75 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/* GSM 08.08 like API for OpenBSC. The bridge from MSC to BSC */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* (C) 2010-2011 by Holger Hans Peter Freyther</span><br><span style="color: hsl(0, 100%, 40%);">- * (C) 2010-2011 by On-Waves</span><br><span style="color: hsl(0, 100%, 40%);">- * (C) 2009,2017 by Harald Welte <laforge@gnumonks.org></span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * All Rights Reserved</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(0, 100%, 40%);">- * it under the terms of the GNU Affero General Public License as published by</span><br><span style="color: hsl(0, 100%, 40%);">- * the Free Software Foundation; either version 3 of the License, or</span><br><span style="color: hsl(0, 100%, 40%);">- * (at your option) any later version.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(0, 100%, 40%);">- * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(0, 100%, 40%);">- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span><br><span style="color: hsl(0, 100%, 40%);">- * GNU Affero General Public License for more details.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * You should have received a copy of the GNU Affero General Public License</span><br><span style="color: hsl(0, 100%, 40%);">- * along with this program. If not, see <http://www.gnu.org/licenses/>.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/bsc_api.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/gsm_data.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/signal.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/abis_rsl.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/chan_alloc.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/handover.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/debug.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/gsm_04_08_rr.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/bsc_subscriber.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/penalty_timers.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/osmo_bsc_sigtran.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/bsc_subscr_conn_fsm.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/lchan_fsm.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/gsm/protocol/gsm_08_08.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/gsm/gsm48.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/core/talloc.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm0808_page(struct gsm_bts *bts, unsigned int page_group, unsigned int mi_len,</span><br><span style="color: hsl(0, 100%, 40%);">- uint8_t *mi, int chan_type)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- return rsl_paging_cmd(bts, page_group, mi_len, mi, chan_type, false);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief We received a GSM 08.08 CIPHER MODE from the MSC */</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm0808_cipher_mode(struct gsm_subscriber_connection *conn, int cipher,</span><br><span style="color: hsl(0, 100%, 40%);">- const uint8_t *key, int len, int include_imeisv)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- if (cipher > 0 && key == NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DRSL, LOGL_ERROR, "%s: Need to have an encryption key.\n",</span><br><span style="color: hsl(0, 100%, 40%);">- bsc_subscr_name(conn->bsub));</span><br><span style="color: hsl(0, 100%, 40%);">- return -1;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (len > MAX_A5_KEY_LEN) {</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DRSL, LOGL_ERROR, "%s: The key is too long: %d\n",</span><br><span style="color: hsl(0, 100%, 40%);">- bsc_subscr_name(conn->bsub), len);</span><br><span style="color: hsl(0, 100%, 40%);">- return -1;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DRSL, LOGL_DEBUG, "(subscr %s) Cipher Mode: cipher=%d key=%s include_imeisv=%d\n",</span><br><span style="color: hsl(0, 100%, 40%);">- bsc_subscr_name(conn->bsub), cipher, osmo_hexdump_nospc(key, len), include_imeisv);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- conn->lchan->encr.alg_id = RSL_ENC_ALG_A5(cipher);</span><br><span style="color: hsl(0, 100%, 40%);">- if (key) {</span><br><span style="color: hsl(0, 100%, 40%);">- conn->lchan->encr.key_len = len;</span><br><span style="color: hsl(0, 100%, 40%);">- memcpy(conn->lchan->encr.key, key, len);</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- return gsm48_send_rr_ciph_mode(conn->lchan, include_imeisv);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c</span><br><span>index c6fbe23..95bad7b 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_bssap.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_bssap.c</span><br><span>@@ -386,6 +386,34 @@</span><br><span> return -1;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! We received a GSM 08.08 CIPHER MODE from the MSC */</span><br><span style="color: hsl(120, 100%, 40%);">+static int gsm0808_cipher_mode(struct gsm_subscriber_connection *conn, int cipher,</span><br><span style="color: hsl(120, 100%, 40%);">+ const uint8_t *key, int len, int include_imeisv)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ if (cipher > 0 && key == NULL) {</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DRSL, LOGL_ERROR, "%s: Need to have an encryption key.\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ bsc_subscr_name(conn->bsub));</span><br><span style="color: hsl(120, 100%, 40%);">+ return -1;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if (len > MAX_A5_KEY_LEN) {</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DRSL, LOGL_ERROR, "%s: The key is too long: %d\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ bsc_subscr_name(conn->bsub), len);</span><br><span style="color: hsl(120, 100%, 40%);">+ return -1;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DRSL, LOGL_DEBUG, "(subscr %s) Cipher Mode: cipher=%d key=%s include_imeisv=%d\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ bsc_subscr_name(conn->bsub), cipher, osmo_hexdump_nospc(key, len), include_imeisv);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ conn->lchan->encr.alg_id = RSL_ENC_ALG_A5(cipher);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (key) {</span><br><span style="color: hsl(120, 100%, 40%);">+ conn->lchan->encr.key_len = len;</span><br><span style="color: hsl(120, 100%, 40%);">+ memcpy(conn->lchan->encr.key, key, len);</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ return gsm48_send_rr_ciph_mode(conn->lchan, include_imeisv);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*</span><br><span> * GSM 08.08 ยง 3.4.7 cipher mode handling. We will have to pick</span><br><span> * the cipher to be used for this. In case we are already using</span><br><span>diff --git a/src/osmo-bsc/paging.c b/src/osmo-bsc/paging.c</span><br><span>index bc1927e..0ef89c1 100644</span><br><span>--- a/src/osmo-bsc/paging.c</span><br><span>+++ b/src/osmo-bsc/paging.c</span><br><span>@@ -96,7 +96,7 @@</span><br><span> </span><br><span> page_group = gsm0502_calc_paging_group(&bts->si_common.chan_desc,</span><br><span> str_to_imsi(request->bsub->imsi));</span><br><span style="color: hsl(0, 100%, 40%);">- gsm0808_page(bts, page_group, mi_len, mi, request->chan_type);</span><br><span style="color: hsl(120, 100%, 40%);">+ rsl_paging_cmd(bts, page_group, mi_len, mi, request->chan_type, false);</span><br><span> log_set_context(LOG_CTX_BSC_SUBSCR, NULL);</span><br><span> }</span><br><span> </span><br><span>diff --git a/tests/handover/Makefile.am b/tests/handover/Makefile.am</span><br><span>index 3ce870b..5e9af04 100644</span><br><span>--- a/tests/handover/Makefile.am</span><br><span>+++ b/tests/handover/Makefile.am</span><br><span>@@ -43,7 +43,6 @@</span><br><span> $(top_builddir)/src/osmo-bsc/abis_rsl.o \</span><br><span> $(top_builddir)/src/osmo-bsc/arfcn_range_encode.o \</span><br><span> $(top_builddir)/src/osmo-bsc/assignment_fsm.o \</span><br><span style="color: hsl(0, 100%, 40%);">- $(top_builddir)/src/osmo-bsc/bsc_api.o \</span><br><span> $(top_builddir)/src/osmo-bsc/bsc_init.o \</span><br><span> $(top_builddir)/src/osmo-bsc/bsc_rll.o \</span><br><span> $(top_builddir)/src/osmo-bsc/bsc_subscr_conn_fsm.o \</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/10146">change 10146</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/10146"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: Ib7ce026b52d4ba3e53a8b2824e74ea92432c48c5 </div>
<div style="display:none"> Gerrit-Change-Number: 10146 </div>
<div style="display:none"> Gerrit-PatchSet: 6 </div>
<div style="display:none"> Gerrit-Owner: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>