Change in osmo-bsc[master]: LCLS: add VTY config to enable/disable LCLS on per-MSC basis

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Sun Jun 3 10:26:59 UTC 2018


Harald Welte has uploaded this change for review. ( https://gerrit.osmocom.org/9426


Change subject: LCLS: add VTY config to enable/disable LCLS on per-MSC basis
......................................................................

LCLS: add VTY config to enable/disable LCLS on per-MSC basis

The user might not want to enable LCLS support for administrative
reasons.  So let's keep it disabled by default, until somebody
explicitly enables it with "lcls-mode mgw-loop".

In the future, we may want to introduce a "lcls-mode bts-loop" where we
don't loop at the BSC-colocated MGW, but where we instruct the BTSs to
feed the RTP directly to each other.  This would require a
falt/transparent IP routing between the BTSs in the RAN.

Change-Id: Ied7985056c8cd182bf16119007a08cc5be14459b
Related: OS#1602
---
M include/osmocom/bsc/bsc_msc_data.h
M src/libbsc/osmo_bsc_lcls.c
M src/osmo-bsc/osmo_bsc_vty.c
3 files changed, 34 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/26/9426/1

diff --git a/include/osmocom/bsc/bsc_msc_data.h b/include/osmocom/bsc/bsc_msc_data.h
index baa58e7..7235fba 100644
--- a/include/osmocom/bsc/bsc_msc_data.h
+++ b/include/osmocom/bsc/bsc_msc_data.h
@@ -58,6 +58,12 @@
 	MSC_CON_TYPE_LOCAL,
 };
 
+enum bsc_lcls_mode {
+	BSC_LCLS_MODE_DISABLED,
+	BSC_LCLS_MODE_MGW_LOOP,
+	/* we may later introduce BTS_LOOP here: direct RTP between BTSs */
+};
+
 /*! /brief Information on a remote MSC for libbsc.
  */
 struct bsc_msc_data {
@@ -85,6 +91,7 @@
 	struct gsm48_multi_rate_conf amr_conf;
 	struct gsm_audio_support **audio_support;
 	int audio_length;
+	enum bsc_lcls_mode lcls_mode;
 
 	/* ussd welcome text */
 	char *ussd_welcome_txt;
diff --git a/src/libbsc/osmo_bsc_lcls.c b/src/libbsc/osmo_bsc_lcls.c
index e32376d..c2b0760 100644
--- a/src/libbsc/osmo_bsc_lcls.c
+++ b/src/libbsc/osmo_bsc_lcls.c
@@ -286,6 +286,12 @@
 	/* we're just starting and cannot yet have a correlated call */
 	OSMO_ASSERT(conn->lcls.other == NULL);
 
+	if (conn->sccp.msc->lcls_mode == BSC_LCLS_MODE_DISABLED) {
+		LOGPFSML(fi, LOGL_DEBUG, "LCLS disabled for this MSC, ignoring %s\n",
+			 osmo_fsm_event_name(fi->fsm, event));
+		return;
+	}
+
 	/* If there's no GCR set, we can never leave this state */
 	if (conn->lcls.global_call_ref_len == 0) {
 		LOGPFSML(fi, LOGL_NOTICE, "No GCR set, ignoring %s\n",
diff --git a/src/osmo-bsc/osmo_bsc_vty.c b/src/osmo-bsc/osmo_bsc_vty.c
index 34080c0..e6df7b3 100644
--- a/src/osmo-bsc/osmo_bsc_vty.c
+++ b/src/osmo-bsc/osmo_bsc_vty.c
@@ -38,6 +38,12 @@
 
 #define IPA_STR "IP.ACCESS specific\n"
 
+static const struct value_string bsc_lcls_mode_names[] = {
+	{ BSC_LCLS_MODE_DISABLED,	"disabled" },
+	{ BSC_LCLS_MODE_MGW_LOOP,	"mgw-loop" },
+	{ 0, NULL }
+};
+
 static struct osmo_bsc_data *osmo_bsc_data(struct vty *vty)
 {
 	return bsc_gsmnet->bsc_data;
@@ -175,6 +181,8 @@
 			msc->a.msc_addr_name, VTY_NEWLINE);
 	}
 	vty_out(vty, " asp-protocol %s%s", osmo_ss7_asp_protocol_name(msc->a.asp_proto), VTY_NEWLINE);
+	vty_out(vty, " lcls-mode %s%s", get_value_string(bsc_lcls_mode_names, msc->lcls_mode),
+		VTY_NEWLINE);
 
 	/* write MGW configuration */
 	mgcp_client_config_write(vty, " ");
@@ -628,6 +636,18 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN(cfg_net_msc_lcls_mode,
+      cfg_net_msc_lcls_mode_cmd,
+      "lcls-mode (disabled|mgw-loop)",
+      "Configure 3GPP LCLS (Local Call, Local Switch)\n"
+      "Disable LCLS for all calls of this MSC\n"
+      "Enable LCLS with loopping traffic in MGW\n")
+{
+	struct bsc_msc_data *data = bsc_msc_data(vty);
+	data->lcls_mode = get_string_value(bsc_lcls_mode_names, argv[0]);
+	return CMD_SUCCESS;
+}
+
 DEFUN(cfg_net_bsc_mid_call_text,
       cfg_net_bsc_mid_call_text_cmd,
       "mid-call-text .TEXT",
@@ -903,6 +923,7 @@
 	install_element(MSC_NODE, &cfg_net_msc_amr_5_90_cmd);
 	install_element(MSC_NODE, &cfg_net_msc_amr_5_15_cmd);
 	install_element(MSC_NODE, &cfg_net_msc_amr_4_75_cmd);
+	install_element(MSC_NODE, &cfg_net_msc_lcls_mode_cmd);
 	install_element(MSC_NODE, &cfg_msc_acc_lst_name_cmd);
 	install_element(MSC_NODE, &cfg_msc_no_acc_lst_name_cmd);
 	install_element(MSC_NODE, &cfg_msc_cs7_bsc_addr_cmd);

-- 
To view, visit https://gerrit.osmocom.org/9426
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ied7985056c8cd182bf16119007a08cc5be14459b
Gerrit-Change-Number: 9426
Gerrit-PatchSet: 1
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180603/8e00e02b/attachment.htm>


More information about the gerrit-log mailing list