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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">drop all BSC originated USSD notification features<br><br>The BSC is the wrong network component to originate USSD messaging, as can be<br>seen in the hacks in the USSD code: for example, the BSC would send a CM<br>Service Accept message as if an MSC had accepted the connection, dispatch a<br>USSD and directly send some RR release message (without proper tear down<br>messaging like the lchan_fsm does these days). This made sense in the osmo-nitb<br>world, but by now we are aiming for solid 3GPP compliance. The BSC shall not<br>originate USSD messages.<br><br>Deprecate all VTY and CTRL commands related to USSD:<br>VTY<br> [no] bsc-welcome-text<br> [no] bsc-msc-lost-text<br> [no] bsc-grace-text<br> [no] missing-msc-text<br> (the commands with 'no' are ignored, without 'no' lead to an error)<br>CTRL<br> ussd-notify-v1<br><br>Drop (already unused) ussd.h.<br>Drop gsm_04_80.h, gsm_04_80_utils.c, and all calling code.<br><br>Drop "RF grace" notification, where osmo-bsc was able to notify active<br>subscribers that the RF was being turned off.<br><br>Change-Id: Iaef6f2e01b4dbf2bff0a0bb50d6851f50ae79f6a<br>---<br>M doc/manuals/chapters/control.adoc<br>M include/osmocom/bsc/Makefile.am<br>M include/osmocom/bsc/bsc_msc_data.h<br>D include/osmocom/bsc/gsm_04_80.h<br>M include/osmocom/bsc/gsm_data.h<br>M include/osmocom/bsc/osmo_bsc.h<br>D include/osmocom/bsc/ussd.h<br>M src/osmo-bsc/Makefile.am<br>D src/osmo-bsc/gsm_04_80_utils.c<br>M src/osmo-bsc/gsm_08_08.c<br>M src/osmo-bsc/osmo_bsc_bssap.c<br>M src/osmo-bsc/osmo_bsc_ctrl.c<br>M src/osmo-bsc/osmo_bsc_filter.c<br>M src/osmo-bsc/osmo_bsc_grace.c<br>M src/osmo-bsc/osmo_bsc_sigtran.c<br>M src/osmo-bsc/osmo_bsc_vty.c<br>M tests/bsc/bsc_test.c<br>M tests/codec_pref/codec_pref_test.c<br>M tests/handover/Makefile.am<br>M tests/vty_test_runner.py<br>20 files changed, 28 insertions(+), 543 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/doc/manuals/chapters/control.adoc b/doc/manuals/chapters/control.adoc</span><br><span>index 327e5b4..6b1609a 100644</span><br><span>--- a/doc/manuals/chapters/control.adoc</span><br><span>+++ b/doc/manuals/chapters/control.adoc</span><br><span>@@ -25,7 +25,6 @@</span><br><span> |mcc-mnc-apply|WO|No|"<mcc>,<mnc>"|Apply new MCC/MNC values if different from currently used one.</span><br><span> |notification|WO|Yes|Arbitrary value| See <<notif>> for details.</span><br><span> |inform-msc-v1|WO|Yes|Arbitrary value| See <<infomsc>> for details.</span><br><span style="color: hsl(0, 100%, 40%);">-|ussd-notify-v1|WO|No|"<cic>,<alert>,<text>"| See <<ussdnot>> for details.</span><br><span> |rf_locked|RW|No|"0","1"|See <<rfl>> for details.</span><br><span> |number-of-bts|RO|No|"<num>"|Get number of configured BTS.</span><br><span> |bts.N.location-area-code|RW|No|"<lac>"|Set/Get LAC (value between (0, 65535)).</span><br><span>@@ -54,12 +53,6 @@</span><br><span> Setting this variable initiate TRAP "inform-msc-v1" to all connected MSCs </span><br><span> control interfaces with the value supplied in SET operation.</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-[[ussdnot]]</span><br><span style="color: hsl(0, 100%, 40%);">-=== ussd-notify-v1</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Setting this variable will send USSD Notify message to subscriber specified in</span><br><span style="color: hsl(0, 100%, 40%);">-command parameters with the text specified in command parameters.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> [[chanlo]]</span><br><span> === channel-load</span><br><span> </span><br><span>diff --git a/include/osmocom/bsc/Makefile.am b/include/osmocom/bsc/Makefile.am</span><br><span>index 509df9a..7a296e4 100644</span><br><span>--- a/include/osmocom/bsc/Makefile.am</span><br><span>+++ b/include/osmocom/bsc/Makefile.am</span><br><span>@@ -17,7 +17,6 @@</span><br><span>     debug.h \</span><br><span>    e1_config.h \</span><br><span>        gsm_04_08_rr.h \</span><br><span style="color: hsl(0, 100%, 40%);">-        gsm_04_80.h \</span><br><span>        gsm_data.h \</span><br><span>         handover.h \</span><br><span>         handover_cfg.h \</span><br><span>@@ -49,7 +48,6 @@</span><br><span>         signal.h \</span><br><span>   system_information.h \</span><br><span>       timeslot_fsm.h \</span><br><span style="color: hsl(0, 100%, 40%);">-        ussd.h \</span><br><span>     vty.h \</span><br><span>      gsm_08_08.h \</span><br><span>        penalty_timers.h \</span><br><span>diff --git a/include/osmocom/bsc/bsc_msc_data.h b/include/osmocom/bsc/bsc_msc_data.h</span><br><span>index 27eb75d..b497345 100644</span><br><span>--- a/include/osmocom/bsc/bsc_msc_data.h</span><br><span>+++ b/include/osmocom/bsc/bsc_msc_data.h</span><br><span>@@ -133,17 +133,8 @@</span><br><span>       enum bsc_lcls_mode lcls_mode;</span><br><span>        bool lcls_codec_mismatch_allow;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     /* ussd welcome text */</span><br><span style="color: hsl(0, 100%, 40%);">- char *ussd_welcome_txt;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>      int nr;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     /* ussd msc connection lost text */</span><br><span style="color: hsl(0, 100%, 40%);">-     char *ussd_msc_lost_txt;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        /* ussd text when MSC has entered the grace period */</span><br><span style="color: hsl(0, 100%, 40%);">-   char *ussd_grace_txt;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>        /* structures for keeping rate counters and gauge stats */</span><br><span>   struct rate_ctr_group *msc_ctrs;</span><br><span>     struct osmo_stat_item_group *msc_statg;</span><br><span>@@ -207,15 +198,11 @@</span><br><span>      struct llist_head mscs;</span><br><span> </span><br><span>  /* rf ctl related bits */</span><br><span style="color: hsl(0, 100%, 40%);">-       char *mid_call_txt;</span><br><span>  int mid_call_timeout;</span><br><span>        char *rf_ctrl_name;</span><br><span>  struct osmo_bsc_rf *rf_ctrl;</span><br><span>         int auto_off_timeout;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       /* ussd text when there is no MSC available */</span><br><span style="color: hsl(0, 100%, 40%);">-  char *ussd_no_msc_txt;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>       struct bsc_cbc_link *cbc;</span><br><span> };</span><br><span> </span><br><span>diff --git a/include/osmocom/bsc/gsm_04_80.h b/include/osmocom/bsc/gsm_04_80.h</span><br><span>deleted file mode 100644</span><br><span>index 649ffe1..0000000</span><br><span>--- a/include/osmocom/bsc/gsm_04_80.h</span><br><span>+++ /dev/null</span><br><span>@@ -1,7 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#pragma once</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-struct gsm_subscriber_connection;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int bsc_send_ussd_notify(struct gsm_subscriber_connection *conn, int level,</span><br><span style="color: hsl(0, 100%, 40%);">-                       const char *text);</span><br><span style="color: hsl(0, 100%, 40%);">-int bsc_send_ussd_release_complete(struct gsm_subscriber_connection *conn);</span><br><span>diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h</span><br><span>index 4784935..d801d2c 100644</span><br><span>--- a/include/osmocom/bsc/gsm_data.h</span><br><span>+++ b/include/osmocom/bsc/gsm_data.h</span><br><span>@@ -260,9 +260,6 @@</span><br><span>    /* flag to prevent multiple simultaneous ciphering commands */</span><br><span>       int ciphering_handled;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      /* state related to welcome USSD */</span><br><span style="color: hsl(0, 100%, 40%);">-     uint8_t new_subscriber;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>      /* SCCP connection associatd with this subscriber_connection */</span><br><span>      struct {</span><br><span>             /* for advanced ping/pong */</span><br><span>diff --git a/include/osmocom/bsc/osmo_bsc.h b/include/osmocom/bsc/osmo_bsc.h</span><br><span>index 8999a2e..afc319b 100644</span><br><span>--- a/include/osmocom/bsc/osmo_bsc.h</span><br><span>+++ b/include/osmocom/bsc/osmo_bsc.h</span><br><span>@@ -2,8 +2,6 @@</span><br><span> </span><br><span> #include <osmocom/gsm/protocol/gsm_04_08.h></span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#define BSS_SEND_USSD 1</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> enum bsc_con {</span><br><span>    BSC_CON_SUCCESS,</span><br><span>     BSC_CON_REJECT_NO_LINK,</span><br><span>@@ -29,7 +27,6 @@</span><br><span> </span><br><span> int bsc_scan_bts_msg(struct gsm_subscriber_connection *conn, struct msgb *msg);</span><br><span> int bsc_scan_msc_msg(struct gsm_subscriber_connection *conn, struct msgb *msg);</span><br><span style="color: hsl(0, 100%, 40%);">-int bsc_send_welcome_ussd(struct gsm_subscriber_connection *conn);</span><br><span> </span><br><span> int bsc_handle_udt(struct bsc_msc_data *msc, struct msgb *msg, unsigned int length);</span><br><span> int bsc_handle_dt(struct gsm_subscriber_connection *conn, struct msgb *msg, unsigned int len);</span><br><span>diff --git a/include/osmocom/bsc/ussd.h b/include/osmocom/bsc/ussd.h</span><br><span>deleted file mode 100644</span><br><span>index 2665468..0000000</span><br><span>--- a/include/osmocom/bsc/ussd.h</span><br><span>+++ /dev/null</span><br><span>@@ -1,10 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#ifndef _USSD_H</span><br><span style="color: hsl(0, 100%, 40%);">-#define _USSD_H</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* Handler function for mobile-originated USSD messages */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/core/msgb.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int handle_rcv_ussd(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%);">-#endif</span><br><span>diff --git a/src/osmo-bsc/Makefile.am b/src/osmo-bsc/Makefile.am</span><br><span>index 6009e1d..51e0e7f9 100644</span><br><span>--- a/src/osmo-bsc/Makefile.am</span><br><span>+++ b/src/osmo-bsc/Makefile.am</span><br><span>@@ -55,7 +55,6 @@</span><br><span>     codec_pref.c \</span><br><span>       e1_config.c \</span><br><span>        gsm_04_08_rr.c \</span><br><span style="color: hsl(0, 100%, 40%);">-        gsm_04_80_utils.c \</span><br><span>  gsm_data.c \</span><br><span>         handover_cfg.c \</span><br><span>     handover_decision.c \</span><br><span>diff --git a/src/osmo-bsc/gsm_04_80_utils.c b/src/osmo-bsc/gsm_04_80_utils.c</span><br><span>deleted file mode 100644</span><br><span>index 5ac0226..0000000</span><br><span>--- a/src/osmo-bsc/gsm_04_80_utils.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,43 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/* OpenBSC utility functions for 3GPP TS 04.80 */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* (C) 2016 by sysmocom s.m.f.c. GmbH <info@sysmocom.de></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/gsm/gsm0480.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%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int bsc_send_ussd_notify(struct gsm_subscriber_connection *conn, int level,</span><br><span style="color: hsl(0, 100%, 40%);">-                         const char *text)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-     struct msgb *msg = gsm0480_create_ussd_notify(level, text);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (!msg)</span><br><span style="color: hsl(0, 100%, 40%);">-               return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      gscon_submit_rsl_dtap(conn, msg, 0, 0);</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%);">-int bsc_send_ussd_release_complete(struct gsm_subscriber_connection *conn)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-   /* ugly: we obviously don't know if TID 0 is currently in user for the given subscriber... */</span><br><span style="color: hsl(0, 100%, 40%);">-       struct msgb *msg = gsm0480_create_release_complete(0);</span><br><span style="color: hsl(0, 100%, 40%);">-  if (!msg)</span><br><span style="color: hsl(0, 100%, 40%);">-               return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      gscon_submit_rsl_dtap(conn, msg, 0, 0);</span><br><span style="color: hsl(0, 100%, 40%);">- return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/osmo-bsc/gsm_08_08.c b/src/osmo-bsc/gsm_08_08.c</span><br><span>index 7295f0c..70559c0 100644</span><br><span>--- a/src/osmo-bsc/gsm_08_08.c</span><br><span>+++ b/src/osmo-bsc/gsm_08_08.c</span><br><span>@@ -26,7 +26,6 @@</span><br><span> #include <osmocom/bsc/gsm_08_08.h></span><br><span> #include <osmocom/bsc/codec_pref.h></span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/gsm_04_80.h></span><br><span> #include <osmocom/bsc/gsm_04_08_rr.h></span><br><span> #include <osmocom/bsc/a_reset.h></span><br><span> </span><br><span>@@ -106,50 +105,6 @@</span><br><span>         return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void bsc_send_ussd_no_srv(struct gsm_subscriber_connection *conn,</span><br><span style="color: hsl(0, 100%, 40%);">-                               struct msgb *msg, const char *text)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-   struct gsm48_hdr *gh;</span><br><span style="color: hsl(0, 100%, 40%);">-   int8_t pdisc;</span><br><span style="color: hsl(0, 100%, 40%);">-   uint8_t mtype;</span><br><span style="color: hsl(0, 100%, 40%);">-  int drop_message = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   if (!text)</span><br><span style="color: hsl(0, 100%, 40%);">-              return;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (!msg || msgb_l3len(msg) < sizeof(*gh))</span><br><span style="color: hsl(0, 100%, 40%);">-           return;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- gh = msgb_l3(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-      pdisc = gsm48_hdr_pdisc(gh);</span><br><span style="color: hsl(0, 100%, 40%);">-    mtype = gsm48_hdr_msg_type(gh);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* Is CM service request? */</span><br><span style="color: hsl(0, 100%, 40%);">-    if (pdisc == GSM48_PDISC_MM && mtype == GSM48_MT_MM_CM_SERV_REQ) {</span><br><span style="color: hsl(0, 100%, 40%);">-              struct gsm48_service_request *cm;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-               cm = (struct gsm48_service_request *) &gh->data[0];</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-              /* Is type SMS or call? */</span><br><span style="color: hsl(0, 100%, 40%);">-              if (cm->cm_service_type == GSM48_CMSERV_SMS)</span><br><span style="color: hsl(0, 100%, 40%);">-                 drop_message = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-               else if (cm->cm_service_type == GSM48_CMSERV_MO_CALL_PACKET)</span><br><span style="color: hsl(0, 100%, 40%);">-                 drop_message = 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%);">-       if (drop_message) {</span><br><span style="color: hsl(0, 100%, 40%);">-             LOGP(DMSC, LOGL_DEBUG, "Skipping (not sending) USSD message: '%s'\n", text);</span><br><span style="color: hsl(0, 100%, 40%);">-          return;</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(DMSC, LOGL_INFO, "Sending CM Service Accept\n");</span><br><span style="color: hsl(0, 100%, 40%);">- gsm48_tx_mm_serv_ack(conn);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     LOGP(DMSC, LOGL_INFO, "Sending USSD message: '%s'\n", text);</span><br><span style="color: hsl(0, 100%, 40%);">-  bsc_send_ussd_notify(conn, 1, text);</span><br><span style="color: hsl(0, 100%, 40%);">-    bsc_send_ussd_release_complete(conn);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> static int is_cm_service_for_emerg(struct msgb *msg)</span><br><span> {</span><br><span>  struct gsm48_service_request *cm;</span><br><span>@@ -319,7 +274,6 @@</span><br><span> {</span><br><span>         struct gsm48_hdr *gh;</span><br><span>        struct gsm48_loc_upd_req *lu;</span><br><span style="color: hsl(0, 100%, 40%);">-   struct gsm48_loc_area_id lai;</span><br><span>        int8_t rc8;</span><br><span>  struct gsm_bts *bts = conn_get_bts(conn);</span><br><span> </span><br><span>@@ -332,13 +286,6 @@</span><br><span>         gh = msgb_l3(msg);</span><br><span>   lu = (struct gsm48_loc_upd_req *) gh->data;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      gsm48_generate_lai2(&lai, bts_lai(conn_get_bts(conn)));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     if (memcmp(&lai, &lu->lai, sizeof(lai)) != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGP(DMSC, LOGL_DEBUG, "Marking con for welcome USSD.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-            conn->new_subscriber = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>    rc8 = osmo_gsm48_rfpowercap2powerclass(bts->band, lu->classmark1.pwr_lev);</span><br><span>     if (rc8 < 0) {</span><br><span>            LOGP(DMSC, LOGL_NOTICE,</span><br><span>@@ -405,7 +352,6 @@</span><br><span> {</span><br><span>   struct bsc_msc_data *msc;</span><br><span>    struct msgb *resp;</span><br><span style="color: hsl(0, 100%, 40%);">-      enum bsc_con ret;</span><br><span>    struct gsm0808_speech_codec_list scl;</span><br><span>        int rc = -2;</span><br><span> </span><br><span>@@ -417,25 +363,13 @@</span><br><span>     msc = bsc_find_msc(conn, msg);</span><br><span>       if (!msc) {</span><br><span>          LOGP(DMSC, LOGL_ERROR, "Failed to find a MSC for a connection.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-           bsc_send_ussd_no_srv(conn, msg,</span><br><span style="color: hsl(0, 100%, 40%);">-                              conn_get_bts(conn)->network->bsc_data->ussd_no_msc_txt);</span><br><span>               rc = -1;</span><br><span>             goto early_fail;</span><br><span>     }</span><br><span> </span><br><span>        /* allocate resource for a new connection */</span><br><span style="color: hsl(0, 100%, 40%);">-    ret = osmo_bsc_sigtran_new_conn(conn, msc);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     if (ret != BSC_CON_SUCCESS) {</span><br><span style="color: hsl(0, 100%, 40%);">-           /* allocation has failed */</span><br><span style="color: hsl(0, 100%, 40%);">-             if (ret == BSC_CON_REJECT_NO_LINK)</span><br><span style="color: hsl(0, 100%, 40%);">-                      bsc_send_ussd_no_srv(conn, msg, msc->ussd_msc_lost_txt);</span><br><span style="color: hsl(0, 100%, 40%);">-             else if (ret == BSC_CON_REJECT_RF_GRACE)</span><br><span style="color: hsl(0, 100%, 40%);">-                        bsc_send_ussd_no_srv(conn, msg, msc->ussd_grace_txt);</span><br><span style="color: hsl(120, 100%, 40%);">+      if (osmo_bsc_sigtran_new_conn(conn, msc) != BSC_CON_SUCCESS)</span><br><span>                 goto early_fail;</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%);">-       /* check return value, if failed check msg for and send USSD */</span><br><span> </span><br><span>  bsc_scan_bts_msg(conn, msg);</span><br><span> </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 388ad14..e65d0cf 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>@@ -29,7 +29,6 @@</span><br><span> #include <osmocom/bsc/bsc_subscriber.h></span><br><span> #include <osmocom/bsc/paging.h></span><br><span> #include <osmocom/bsc/gsm_04_08_rr.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/gsm_04_80.h></span><br><span> #include <osmocom/bsc/bsc_subscr_conn_fsm.h></span><br><span> #include <osmocom/bsc/codec_pref.h></span><br><span> #include <osmocom/bsc/abis_rsl.h></span><br><span>@@ -1146,21 +1145,13 @@</span><br><span>       return ret;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int bsc_send_welcome_ussd(struct gsm_subscriber_connection *conn)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-  bsc_send_ussd_notify(conn, 1, conn->sccp.msc->ussd_welcome_txt);</span><br><span style="color: hsl(0, 100%, 40%);">-  bsc_send_ussd_release_complete(conn);</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> static int dtap_rcvmsg(struct gsm_subscriber_connection *conn,</span><br><span>                        struct msgb *msg, unsigned int length)</span><br><span> {</span><br><span>   struct dtap_header *header;</span><br><span>  struct msgb *gsm48;</span><br><span>  uint8_t *data;</span><br><span style="color: hsl(0, 100%, 40%);">-  int rc, dtap_rc;</span><br><span style="color: hsl(120, 100%, 40%);">+      int dtap_rc;</span><br><span>         struct rate_ctr *ctrs;</span><br><span> </span><br><span>   LOGP(DMSC, LOGL_DEBUG, "Rx MSC DTAP: %s\n",</span><br><span>@@ -1202,12 +1193,10 @@</span><br><span>      memcpy(data, msg->l3h + sizeof(*header), length - sizeof(*header));</span><br><span> </span><br><span>   /* pass it to the filter for extra actions */</span><br><span style="color: hsl(0, 100%, 40%);">-   rc = bsc_scan_msc_msg(conn, gsm48);</span><br><span style="color: hsl(120, 100%, 40%);">+   bsc_scan_msc_msg(conn, gsm48);</span><br><span>       /* Store link_id in msgb->cb */</span><br><span>   OBSC_LINKID_CB(gsm48) = header->link_id;</span><br><span>  dtap_rc = osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_MT_DTAP, gsm48);</span><br><span style="color: hsl(0, 100%, 40%);">- if (rc == BSS_SEND_USSD)</span><br><span style="color: hsl(0, 100%, 40%);">-                bsc_send_welcome_ussd(conn);</span><br><span>         return dtap_rc;</span><br><span> }</span><br><span> </span><br><span>diff --git a/src/osmo-bsc/osmo_bsc_ctrl.c b/src/osmo-bsc/osmo_bsc_ctrl.c</span><br><span>index afe061e..eb82a7c 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_ctrl.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_ctrl.c</span><br><span>@@ -26,7 +26,6 @@</span><br><span> #include <osmocom/bsc/osmo_bsc_rf.h></span><br><span> #include <osmocom/bsc/bsc_msc_data.h></span><br><span> #include <osmocom/bsc/signal.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/gsm_04_80.h></span><br><span> </span><br><span> #include <osmocom/core/linuxlist.h></span><br><span> #include <osmocom/core/signal.h></span><br><span>@@ -672,70 +671,6 @@</span><br><span>    return CTRL_CMD_HANDLED;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-CTRL_CMD_DEFINE_WO(net_ussd_notify, "ussd-notify-v1");</span><br><span style="color: hsl(0, 100%, 40%);">-static int set_net_ussd_notify(struct ctrl_cmd *cmd, void *data)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-      struct gsm_subscriber_connection *conn;</span><br><span style="color: hsl(0, 100%, 40%);">- struct gsm_network *net;</span><br><span style="color: hsl(0, 100%, 40%);">-        char *saveptr = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-   char *cic_str, *alert_str, *text_str;</span><br><span style="color: hsl(0, 100%, 40%);">-   int cic, alert;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* Verify has done the test for us */</span><br><span style="color: hsl(0, 100%, 40%);">-   cic_str = strtok_r(cmd->value, ",", &saveptr);</span><br><span style="color: hsl(0, 100%, 40%);">- alert_str = strtok_r(NULL, ",", &saveptr);</span><br><span style="color: hsl(0, 100%, 40%);">-        text_str = strtok_r(NULL, ",", &saveptr);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (!cic_str || !alert_str || !text_str) {</span><br><span style="color: hsl(0, 100%, 40%);">-              cmd->reply = "Programming issue. How did this pass verify?";</span><br><span style="color: hsl(0, 100%, 40%);">-               return CTRL_CMD_ERROR;</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%);">-       cmd->reply = "No connection found";</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        cic = atoi(cic_str);</span><br><span style="color: hsl(0, 100%, 40%);">-    alert = atoi(alert_str);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        net = cmd->node;</span><br><span style="color: hsl(0, 100%, 40%);">-     llist_for_each_entry(conn, &net->subscr_conns, entry) {</span><br><span style="color: hsl(0, 100%, 40%);">-          if (conn->user_plane.msc_assigned_cic != cic)</span><br><span style="color: hsl(0, 100%, 40%);">-                        continue;</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%);">-               * This is a hack. My E71 does not like to immediately</span><br><span style="color: hsl(0, 100%, 40%);">-           * receive a release complete on a TCH. So schedule a</span><br><span style="color: hsl(0, 100%, 40%);">-            * release complete to clear any previous attempt. The</span><br><span style="color: hsl(0, 100%, 40%);">-           * right thing would be to track invokeId and only send</span><br><span style="color: hsl(0, 100%, 40%);">-          * the release complete when we get a returnResultLast</span><br><span style="color: hsl(0, 100%, 40%);">-           * for this invoke id.</span><br><span style="color: hsl(0, 100%, 40%);">-           */</span><br><span style="color: hsl(0, 100%, 40%);">-             bsc_send_ussd_release_complete(conn);</span><br><span style="color: hsl(0, 100%, 40%);">-           bsc_send_ussd_notify(conn, alert, text_str);</span><br><span style="color: hsl(0, 100%, 40%);">-            cmd->reply = "Found a connection";</span><br><span style="color: hsl(0, 100%, 40%);">-         break;</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 CTRL_CMD_REPLY;</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%);">-static int verify_net_ussd_notify(struct ctrl_cmd *cmd, const char *value, void *data)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-  char *saveptr = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-   char *inp, *cic, *alert, *text;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- OSMO_ASSERT(cmd);</span><br><span style="color: hsl(0, 100%, 40%);">-       inp = talloc_strdup(cmd, value);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        cic = strtok_r(inp, ",", &saveptr);</span><br><span style="color: hsl(0, 100%, 40%);">-       alert = strtok_r(NULL, ",", &saveptr);</span><br><span style="color: hsl(0, 100%, 40%);">-    text = strtok_r(NULL, ",", &saveptr);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     talloc_free(inp);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (!cic || !alert || !text)</span><br><span style="color: hsl(0, 100%, 40%);">-            return 1;</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> static int msc_signal_handler(unsigned int subsys, unsigned int signal,</span><br><span>                        void *handler_data, void *signal_data)</span><br><span> {</span><br><span>@@ -791,9 +726,6 @@</span><br><span>    rc = ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_net_inform_msc);</span><br><span>      if (rc)</span><br><span>              goto end;</span><br><span style="color: hsl(0, 100%, 40%);">-       rc = ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_net_ussd_notify);</span><br><span style="color: hsl(0, 100%, 40%);">-        if (rc)</span><br><span style="color: hsl(0, 100%, 40%);">-         goto end;</span><br><span>    rc = osmo_signal_register_handler(SS_L_INPUT, &bts_connection_status_trap_cb, net);</span><br><span> </span><br><span> end:</span><br><span>diff --git a/src/osmo-bsc/osmo_bsc_filter.c b/src/osmo-bsc/osmo_bsc_filter.c</span><br><span>index b4985f2..98b5148 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_filter.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_filter.c</span><br><span>@@ -21,7 +21,6 @@</span><br><span> </span><br><span> #include <osmocom/bsc/osmo_bsc.h></span><br><span> #include <osmocom/bsc/bsc_msc_data.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/gsm_04_80.h></span><br><span> #include <osmocom/bsc/gsm_04_08_rr.h></span><br><span> #include <osmocom/bsc/bsc_subscriber.h></span><br><span> #include <osmocom/bsc/debug.h></span><br><span>@@ -30,16 +29,6 @@</span><br><span> </span><br><span> #include <stdlib.h></span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int send_welcome_ussd(struct gsm_subscriber_connection *conn)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       if (!conn->sccp.msc->ussd_welcome_txt) {</span><br><span style="color: hsl(0, 100%, 40%);">-          LOGP(DMSC, LOGL_DEBUG, "No USSD Welcome text defined.\n");</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%);">-       return BSS_SEND_USSD;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> static int bsc_patch_mm_info(struct gsm_subscriber_connection *conn,</span><br><span>               uint8_t *data, unsigned int length)</span><br><span> {</span><br><span>@@ -150,9 +139,6 @@</span><br><span>                               gsm48_generate_lai2(lai, bts_lai(conn_get_bts(conn)));</span><br><span>                       }</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-               if (conn->new_subscriber)</span><br><span style="color: hsl(0, 100%, 40%);">-                    return send_welcome_ussd(conn);</span><br><span>              return 0;</span><br><span>    } else if (mtype == GSM48_MT_MM_INFO) {</span><br><span>              bsc_patch_mm_info(conn, &gh->data[0], length);</span><br><span>diff --git a/src/osmo-bsc/osmo_bsc_grace.c b/src/osmo-bsc/osmo_bsc_grace.c</span><br><span>index 2cc3d1a..9ee84d4 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_grace.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_grace.c</span><br><span>@@ -21,7 +21,6 @@</span><br><span> #include <osmocom/bsc/osmo_bsc_grace.h></span><br><span> #include <osmocom/bsc/osmo_bsc_rf.h></span><br><span> #include <osmocom/bsc/bsc_msc_data.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/gsm_04_80.h></span><br><span> #include <osmocom/bsc/bsc_subscriber.h></span><br><span> #include <osmocom/bsc/paging.h></span><br><span> #include <osmocom/bsc/signal.h></span><br><span>@@ -72,78 +71,3 @@</span><br><span>             return paging_request_bts(bts, subscr, chan_needed, msc);</span><br><span>    return locked_paging_bts(bts, subscr, chan_needed, msc);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static int handle_sub(struct gsm_lchan *lchan, const char *text)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-  struct gsm_subscriber_connection *conn;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* only send it to TCH */</span><br><span style="color: hsl(0, 100%, 40%);">-       if (lchan->type != GSM_LCHAN_TCH_H && lchan->type != GSM_LCHAN_TCH_F)</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%);">-      /* only send on the primary channel */</span><br><span style="color: hsl(0, 100%, 40%);">-  conn = lchan->conn;</span><br><span style="color: hsl(0, 100%, 40%);">-  if (!conn)</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%);">-      if (conn->lchan != lchan)</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%);">-      /* only when active */</span><br><span style="color: hsl(0, 100%, 40%);">-  if (lchan->fi->state != LCHAN_ST_ESTABLISHED)</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%);">-      bsc_send_ussd_notify(conn, 0, text);</span><br><span style="color: hsl(0, 100%, 40%);">-    bsc_send_ussd_release_complete(conn);</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%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- * The place to handle the grace mode. Right now we will send</span><br><span style="color: hsl(0, 100%, 40%);">- * USSD messages to the subscriber, in the future we might start</span><br><span style="color: hsl(0, 100%, 40%);">- * a timer to have different modes for the grace period.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-static int handle_grace(struct gsm_network *network)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       int ts_nr, lchan_nr;</span><br><span style="color: hsl(0, 100%, 40%);">-    struct gsm_bts *bts;</span><br><span style="color: hsl(0, 100%, 40%);">-    struct gsm_bts_trx *trx;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        if (!network->bsc_data->mid_call_txt)</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%);">-       llist_for_each_entry(bts, &network->bts_list, list) {</span><br><span style="color: hsl(0, 100%, 40%);">-            llist_for_each_entry(trx, &bts->trx_list, list) {</span><br><span style="color: hsl(0, 100%, 40%);">-                        for (ts_nr = 0; ts_nr < TRX_NR_TS; ++ts_nr) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                struct gsm_bts_trx_ts *ts = &trx->ts[ts_nr];</span><br><span style="color: hsl(0, 100%, 40%);">-                             for (lchan_nr = 0; lchan_nr < TS_MAX_LCHAN; ++lchan_nr) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                    handle_sub(&ts->lchan[lchan_nr],</span><br><span style="color: hsl(0, 100%, 40%);">-                                            network->bsc_data->mid_call_txt);</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%);">-       }</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%);">-static int handle_rf_signal(unsigned int subsys, unsigned int signal,</span><br><span style="color: hsl(0, 100%, 40%);">-                     void *handler_data, void *signal_data)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-     struct rf_signal_data *sig;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     if (subsys != SS_RF)</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%);">-      sig = signal_data;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      if (signal == S_RF_GRACE)</span><br><span style="color: hsl(0, 100%, 40%);">-               handle_grace(sig->net);</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%);">-static __attribute__((constructor)) void on_dso_load_grace(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-     osmo_signal_register_handler(SS_RF, handle_rf_signal, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-}</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 d36c85d..cbf0fec 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>@@ -32,7 +32,6 @@</span><br><span> #include <osmocom/bsc/osmo_bsc_grace.h></span><br><span> #include <osmocom/bsc/osmo_bsc_sigtran.h></span><br><span> #include <osmocom/bsc/a_reset.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/gsm_04_80.h></span><br><span> #include <osmocom/bsc/bsc_subscr_conn_fsm.h></span><br><span> #include <osmocom/bsc/gsm_data.h></span><br><span> #include <osmocom/mgcp_client/mgcp_common.h></span><br><span>@@ -426,24 +425,6 @@</span><br><span>       return rc;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Send an USSD notification in case we loose the connection to the MSC */</span><br><span style="color: hsl(0, 100%, 40%);">-static void bsc_notify_msc_lost(struct gsm_subscriber_connection *conn)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-   /* Check if sccp conn is still present */</span><br><span style="color: hsl(0, 100%, 40%);">-       if (!conn)</span><br><span style="color: hsl(0, 100%, 40%);">-              return;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* check for config string */</span><br><span style="color: hsl(0, 100%, 40%);">-   if (!conn->sccp.msc->ussd_msc_lost_txt)</span><br><span style="color: hsl(0, 100%, 40%);">-           return;</span><br><span style="color: hsl(0, 100%, 40%);">- if (conn->sccp.msc->ussd_msc_lost_txt[0] == '\0')</span><br><span style="color: hsl(0, 100%, 40%);">-         return;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* send USSD notification */</span><br><span style="color: hsl(0, 100%, 40%);">-    bsc_send_ussd_notify(conn, 1, conn->sccp.msc->ussd_msc_lost_txt);</span><br><span style="color: hsl(0, 100%, 40%);">- bsc_send_ussd_release_complete(conn);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /* Close all open sigtran connections and channels */</span><br><span> void osmo_bsc_sigtran_reset(const struct bsc_msc_data *msc)</span><br><span> {</span><br><span>@@ -456,9 +437,6 @@</span><br><span>            /* We only may close connections which actually belong to this</span><br><span>                * MSC. All other open connections are left untouched */</span><br><span>             if (conn->sccp.msc == msc) {</span><br><span style="color: hsl(0, 100%, 40%);">-                 /* Notify active connection users via USSD that the MSC is down */</span><br><span style="color: hsl(0, 100%, 40%);">-                      bsc_notify_msc_lost(conn);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>                   /* Take down all occopied RF channels */</span><br><span>                     /* Disconnect all Sigtran connections */</span><br><span>                     /* Delete subscriber connection */</span><br><span>diff --git a/src/osmo-bsc/osmo_bsc_vty.c b/src/osmo-bsc/osmo_bsc_vty.c</span><br><span>index 7791212..f6f512f 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_vty.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_vty.c</span><br><span>@@ -120,21 +120,6 @@</span><br><span>           vty_out(vty, " core-cell-identity %d%s",</span><br><span>                   msc->core_ci, VTY_NEWLINE);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      if (msc->ussd_welcome_txt)</span><br><span style="color: hsl(0, 100%, 40%);">-           vty_out(vty, " bsc-welcome-text %s%s", msc->ussd_welcome_txt, VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-        else</span><br><span style="color: hsl(0, 100%, 40%);">-            vty_out(vty, " no bsc-welcome-text%s", VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  if (msc->ussd_msc_lost_txt && msc->ussd_msc_lost_txt[0])</span><br><span style="color: hsl(0, 100%, 40%);">-          vty_out(vty, " bsc-msc-lost-text %s%s", msc->ussd_msc_lost_txt, VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-      else</span><br><span style="color: hsl(0, 100%, 40%);">-            vty_out(vty, " no bsc-msc-lost-text%s", VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (msc->ussd_grace_txt && msc->ussd_grace_txt[0])</span><br><span style="color: hsl(0, 100%, 40%);">-                vty_out(vty, " bsc-grace-text %s%s", msc->ussd_grace_txt, VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-    else</span><br><span style="color: hsl(0, 100%, 40%);">-            vty_out(vty, " no bsc-grace-text%s", VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>         if (msc->audio_length != 0) {</span><br><span>             int i;</span><br><span> </span><br><span>@@ -210,8 +195,6 @@</span><br><span>     struct osmo_bsc_data *bsc = osmo_bsc_data(vty);</span><br><span> </span><br><span>  vty_out(vty, "bsc%s", VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-   if (bsc->mid_call_txt)</span><br><span style="color: hsl(0, 100%, 40%);">-               vty_out(vty, " mid-call-text %s%s", bsc->mid_call_txt, VTY_NEWLINE);</span><br><span>    vty_out(vty, " mid-call-timeout %d%s", bsc->mid_call_timeout, VTY_NEWLINE);</span><br><span>     if (bsc->rf_ctrl_name)</span><br><span>            vty_out(vty, " bsc-rf-socket %s%s",</span><br><span>@@ -221,11 +204,6 @@</span><br><span>                 vty_out(vty, " bsc-auto-rf-off %d%s",</span><br><span>                      bsc->auto_off_timeout, VTY_NEWLINE);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     if (bsc->ussd_no_msc_txt && bsc->ussd_no_msc_txt[0])</span><br><span style="color: hsl(0, 100%, 40%);">-              vty_out(vty, " missing-msc-text %s%s", bsc->ussd_no_msc_txt, VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">- else</span><br><span style="color: hsl(0, 100%, 40%);">-            vty_out(vty, " no missing-msc-text%s", VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -339,118 +317,49 @@</span><br><span>        return CMD_ERR_INCOMPLETE;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_net_msc_welcome_ussd,</span><br><span style="color: hsl(0, 100%, 40%);">-      cfg_net_msc_welcome_ussd_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-      "bsc-welcome-text .TEXT",</span><br><span style="color: hsl(0, 100%, 40%);">-      "Set the USSD notification to be sent\n" "Text to be sent\n")</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-  struct bsc_msc_data *data = bsc_msc_data(vty);</span><br><span style="color: hsl(0, 100%, 40%);">-  char *str = argv_concat(argv, argc, 0);</span><br><span style="color: hsl(0, 100%, 40%);">- if (!str)</span><br><span style="color: hsl(0, 100%, 40%);">-               return CMD_WARNING;</span><br><span style="color: hsl(120, 100%, 40%);">+#define LEGACY_STR "This command has no effect, it is kept to support legacy config files\n"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- osmo_talloc_replace_string(osmo_bsc_data(vty), &data->ussd_welcome_txt, str);</span><br><span style="color: hsl(0, 100%, 40%);">-    talloc_free(str);</span><br><span style="color: hsl(0, 100%, 40%);">-       return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_DEPRECATED(deprecated_ussd_text,</span><br><span style="color: hsl(120, 100%, 40%);">+      cfg_net_msc_welcome_ussd_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+      "bsc-welcome-text .TEXT", LEGACY_STR LEGACY_STR)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ vty_out(vty, "%% osmo-bsc no longer supports USSD notification. These commands have no effect:%s"</span><br><span style="color: hsl(120, 100%, 40%);">+           "%%   bsc-welcome-text, bsc-msc-lost-text, mid-call-text, bsc-grace-text, missing-msc-text%s",</span><br><span style="color: hsl(120, 100%, 40%);">+              VTY_NEWLINE, VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+    return CMD_WARNING;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_net_msc_no_welcome_ussd,</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_DEPRECATED(deprecated_no_ussd_text,</span><br><span>       cfg_net_msc_no_welcome_ussd_cmd,</span><br><span>       "no bsc-welcome-text",</span><br><span style="color: hsl(0, 100%, 40%);">-      NO_STR "Clear the USSD notification to be sent\n")</span><br><span style="color: hsl(120, 100%, 40%);">+      NO_STR LEGACY_STR)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-  struct bsc_msc_data *data = bsc_msc_data(vty);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  talloc_free(data->ussd_welcome_txt);</span><br><span style="color: hsl(0, 100%, 40%);">- data->ussd_welcome_txt = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>    return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_net_msc_lost_ussd,</span><br><span style="color: hsl(120, 100%, 40%);">+ALIAS_DEPRECATED(deprecated_ussd_text,</span><br><span>       cfg_net_msc_lost_ussd_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-      "bsc-msc-lost-text .TEXT",</span><br><span style="color: hsl(0, 100%, 40%);">-      "Set the USSD notification to be sent on MSC connection loss\n" "Text to be sent\n")</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-   struct bsc_msc_data *data = bsc_msc_data(vty);</span><br><span style="color: hsl(0, 100%, 40%);">-  char *str = argv_concat(argv, argc, 0);</span><br><span style="color: hsl(0, 100%, 40%);">- if (!str)</span><br><span style="color: hsl(0, 100%, 40%);">-               return CMD_WARNING;</span><br><span style="color: hsl(120, 100%, 40%);">+      "bsc-msc-lost-text .TEXT", LEGACY_STR LEGACY_STR);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     osmo_talloc_replace_string(osmo_bsc_data(vty), &data->ussd_msc_lost_txt, str);</span><br><span style="color: hsl(0, 100%, 40%);">-   talloc_free(str);</span><br><span style="color: hsl(0, 100%, 40%);">-       return CMD_SUCCESS;</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%);">-DEFUN(cfg_net_msc_no_lost_ussd,</span><br><span style="color: hsl(120, 100%, 40%);">+ALIAS_DEPRECATED(deprecated_no_ussd_text,</span><br><span>       cfg_net_msc_no_lost_ussd_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-      "no bsc-msc-lost-text",</span><br><span style="color: hsl(0, 100%, 40%);">-      NO_STR "Clear the USSD notification to be sent on MSC connection loss\n")</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-  struct bsc_msc_data *data = bsc_msc_data(vty);</span><br><span style="color: hsl(120, 100%, 40%);">+      "no bsc-msc-lost-text", NO_STR LEGACY_STR);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- talloc_free(data->ussd_msc_lost_txt);</span><br><span style="color: hsl(0, 100%, 40%);">-        data->ussd_msc_lost_txt = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- return CMD_SUCCESS;</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%);">-DEFUN(cfg_net_msc_grace_ussd,</span><br><span style="color: hsl(120, 100%, 40%);">+ALIAS_DEPRECATED(deprecated_ussd_text,</span><br><span>       cfg_net_msc_grace_ussd_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-      "bsc-grace-text .TEXT",</span><br><span style="color: hsl(0, 100%, 40%);">-      "Set the USSD notification to be sent when the MSC has entered the grace period\n" "Text to be sent\n")</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- struct bsc_msc_data *data = bsc_msc_data(vty);</span><br><span style="color: hsl(0, 100%, 40%);">-  char *str = argv_concat(argv, argc, 0);</span><br><span style="color: hsl(0, 100%, 40%);">- if (!str)</span><br><span style="color: hsl(0, 100%, 40%);">-               return CMD_WARNING;</span><br><span style="color: hsl(120, 100%, 40%);">+      "bsc-grace-text .TEXT", LEGACY_STR LEGACY_STR);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        osmo_talloc_replace_string(osmo_bsc_data(vty), &data->ussd_grace_txt, str);</span><br><span style="color: hsl(0, 100%, 40%);">-      talloc_free(str);</span><br><span style="color: hsl(0, 100%, 40%);">-       return CMD_SUCCESS;</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%);">-DEFUN(cfg_net_msc_no_grace_ussd,</span><br><span style="color: hsl(120, 100%, 40%);">+ALIAS_DEPRECATED(deprecated_no_ussd_text,</span><br><span>       cfg_net_msc_no_grace_ussd_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-      "no bsc-grace-text",</span><br><span style="color: hsl(0, 100%, 40%);">-      NO_STR "Clear the USSD notification to be sent when the MSC has entered the grace period\n")</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-        struct bsc_msc_data *data = bsc_msc_data(vty);</span><br><span style="color: hsl(120, 100%, 40%);">+      "no bsc-grace-text", NO_STR LEGACY_STR);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    talloc_free(data->ussd_grace_txt);</span><br><span style="color: hsl(0, 100%, 40%);">-   data->ussd_grace_txt = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- return CMD_SUCCESS;</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%);">-DEFUN(cfg_net_bsc_missing_msc_ussd,</span><br><span style="color: hsl(120, 100%, 40%);">+ALIAS_DEPRECATED(deprecated_ussd_text,</span><br><span>       cfg_net_bsc_missing_msc_ussd_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-      "missing-msc-text .TEXT",</span><br><span style="color: hsl(0, 100%, 40%);">-      "Set the USSD notification to be send when a MSC has not been found.\n" "Text to be sent\n")</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-      struct osmo_bsc_data *data = osmo_bsc_data(vty);</span><br><span style="color: hsl(0, 100%, 40%);">-        char *txt = argv_concat(argv, argc, 0);</span><br><span style="color: hsl(0, 100%, 40%);">- if (!txt)</span><br><span style="color: hsl(0, 100%, 40%);">-               return CMD_WARNING;</span><br><span style="color: hsl(120, 100%, 40%);">+      "missing-msc-text .TEXT", LEGACY_STR LEGACY_STR);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      osmo_talloc_replace_string(data, &data->ussd_no_msc_txt, txt);</span><br><span style="color: hsl(0, 100%, 40%);">-   talloc_free(txt);</span><br><span style="color: hsl(0, 100%, 40%);">-       return CMD_SUCCESS;</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%);">-DEFUN(cfg_net_bsc_no_missing_msc_text,</span><br><span style="color: hsl(120, 100%, 40%);">+ALIAS_DEPRECATED(deprecated_no_ussd_text,</span><br><span>       cfg_net_bsc_no_missing_msc_text_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-      "no missing-msc-text",</span><br><span style="color: hsl(0, 100%, 40%);">-      NO_STR "Clear the USSD notification to be send when a MSC has not been found.\n")</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-     struct osmo_bsc_data *data = osmo_bsc_data(vty);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        talloc_free(data->ussd_no_msc_txt);</span><br><span style="color: hsl(0, 100%, 40%);">-  data->ussd_no_msc_txt = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   return CMD_SUCCESS;</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%);">+      "no missing-msc-text", NO_STR LEGACY_STR);</span><br><span> </span><br><span> DEFUN(cfg_net_msc_type,</span><br><span>       cfg_net_msc_type_cmd,</span><br><span>@@ -670,21 +579,10 @@</span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_net_bsc_mid_call_text,</span><br><span style="color: hsl(120, 100%, 40%);">+ALIAS_DEPRECATED(deprecated_ussd_text,</span><br><span>       cfg_net_bsc_mid_call_text_cmd,</span><br><span>       "mid-call-text .TEXT",</span><br><span style="color: hsl(0, 100%, 40%);">-      "Set the USSD notification sent to running calls when switching from Grace to Off.\n"</span><br><span style="color: hsl(0, 100%, 40%);">-      "Text to be sent\n")</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-        struct osmo_bsc_data *data = osmo_bsc_data(vty);</span><br><span style="color: hsl(0, 100%, 40%);">-        char *txt = argv_concat(argv, argc, 0);</span><br><span style="color: hsl(0, 100%, 40%);">- if (!txt)</span><br><span style="color: hsl(0, 100%, 40%);">-               return CMD_WARNING;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     osmo_talloc_replace_string(data, &data->mid_call_txt, txt);</span><br><span style="color: hsl(0, 100%, 40%);">-      talloc_free(txt);</span><br><span style="color: hsl(0, 100%, 40%);">-       return CMD_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(120, 100%, 40%);">+      LEGACY_STR LEGACY_STR);</span><br><span> </span><br><span> DEFUN(cfg_net_bsc_mid_call_timeout,</span><br><span>       cfg_net_bsc_mid_call_timeout_cmd,</span><br><span>@@ -866,8 +764,6 @@</span><br><span>      return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#define LEGACY_STR "This command has no effect, it is kept to support legacy config files\n"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> DEFUN_DEPRECATED(cfg_net_msc_ping_time, cfg_net_msc_ping_time_cmd,</span><br><span>       "timeout-ping ARG", LEGACY_STR "-\n")</span><br><span> {</span><br><span>diff --git a/tests/bsc/bsc_test.c b/tests/bsc/bsc_test.c</span><br><span>index 5d87118..164f78f 100644</span><br><span>--- a/tests/bsc/bsc_test.c</span><br><span>+++ b/tests/bsc/bsc_test.c</span><br><span>@@ -29,7 +29,6 @@</span><br><span> </span><br><span> #include <osmocom/bsc/osmo_bsc.h></span><br><span> #include <osmocom/bsc/bsc_msc_data.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/gsm_04_80.h></span><br><span> </span><br><span> #include <osmocom/core/application.h></span><br><span> #include <osmocom/core/backtrace.h></span><br><span>diff --git a/tests/codec_pref/codec_pref_test.c b/tests/codec_pref/codec_pref_test.c</span><br><span>index 8bc31cd..f163f35 100644</span><br><span>--- a/tests/codec_pref/codec_pref_test.c</span><br><span>+++ b/tests/codec_pref/codec_pref_test.c</span><br><span>@@ -22,7 +22,6 @@</span><br><span> #include <osmocom/bsc/gsm_data.h></span><br><span> #include <osmocom/bsc/osmo_bsc.h></span><br><span> #include <osmocom/bsc/bsc_msc_data.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bsc/gsm_04_80.h></span><br><span> #include <osmocom/core/application.h></span><br><span> #include <osmocom/bsc/codec_pref.h></span><br><span> </span><br><span>diff --git a/tests/handover/Makefile.am b/tests/handover/Makefile.am</span><br><span>index 901d523..84865a0 100644</span><br><span>--- a/tests/handover/Makefile.am</span><br><span>+++ b/tests/handover/Makefile.am</span><br><span>@@ -63,7 +63,6 @@</span><br><span>       $(top_builddir)/src/osmo-bsc/chan_alloc.o \</span><br><span>  $(top_builddir)/src/osmo-bsc/codec_pref.o \</span><br><span>  $(top_builddir)/src/osmo-bsc/gsm_04_08_rr.o \</span><br><span style="color: hsl(0, 100%, 40%);">-   $(top_builddir)/src/osmo-bsc/gsm_04_80_utils.o \</span><br><span>     $(top_builddir)/src/osmo-bsc/gsm_data.o \</span><br><span>    $(top_builddir)/src/osmo-bsc/handover_cfg.o \</span><br><span>        $(top_builddir)/src/osmo-bsc/handover_decision.o \</span><br><span>diff --git a/tests/vty_test_runner.py b/tests/vty_test_runner.py</span><br><span>index a99bf4b..c96965c 100755</span><br><span>--- a/tests/vty_test_runner.py</span><br><span>+++ b/tests/vty_test_runner.py</span><br><span>@@ -135,68 +135,6 @@</span><br><span>         self.assertTrue(self.vty.verify("exit", ['']))</span><br><span>         self.assertTrue(self.vty.node() is None)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    def testUssdNotificationsMsc(self):</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.enable()</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.command("configure terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.command("msc")</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        # Test invalid input</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.verify("bsc-msc-lost-text", ['% Command incomplete.'])</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.verify("bsc-welcome-text", ['% Command incomplete.'])</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.verify("bsc-grace-text", ['% Command incomplete.'])</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        # Enable USSD notifications</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.verify("bsc-msc-lost-text MSC disconnected", [''])</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.verify("bsc-welcome-text Hello MS", [''])</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.verify("bsc-grace-text In grace period", [''])</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        # Verify settings</span><br><span style="color: hsl(0, 100%, 40%);">-        res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertTrue(res.find('bsc-msc-lost-text MSC disconnected') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEqual(res.find('no bsc-msc-lost-text'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertTrue(res.find('bsc-welcome-text Hello MS') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEqual(res.find('no bsc-welcome-text'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertTrue(res.find('bsc-grace-text In grace period') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEqual(res.find('no bsc-grace-text'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        # Now disable it..</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.verify("no bsc-msc-lost-text", [''])</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.verify("no bsc-welcome-text", [''])</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.verify("no bsc-grace-text", [''])</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        # Verify settings</span><br><span style="color: hsl(0, 100%, 40%);">-        res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEqual(res.find('bsc-msc-lost-text MSC disconnected'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertTrue(res.find('no bsc-msc-lost-text') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEqual(res.find('bsc-welcome-text Hello MS'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertTrue(res.find('no bsc-welcome-text') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEqual(res.find('bsc-grace-text In grace period'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertTrue(res.find('no bsc-grace-text') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    def testUssdNotificationsBsc(self):</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.enable()</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.command("configure terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.command("bsc")</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        # Test invalid input</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.verify("missing-msc-text", ['% Command incomplete.'])</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        # Enable USSD notifications</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.verify("missing-msc-text No MSC found", [''])</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        # Verify settings</span><br><span style="color: hsl(0, 100%, 40%);">-        res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertTrue(res.find('missing-msc-text No MSC found') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEqual(res.find('no missing-msc-text'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        # Now disable it..</span><br><span style="color: hsl(0, 100%, 40%);">-        self.vty.verify("no missing-msc-text", [''])</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        # Verify settings</span><br><span style="color: hsl(0, 100%, 40%);">-        res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEqual(res.find('missing-msc-text No MSC found'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertTrue(res.find('no missing-msc-text') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>     def testNetworkTimezone(self):</span><br><span>         self.vty.enable()</span><br><span>         self.vty.verify("configure terminal", [''])</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/18498">change 18498</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/+/18498"/><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: Iaef6f2e01b4dbf2bff0a0bb50d6851f50ae79f6a </div>
<div style="display:none"> Gerrit-Change-Number: 18498 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>