aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Sperling <ssperling@sysmocom.de>2018-12-13 10:16:49 +0100
committerStefan Sperling <ssperling@sysmocom.de>2018-12-13 10:16:49 +0100
commit1051c4208834c22d344dd92d25addfd8e5d95993 (patch)
tree9ca991e0edd65eb60031f3179ea40debd239ff39
parent85cb2538f4cb4c6759824dae546564562ff3888e (diff)
require 'ipa-name' option to be set via config file
The 'ipa-name' option can now only be set via the configuration file because changing the IPA name at run-time conflicts with active GSUP connections and routes configured in the HLR. The osmo-msc program must be restarted if its IPA name needs to change. Change-Id: I6cff91793e646e0396e8f1bc87d0f52709e5f12a Related: OS#3355
-rw-r--r--include/osmocom/msc/vty.h2
-rw-r--r--src/libmsc/msc_vty.c6
-rw-r--r--src/osmo-msc/msc_main.c5
3 files changed, 13 insertions, 0 deletions
diff --git a/include/osmocom/msc/vty.h b/include/osmocom/msc/vty.h
index 6a55df776..60a36d7ae 100644
--- a/include/osmocom/msc/vty.h
+++ b/include/osmocom/msc/vty.h
@@ -31,4 +31,6 @@ void msc_vty_init(struct gsm_network *msc_network);
struct gsm_network *gsmnet_from_vty(struct vty *vty);
+extern bool msc_parsing_config_file;
+
#endif
diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c
index 06e11394a..87adc82de 100644
--- a/src/libmsc/msc_vty.c
+++ b/src/libmsc/msc_vty.c
@@ -466,6 +466,12 @@ DEFUN(cfg_msc_ipa_name,
"This name is used for GSUP routing and must be set if more than one MSC is connected to the HLR. "
"The default is 'MSC-00-00-00-00-00-00'.\n")
{
+ if (!msc_parsing_config_file) {
+ vty_out(vty, "The IPA name cannot be changed at run-time; "
+ "It can only be set in the configuraton file.%s", VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
gsmnet->msc_ipa_name = talloc_strdup(gsmnet, argv[0]);
return CMD_SUCCESS;
}
diff --git a/src/osmo-msc/msc_main.c b/src/osmo-msc/msc_main.c
index 8500b9722..ce6ae380f 100644
--- a/src/osmo-msc/msc_main.c
+++ b/src/osmo-msc/msc_main.c
@@ -24,6 +24,7 @@
*
*/
+#include <stdbool.h>
#include <unistd.h>
#include <time.h>
#include <errno.h>
@@ -514,6 +515,8 @@ extern void *tall_gsms_ctx;
extern void *tall_call_ctx;
extern void *tall_trans_ctx;
+bool msc_parsing_config_file = false;
+
int main(int argc, char **argv)
{
int rc;
@@ -566,7 +569,9 @@ int main(int argc, char **argv)
return -1;
#endif
+ msc_parsing_config_file = true;
rc = vty_read_config_file(msc_cmdline_config.config_file, NULL);
+ msc_parsing_config_file = false;
if (rc < 0) {
LOGP(DMSC, LOGL_FATAL, "Failed to parse the config file: '%s'\n",
msc_cmdline_config.config_file);