From 6c548dc615543a8b33306185f111329ffb31d6d0 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Tue, 16 Apr 2019 20:01:47 +0200 Subject: vty: Add option to enable osmux towards MSC Change-Id: I30c485c022f2d55e0a004f69b2503da7f91ecb74 --- include/osmocom/bsc/Makefile.am | 1 + include/osmocom/bsc/bsc_msc_data.h | 4 ++++ include/osmocom/bsc/osmux.h | 7 +++++++ src/osmo-bsc/osmo_bsc_vty.c | 24 ++++++++++++++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 include/osmocom/bsc/osmux.h 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 #include @@ -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 #include #include +#include #include #include @@ -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; } -- cgit v1.2.3