<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/25709">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  osmith: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Get rid of lots of stubs [4/4]<br><br>These are not needed anymore since we re-introduced libbsc, specially to<br>avoid all this churn.<br><br>Some specific methods are explicitly required to be overwritten by<br>tests, so we specificially mark those with __attribute__((weak)) in<br>order to be able to overwrite them.<br><br>This is the last step towards fixing interdependency mess of symbols and<br>stubs, and requires previous patches in order to have tests apssing<br>fine.<br><br>Change-Id: Ic7401b8a6eb903882e30fda1cf091ac99a254ef0<br>---<br>M src/ipaccess/ipaccess-config.c<br>M src/ipaccess/ipaccess-proxy.c<br>M src/ipaccess/stubs.c<br>M src/osmo-bsc/abis_rsl.c<br>M src/osmo-bsc/osmo_bsc_sigtran.c<br>M src/osmo-bsc/pcu_sock.c<br>M src/utils/bs11_config.c<br>M src/utils/meas_json.c<br>M tests/abis/abis_test.c<br>M tests/acc/acc_test.c<br>M tests/bsc/bsc_test.c<br>M tests/gsm0408/gsm0408_test.c<br>M tests/handover/handover_test.c<br>M tests/nanobts_omlattr/nanobts_omlattr_test.c<br>14 files changed, 23 insertions(+), 284 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/ipaccess/ipaccess-config.c b/src/ipaccess/ipaccess-config.c</span><br><span>index 741a97e..ada23ea 100644</span><br><span>--- a/src/ipaccess/ipaccess-config.c</span><br><span>+++ b/src/ipaccess/ipaccess-config.c</span><br><span>@@ -1129,15 +1129,3 @@</span><br><span> </span><br><span>  exit(0);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* Stub */</span><br><span style="color: hsl(0, 100%, 40%);">-int osmo_bsc_sigtran_send(struct gsm_subscriber_connection *conn, struct msgb *msg)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int osmo_bsc_sigtran_open_conn(struct gsm_subscriber_connection *conn, struct msgb *msg)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_chan_ms_power_ctrl(struct gsm_lchan *lchan) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-void pcu_info_update(struct gsm_bts *bts) {};</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type, const uint8_t *data, int len) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm_generate_si(struct gsm_bts *bts, enum osmo_sysinfo_type si_type) { return 0; }</span><br><span>diff --git a/src/ipaccess/ipaccess-proxy.c b/src/ipaccess/ipaccess-proxy.c</span><br><span>index d676038..7ede283 100644</span><br><span>--- a/src/ipaccess/ipaccess-proxy.c</span><br><span>+++ b/src/ipaccess/ipaccess-proxy.c</span><br><span>@@ -1253,11 +1253,3 @@</span><br><span>                osmo_select_main(0);</span><br><span>         }</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* Stub */</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_chan_ms_power_ctrl(struct gsm_lchan *lchan) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-void pcu_info_update(struct gsm_bts *bts) {};</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type, const uint8_t *data, int len) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm_generate_si(struct gsm_bts *bts, enum osmo_sysinfo_type si_type) { return 0; }</span><br><span>diff --git a/src/ipaccess/stubs.c b/src/ipaccess/stubs.c</span><br><span>index cb56105..60fa626 100644</span><br><span>--- a/src/ipaccess/stubs.c</span><br><span>+++ b/src/ipaccess/stubs.c</span><br><span>@@ -30,17 +30,3 @@</span><br><span>    /* No TS init required here. */</span><br><span>      return true;</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int abis_rsl_rcvmsg(struct msgb *msg)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- /* No RSL handling here */</span><br><span style="color: hsl(0, 100%, 40%);">-      return 0;</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%);">-void paging_flush_bts(struct gsm_bts *bts, struct bsc_msc_data *msc)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- /* No paging flushing */</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%);">-void ts_fsm_alloc(struct gsm_bts_trx_ts *ts)</span><br><span style="color: hsl(0, 100%, 40%);">-{}</span><br><span>diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c</span><br><span>index a7b267d..1d71c83 100644</span><br><span>--- a/src/osmo-bsc/abis_rsl.c</span><br><span>+++ b/src/osmo-bsc/abis_rsl.c</span><br><span>@@ -260,7 +260,9 @@</span><br><span> }</span><br><span> </span><br><span> /* Send a BCCH_INFO message as per Chapter 8.5.1 */</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len)</span><br><span style="color: hsl(120, 100%, 40%);">+/* Allow test to overwrite it */</span><br><span style="color: hsl(120, 100%, 40%);">+__attribute__((weak)) int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type,</span><br><span style="color: hsl(120, 100%, 40%);">+                                        const uint8_t *data, int len)</span><br><span> {</span><br><span>   struct abis_rsl_dchan_hdr *dh;</span><br><span>       const struct gsm_bts *bts = trx->bts;</span><br><span>@@ -294,7 +296,8 @@</span><br><span>       return abis_rsl_sendmsg(msg);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type,</span><br><span style="color: hsl(120, 100%, 40%);">+/* Allow test to overwrite it */</span><br><span style="color: hsl(120, 100%, 40%);">+__attribute__((weak)) int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type,</span><br><span>                   const uint8_t *data, int len)</span><br><span> {</span><br><span>     struct abis_rsl_common_hdr *ch;</span><br><span>diff --git a/src/osmo-bsc/osmo_bsc_sigtran.c b/src/osmo-bsc/osmo_bsc_sigtran.c</span><br><span>index d3c636d..04c2e99 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_sigtran.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_sigtran.c</span><br><span>@@ -312,7 +312,8 @@</span><br><span> }</span><br><span> </span><br><span> /* Open a new connection oriented sigtran connection */</span><br><span style="color: hsl(0, 100%, 40%);">-int osmo_bsc_sigtran_open_conn(struct gsm_subscriber_connection *conn, struct msgb *msg)</span><br><span style="color: hsl(120, 100%, 40%);">+/* Allow test to overwrite it */</span><br><span style="color: hsl(120, 100%, 40%);">+__attribute__((weak)) int osmo_bsc_sigtran_open_conn(struct gsm_subscriber_connection *conn, struct msgb *msg)</span><br><span> {</span><br><span>    struct osmo_ss7_instance *ss7;</span><br><span>       struct bsc_msc_data *msc;</span><br><span>diff --git a/src/osmo-bsc/pcu_sock.c b/src/osmo-bsc/pcu_sock.c</span><br><span>index 329bab0..6f7ee77 100644</span><br><span>--- a/src/osmo-bsc/pcu_sock.c</span><br><span>+++ b/src/osmo-bsc/pcu_sock.c</span><br><span>@@ -263,7 +263,8 @@</span><br><span>     return pcu_sock_send(bts, msg);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void pcu_info_update(struct gsm_bts *bts)</span><br><span style="color: hsl(120, 100%, 40%);">+/* Allow test to overwrite it */</span><br><span style="color: hsl(120, 100%, 40%);">+__attribute__((weak)) void pcu_info_update(struct gsm_bts *bts)</span><br><span> {</span><br><span>    if (pcu_connected(bts))</span><br><span>              pcu_tx_info_ind(bts);</span><br><span>diff --git a/src/utils/bs11_config.c b/src/utils/bs11_config.c</span><br><span>index c279179..e795076 100644</span><br><span>--- a/src/utils/bs11_config.c</span><br><span>+++ b/src/utils/bs11_config.c</span><br><span>@@ -974,24 +974,3 @@</span><br><span> </span><br><span>    exit(0);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* Stub */</span><br><span style="color: hsl(0, 100%, 40%);">-int osmo_bsc_sigtran_send(struct gsm_subscriber_connection *conn, struct msgb *msg)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-     return 0;</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%);">-/* Stub */</span><br><span style="color: hsl(0, 100%, 40%);">-int osmo_bsc_sigtran_open_conn(struct gsm_subscriber_connection *conn, struct msgb *msg)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-   return 0;</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%);">-void ts_fsm_alloc(struct gsm_bts_trx_ts *ts) {}</span><br><span style="color: hsl(0, 100%, 40%);">-int abis_rsl_rcvmsg(struct msgb *msg) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_chan_ms_power_ctrl(struct gsm_lchan *lchan) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-void pcu_info_update(struct gsm_bts *bts) {};</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type, const uint8_t *data, int len) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm_generate_si(struct gsm_bts *bts, enum osmo_sysinfo_type si_type) { return 0; }</span><br><span>diff --git a/src/utils/meas_json.c b/src/utils/meas_json.c</span><br><span>index 82b1e57..00b90e8 100644</span><br><span>--- a/src/utils/meas_json.c</span><br><span>+++ b/src/utils/meas_json.c</span><br><span>@@ -201,12 +201,3 @@</span><br><span> </span><br><span>      exit(0);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void ts_fsm_alloc(struct gsm_bts_trx_ts *ts) {}</span><br><span style="color: hsl(0, 100%, 40%);">-int abis_rsl_rcvmsg(struct msgb *msg) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_chan_ms_power_ctrl(struct gsm_lchan *lchan) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-void pcu_info_update(struct gsm_bts *bts) {};</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type, const uint8_t *data, int len) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm_generate_si(struct gsm_bts *bts, enum osmo_sysinfo_type si_type) { return 0; }</span><br><span>diff --git a/tests/abis/abis_test.c b/tests/abis/abis_test.c</span><br><span>index 9d26edd..a48154b 100644</span><br><span>--- a/tests/abis/abis_test.c</span><br><span>+++ b/tests/abis/abis_test.c</span><br><span>@@ -183,16 +183,3 @@</span><br><span> </span><br><span>       return EXIT_SUCCESS;</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-struct gsm_subscriber_connection *bsc_subscr_con_allocate(struct gsm_network *net) {</span><br><span style="color: hsl(0, 100%, 40%);">-   OSMO_ASSERT(0);</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%);">-bool on_gsm_ts_init(struct gsm_bts_trx_ts *ts) { return true; }</span><br><span style="color: hsl(0, 100%, 40%);">-void ts_fsm_alloc(struct gsm_bts_trx_ts *ts) {}</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_chan_ms_power_ctrl(struct gsm_lchan *lchan) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-void pcu_info_update(struct gsm_bts *bts) {};</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type, const uint8_t *data, int len) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm_generate_si(struct gsm_bts *bts, enum osmo_sysinfo_type si_type) { return 0; }</span><br><span>diff --git a/tests/acc/acc_test.c b/tests/acc/acc_test.c</span><br><span>index 759ff13..6357d4b 100644</span><br><span>--- a/tests/acc/acc_test.c</span><br><span>+++ b/tests/acc/acc_test.c</span><br><span>@@ -524,8 +524,8 @@</span><br><span>     return EXIT_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Whenever ACC code changes the set of barred ACCs, gsm_bts_set_system_infos()</span><br><span style="color: hsl(0, 100%, 40%);">- * is called which ends up calling pcu_info_update */</span><br><span style="color: hsl(120, 100%, 40%);">+/* stub: Whenever ACC code changes the set of barred ACCs, gsm_bts_set_system_infos()</span><br><span style="color: hsl(120, 100%, 40%);">+ * is called which ends up calling pcu_info_update. */</span><br><span> void pcu_info_update(struct gsm_bts *bts) {</span><br><span>      struct gsm48_rach_control rach_control = {0};</span><br><span> </span><br><span>@@ -545,15 +545,15 @@</span><br><span>    );</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-struct gsm_subscriber_connection *bsc_subscr_con_allocate(struct gsm_network *net) {</span><br><span style="color: hsl(0, 100%, 40%);">- OSMO_ASSERT(0);</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%);">-bool on_gsm_ts_init(struct gsm_bts_trx_ts *ts) { return true; }</span><br><span style="color: hsl(0, 100%, 40%);">-void ts_fsm_alloc(struct gsm_bts_trx_ts *ts) {}</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_chan_ms_power_ctrl(struct gsm_lchan *lchan) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type, const uint8_t *data, int len) { return 0; }</span><br><span style="color: hsl(120, 100%, 40%);">+/* stub: Whenever ACC code changes the set of barred ACCs, gsm_bts_set_system_infos()</span><br><span style="color: hsl(120, 100%, 40%);">+ * is called which ends up calling rsl_bcch_info. We need to return success to</span><br><span style="color: hsl(120, 100%, 40%);">+ * have pcu_info_update() called. */</span><br><span> int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len)</span><br><span> { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm_generate_si(struct gsm_bts *bts, enum osmo_sysinfo_type si_type) { return 0; }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* stub: Whenever ACC code changes the set of barred ACCs, gsm_bts_set_system_infos()</span><br><span style="color: hsl(120, 100%, 40%);">+ * is called which ends up calling rsl_sacch_filling. We need to return success to</span><br><span style="color: hsl(120, 100%, 40%);">+ * have pcu_info_update() called. */</span><br><span style="color: hsl(120, 100%, 40%);">+int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type,</span><br><span style="color: hsl(120, 100%, 40%);">+                      const uint8_t *data, int len)</span><br><span style="color: hsl(120, 100%, 40%);">+{ return 0; }</span><br><span>diff --git a/tests/bsc/bsc_test.c b/tests/bsc/bsc_test.c</span><br><span>index 0cf0bc2..4a97b9f 100644</span><br><span>--- a/tests/bsc/bsc_test.c</span><br><span>+++ b/tests/bsc/bsc_test.c</span><br><span>@@ -221,30 +221,3 @@</span><br><span>       talloc_free(ctx);</span><br><span>    return 0;</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-struct gsm_subscriber_connection *bsc_subscr_con_allocate(struct gsm_network *net) {</span><br><span style="color: hsl(0, 100%, 40%);">-      OSMO_ASSERT(0);</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%);">-void bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, uint8_t dlci, enum gsm0808_cause cause) {}</span><br><span style="color: hsl(0, 100%, 40%);">-void bsc_cipher_mode_compl(struct gsm_subscriber_connection *conn, struct msgb *msg, uint8_t chosen_encr) {}</span><br><span style="color: hsl(0, 100%, 40%);">-int bsc_compl_l3(struct gsm_lchan *lchan, struct msgb *msg, uint16_t chosen_channel)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-void bsc_dtap(struct gsm_subscriber_connection *conn, uint8_t link_id, struct msgb *msg) {}</span><br><span style="color: hsl(0, 100%, 40%);">-void bsc_assign_compl(struct gsm_subscriber_connection *conn, uint8_t rr_cause) {}</span><br><span style="color: hsl(0, 100%, 40%);">-void bsc_assign_fail(struct gsm_subscriber_connection *conn, uint8_t cause, uint8_t *rr_cause) {}</span><br><span style="color: hsl(0, 100%, 40%);">-void bsc_cm_update(struct gsm_subscriber_connection *conn,</span><br><span style="color: hsl(0, 100%, 40%);">-             const uint8_t *cm2, uint8_t cm2_len,</span><br><span style="color: hsl(0, 100%, 40%);">-            const uint8_t *cm3, uint8_t cm3_len) {}</span><br><span style="color: hsl(0, 100%, 40%);">-void gscon_submit_rsl_dtap(struct gsm_subscriber_connection *conn,</span><br><span style="color: hsl(0, 100%, 40%);">-                       struct msgb *msg, int link_id, int allow_sacch) {}</span><br><span style="color: hsl(0, 100%, 40%);">-void ts_fsm_alloc(struct gsm_bts_trx_ts *ts) {}</span><br><span style="color: hsl(0, 100%, 40%);">-void lchan_activate(struct gsm_lchan *lchan, void *info) {}</span><br><span style="color: hsl(0, 100%, 40%);">-bool neighbor_ident_bts_entry_exists(uint8_t from_bts) { return false; }</span><br><span style="color: hsl(0, 100%, 40%);">-const char *handover_status(struct gsm_subscriber_connection *conn) { return "x"; }</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_chan_ms_power_ctrl(struct gsm_lchan *lchan) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-void pcu_info_update(struct gsm_bts *bts) {};</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type, const uint8_t *data, int len) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm_generate_si(struct gsm_bts *bts, enum osmo_sysinfo_type si_type) { return 0; }</span><br><span>diff --git a/tests/gsm0408/gsm0408_test.c b/tests/gsm0408/gsm0408_test.c</span><br><span>index 4017293..90b294e 100644</span><br><span>--- a/tests/gsm0408/gsm0408_test.c</span><br><span>+++ b/tests/gsm0408/gsm0408_test.c</span><br><span>@@ -595,60 +595,3 @@</span><br><span> </span><br><span>  return EXIT_SUCCESS;</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-struct gsm_subscriber_connection *bsc_subscr_con_allocate(struct gsm_network *net) {</span><br><span style="color: hsl(0, 100%, 40%);">-   OSMO_ASSERT(0);</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%);">-void gscon_release_lchans(struct gsm_subscriber_connection *conn, bool do_rr_release) {</span><br><span style="color: hsl(0, 100%, 40%);">- OSMO_ASSERT(0);</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%);">-bool on_gsm_ts_init(struct gsm_bts_trx_ts *ts)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- return true;</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%);">-void ts_fsm_alloc(struct gsm_bts_trx_ts *ts) {}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void bsc_cm_update(struct gsm_subscriber_connection *conn,</span><br><span style="color: hsl(0, 100%, 40%);">-             const uint8_t *cm2, uint8_t cm2_len,</span><br><span style="color: hsl(0, 100%, 40%);">-            const uint8_t *cm3, uint8_t cm3_len) {}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_siemens_mrpci(struct gsm_lchan *lchan, struct rsl_mrpci *mrpci)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_chan_mode_modify_req(struct gsm_lchan *ts) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_tx_ipacc_crcx(const struct gsm_lchan *lchan) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void gscon_submit_rsl_dtap(struct gsm_subscriber_connection *conn,</span><br><span style="color: hsl(0, 100%, 40%);">-                         struct msgb *msg, int link_id, int allow_sacch) {}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-bool lchan_may_receive_data(struct gsm_lchan *lchan) { return  true; }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int bsc_compl_l3(struct gsm_lchan *lchan, struct msgb *msg, uint16_t chosen_channel)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void bsc_dtap(struct gsm_subscriber_connection *conn, uint8_t link_id,</span><br><span style="color: hsl(0, 100%, 40%);">-            struct msgb *msg) {}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void bsc_cipher_mode_compl(struct gsm_subscriber_connection *conn,</span><br><span style="color: hsl(0, 100%, 40%);">-                       struct msgb *msg, uint8_t chosen_encr) {}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-const char *bsc_subscr_name(struct bsc_subscr *bsub) { return NULL; }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void lchan_release(struct gsm_lchan *lchan, bool do_rr_release,</span><br><span style="color: hsl(0, 100%, 40%);">-                   bool err, enum gsm48_rr_cause cause_rr) {}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_data_request(struct msgb *msg, uint8_t link_id) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_encryption_cmd(struct msgb *msg) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_chan_ms_power_ctrl(struct gsm_lchan *lchan) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void pcu_info_update(struct gsm_bts *bts) {};</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type, const uint8_t *data, int len) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-struct e1inp_sign_link *rsl_chan_link(const struct gsm_lchan *lchan) { return NULL; }</span><br><span>diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c</span><br><span>index 1dc7c1f..17bc048 100644</span><br><span>--- a/tests/handover/handover_test.c</span><br><span>+++ b/tests/handover/handover_test.c</span><br><span>@@ -1682,31 +1682,17 @@</span><br><span> void trau_mux_map_lchan() {}</span><br><span> void trau_recv_lchan() {}</span><br><span> void trau_send_frame() {}</span><br><span style="color: hsl(0, 100%, 40%);">-int osmo_bsc_sigtran_send(struct gsm_subscriber_connection *conn, struct msgb *msg) { return 0; }</span><br><span style="color: hsl(120, 100%, 40%);">+/* Stub */</span><br><span> int osmo_bsc_sigtran_open_conn(struct gsm_subscriber_connection *conn, struct msgb *msg) { return 0; }</span><br><span> void bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, uint8_t dlci, enum gsm0808_cause cause) {}</span><br><span> void bsc_cipher_mode_compl(struct gsm_subscriber_connection *conn, struct msgb *msg, uint8_t chosen_encr) {}</span><br><span> int bsc_compl_l3(struct gsm_lchan *lchan, struct msgb *msg, uint16_t chosen_channel)</span><br><span> { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int bsc_paging_start(struct bsc_paging_params *params)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span> void bsc_dtap(struct gsm_subscriber_connection *conn, uint8_t link_id, struct msgb *msg) {}</span><br><span> void bsc_assign_compl(struct gsm_subscriber_connection *conn, uint8_t rr_cause) {}</span><br><span> void bsc_cm_update(struct gsm_subscriber_connection *conn,</span><br><span>              const uint8_t *cm2, uint8_t cm2_len,</span><br><span>                 const uint8_t *cm3, uint8_t cm3_len) {}</span><br><span style="color: hsl(0, 100%, 40%);">-struct gsm0808_handover_required;</span><br><span style="color: hsl(0, 100%, 40%);">-int bsc_tx_bssmap_ho_required(struct gsm_lchan *lchan, const struct gsm0808_cell_id_list2 *target_cells)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int bsc_tx_bssmap_ho_request_ack(struct gsm_subscriber_connection *conn, struct msgb *rr_ho_command)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int bsc_tx_bssmap_ho_detect(struct gsm_subscriber_connection *conn) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-enum handover_result bsc_tx_bssmap_ho_complete(struct gsm_subscriber_connection *conn,</span><br><span style="color: hsl(0, 100%, 40%);">-                                               struct gsm_lchan *lchan) { return HO_RESULT_OK; }</span><br><span style="color: hsl(0, 100%, 40%);">-void bsc_tx_bssmap_ho_failure(struct gsm_subscriber_connection *conn) {}</span><br><span style="color: hsl(0, 100%, 40%);">-void osmo_bsc_sigtran_tx_reset(void) {}</span><br><span style="color: hsl(0, 100%, 40%);">-void osmo_bsc_sigtran_tx_reset_ack(void) {}</span><br><span style="color: hsl(0, 100%, 40%);">-void osmo_bsc_sigtran_reset(void) {}</span><br><span> const char *osmo_mgcpc_ep_name(const struct osmo_mgcpc_ep *ep)</span><br><span> {</span><br><span>        return "fake-ep";</span><br><span>diff --git a/tests/nanobts_omlattr/nanobts_omlattr_test.c b/tests/nanobts_omlattr/nanobts_omlattr_test.c</span><br><span>index 73ba869..0b9f6d9 100644</span><br><span>--- a/tests/nanobts_omlattr/nanobts_omlattr_test.c</span><br><span>+++ b/tests/nanobts_omlattr/nanobts_omlattr_test.c</span><br><span>@@ -32,76 +32,7 @@</span><br><span> #include <stdio.h></span><br><span> #include <string.h></span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-struct gsm_bts_model bts_model_nanobts = {</span><br><span style="color: hsl(0, 100%, 40%);">-    .type = GSM_BTS_TYPE_NANOBTS,</span><br><span style="color: hsl(0, 100%, 40%);">-   .name = "nanobts",</span><br><span style="color: hsl(0, 100%, 40%);">-    .start = NULL,</span><br><span style="color: hsl(0, 100%, 40%);">-  .oml_rcvmsg = NULL,</span><br><span style="color: hsl(0, 100%, 40%);">-     .e1line_bind_ops = NULL,</span><br><span style="color: hsl(0, 100%, 40%);">-        .nm_att_tlvdef = {</span><br><span style="color: hsl(0, 100%, 40%);">-                        .def = {</span><br><span style="color: hsl(0, 100%, 40%);">-                                /* ip.access specifics */</span><br><span style="color: hsl(0, 100%, 40%);">-                               [NM_ATT_IPACC_DST_IP] = {TLV_TYPE_FIXED, 4},</span><br><span style="color: hsl(0, 100%, 40%);">-                            [NM_ATT_IPACC_DST_IP_PORT] =</span><br><span style="color: hsl(0, 100%, 40%);">-                            {TLV_TYPE_FIXED, 2},</span><br><span style="color: hsl(0, 100%, 40%);">-                            [NM_ATT_IPACC_STREAM_ID] = {TLV_TYPE_TV,},</span><br><span style="color: hsl(0, 100%, 40%);">-                              [NM_ATT_IPACC_SEC_OML_CFG] =</span><br><span style="color: hsl(0, 100%, 40%);">-                            {TLV_TYPE_FIXED, 6},</span><br><span style="color: hsl(0, 100%, 40%);">-                            [NM_ATT_IPACC_IP_IF_CFG] =</span><br><span style="color: hsl(0, 100%, 40%);">-                              {TLV_TYPE_FIXED, 8},</span><br><span style="color: hsl(0, 100%, 40%);">-                            [NM_ATT_IPACC_IP_GW_CFG] =</span><br><span style="color: hsl(0, 100%, 40%);">-                              {TLV_TYPE_FIXED, 12},</span><br><span style="color: hsl(0, 100%, 40%);">-                           [NM_ATT_IPACC_IN_SERV_TIME] =</span><br><span style="color: hsl(0, 100%, 40%);">-                           {TLV_TYPE_FIXED, 4},</span><br><span style="color: hsl(0, 100%, 40%);">-                            [NM_ATT_IPACC_LOCATION] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                             [NM_ATT_IPACC_PAGING_CFG] =</span><br><span style="color: hsl(0, 100%, 40%);">-                             {TLV_TYPE_FIXED, 2},</span><br><span style="color: hsl(0, 100%, 40%);">-                            [NM_ATT_IPACC_UNIT_ID] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                              [NM_ATT_IPACC_UNIT_NAME] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                            [NM_ATT_IPACC_SNMP_CFG] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                             [NM_ATT_IPACC_PRIM_OML_CFG_LIST] =</span><br><span style="color: hsl(0, 100%, 40%);">-                              {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                               [NM_ATT_IPACC_NV_FLAGS] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                             [NM_ATT_IPACC_FREQ_CTRL] =</span><br><span style="color: hsl(0, 100%, 40%);">-                              {TLV_TYPE_FIXED, 2},</span><br><span style="color: hsl(0, 100%, 40%);">-                            [NM_ATT_IPACC_PRIM_OML_FB_TOUT] =</span><br><span style="color: hsl(0, 100%, 40%);">-                               {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                               [NM_ATT_IPACC_CUR_SW_CFG] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                           [NM_ATT_IPACC_TIMING_BUS] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                           [NM_ATT_IPACC_CGI] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                                  [NM_ATT_IPACC_RAC] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                                  [NM_ATT_IPACC_OBJ_VERSION] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                                  [NM_ATT_IPACC_GPRS_PAGING_CFG] =</span><br><span style="color: hsl(0, 100%, 40%);">-                                {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                               [NM_ATT_IPACC_NSEI] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                                 [NM_ATT_IPACC_BVCI] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                                 [NM_ATT_IPACC_NSVCI] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                                [NM_ATT_IPACC_NS_CFG] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                               [NM_ATT_IPACC_BSSGP_CFG] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                            [NM_ATT_IPACC_NS_LINK_CFG] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                                  [NM_ATT_IPACC_RLC_CFG] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                              [NM_ATT_IPACC_ALM_THRESH_LIST] =</span><br><span style="color: hsl(0, 100%, 40%);">-                                {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                               [NM_ATT_IPACC_MONIT_VAL_LIST] =</span><br><span style="color: hsl(0, 100%, 40%);">-                                 {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                               [NM_ATT_IPACC_TIB_CONTROL] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                                  [NM_ATT_IPACC_SUPP_FEATURES] =</span><br><span style="color: hsl(0, 100%, 40%);">-                                  {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                               [NM_ATT_IPACC_CODING_SCHEMES] =</span><br><span style="color: hsl(0, 100%, 40%);">-                                 {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                               [NM_ATT_IPACC_RLC_CFG_2] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                            [NM_ATT_IPACC_HEARTB_TOUT] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                                  [NM_ATT_IPACC_UPTIME] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                               [NM_ATT_IPACC_RLC_CFG_3] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                            [NM_ATT_IPACC_SSL_CFG] = {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                              [NM_ATT_IPACC_SEC_POSSIBLE] =</span><br><span style="color: hsl(0, 100%, 40%);">-                           {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                               [NM_ATT_IPACC_IML_SSL_STATE] =</span><br><span style="color: hsl(0, 100%, 40%);">-                                  {TLV_TYPE_TL16V},</span><br><span style="color: hsl(0, 100%, 40%);">-                               [NM_ATT_IPACC_REVOC_DATE] = {TLV_TYPE_TL16V},</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(120, 100%, 40%);">+extern struct gsm_bts_model bts_model_nanobts;</span><br><span> </span><br><span> static void test_nanobts_attr_bts_get(struct gsm_bts *bts, uint8_t *expected)</span><br><span> {</span><br><span>@@ -323,25 +254,3 @@</span><br><span>      talloc_free(ctx);</span><br><span>    return 0;</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* stubs */</span><br><span style="color: hsl(0, 100%, 40%);">-struct osmo_prim_hdr;</span><br><span style="color: hsl(0, 100%, 40%);">-int bssgp_prim_cb(struct osmo_prim_hdr *oph, void *ctx)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-  abort();</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%);">-struct gsm_subscriber_connection *bsc_subscr_con_allocate(struct gsm_network *net) {</span><br><span style="color: hsl(0, 100%, 40%);">-   OSMO_ASSERT(0);</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%);">-bool on_gsm_ts_init(struct gsm_bts_trx_ts *ts)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return true; }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void ts_fsm_alloc(struct gsm_bts_trx_ts *ts) {}</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_chan_ms_power_ctrl(struct gsm_lchan *lchan) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-void pcu_info_update(struct gsm_bts *bts) {};</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type, const uint8_t *data, int len) { return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len)</span><br><span style="color: hsl(0, 100%, 40%);">-{ return 0; }</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm_generate_si(struct gsm_bts *bts, enum osmo_sysinfo_type si_type) { return 0; }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/25709">change 25709</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/c/osmo-bsc/+/25709"/><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-Change-Id: Ic7401b8a6eb903882e30fda1cf091ac99a254ef0 </div>
<div style="display:none"> Gerrit-Change-Number: 25709 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>