aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/bsc/Makefile.am1
-rw-r--r--include/osmocom/bsc/bsc_msc_data.h4
-rw-r--r--include/osmocom/bsc/osmux.h7
-rw-r--r--src/osmo-bsc/osmo_bsc_vty.c24
4 files changed, 36 insertions, 0 deletions
diff --git a/include/osmocom/bsc/Makefile.am b/include/osmocom/bsc/Makefile.am
index 89323c0f2..f44e7fc86 100644
--- a/include/osmocom/bsc/Makefile.am
+++ b/include/osmocom/bsc/Makefile.am
@@ -41,6 +41,7 @@ noinst_HEADERS = \
osmo_bsc_rf.h \
osmo_bsc_sigtran.h \
bsc_msc_data.h \
+ osmux.h \
paging.h \
pcu_if.h \
pcuif_proto.h \
diff --git a/include/osmocom/bsc/bsc_msc_data.h b/include/osmocom/bsc/bsc_msc_data.h
index debd24087..271bdd4b7 100644
--- a/include/osmocom/bsc/bsc_msc_data.h
+++ b/include/osmocom/bsc/bsc_msc_data.h
@@ -30,6 +30,7 @@
#include "debug.h"
#include "osmo_bsc_lcls.h"
+#include "osmux.h"
#include <osmocom/core/timer.h>
#include <osmocom/gsm/protocol/gsm_04_08.h>
@@ -129,6 +130,9 @@ struct bsc_msc_data {
uint32_t x_osmo_ign;
bool x_osmo_ign_configured;
+
+ /* Whether we want to use Osmux against this MSC. Controlled via VTY */
+ enum osmux_usage use_osmux;
};
/*
diff --git a/include/osmocom/bsc/osmux.h b/include/osmocom/bsc/osmux.h
new file mode 100644
index 000000000..aa3d1ab85
--- /dev/null
+++ b/include/osmocom/bsc/osmux.h
@@ -0,0 +1,7 @@
+#pragma once
+
+enum osmux_usage {
+ OSMUX_USAGE_OFF = 0,
+ OSMUX_USAGE_ON = 1,
+ OSMUX_USAGE_ONLY = 2,
+};
diff --git a/src/osmo-bsc/osmo_bsc_vty.c b/src/osmo-bsc/osmo_bsc_vty.c
index 78196cfc4..4591ad19a 100644
--- a/src/osmo-bsc/osmo_bsc_vty.c
+++ b/src/osmo-bsc/osmo_bsc_vty.c
@@ -26,6 +26,7 @@
#include <osmocom/bsc/bsc_subscriber.h>
#include <osmocom/bsc/debug.h>
#include <osmocom/bsc/bsc_msg_filter.h>
+#include <osmocom/bsc/osmux.h>
#include <osmocom/core/talloc.h>
#include <osmocom/gsm/gsm48.h>
@@ -197,6 +198,11 @@ static void write_msc(struct vty *vty, struct bsc_msc_data *msc)
else
vty_out(vty, " mgw x-osmo-ign call-id%s", VTY_NEWLINE);
}
+
+ if (msc->use_osmux != OSMUX_USAGE_OFF) {
+ vty_out(vty, " osmux %s%s", msc->use_osmux == OSMUX_USAGE_ON ? "on" : "only",
+ VTY_NEWLINE);
+ }
}
static int config_write_msc(struct vty *vty)
@@ -708,6 +714,23 @@ DEFUN(cfg_msc_no_mgw_x_osmo_ign,
return CMD_SUCCESS;
}
+#define OSMUX_STR "RTP multiplexing\n"
+DEFUN(cfg_msc_osmux,
+ cfg_msc_osmux_cmd,
+ "osmux (on|off|only)",
+ OSMUX_STR "Enable OSMUX\n" "Disable OSMUX\n" "Only use OSMUX\n")
+{
+ struct bsc_msc_data *msc = bsc_msc_data(vty);
+ if (strcmp(argv[0], "off") == 0)
+ msc->use_osmux = OSMUX_USAGE_OFF;
+ else if (strcmp(argv[0], "on") == 0)
+ msc->use_osmux = OSMUX_USAGE_ON;
+ else if (strcmp(argv[0], "only") == 0)
+ msc->use_osmux = OSMUX_USAGE_ONLY;
+
+ return CMD_SUCCESS;
+}
+
DEFUN(cfg_net_bsc_mid_call_text,
cfg_net_bsc_mid_call_text_cmd,
"mid-call-text .TEXT",
@@ -1045,6 +1068,7 @@ int bsc_vty_init_extra(void)
mgcp_client_vty_init(net, MSC_NODE, net->mgw.conf);
install_element(MSC_NODE, &cfg_msc_mgw_x_osmo_ign_cmd);
install_element(MSC_NODE, &cfg_msc_no_mgw_x_osmo_ign_cmd);
+ install_element(MSC_NODE, &cfg_msc_osmux_cmd);
return 0;
}