<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>