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