diff options
author | Stefan Sperling <ssperling@sysmocom.de> | 2018-12-06 12:06:59 +0100 |
---|---|---|
committer | Stefan Sperling <stsp@stsp.name> | 2018-12-11 13:08:00 +0000 |
commit | afa030d6f912d0ff39063128e470e71fbdf758e3 (patch) | |
tree | c2cda51502037c2861f3704648af5af10540d114 /src/libmsc | |
parent | aa14bac370c625855ffce483aa337287340cfd71 (diff) |
make gsup ipa name configurable in osmo-msc.cfg
Add a 'ipa-name' VTY command which overrides the default IPA name
used by the MSC. This is a prerequisite for inter-MSC handover.
Related: OS#3355
Change-Id: I317d6c59f77e92fbb2b875a83dc0ec2fa5cb6006
Diffstat (limited to 'src/libmsc')
-rw-r--r-- | src/libmsc/gsm_04_08.c | 10 | ||||
-rw-r--r-- | src/libmsc/msc_vty.c | 16 |
2 files changed, 24 insertions, 2 deletions
diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index 95c31831c..7fe2c5037 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -1828,9 +1828,15 @@ int msc_vlr_alloc(struct gsm_network *net) /* Launch the VLR, i.e. its GSUP connection */ int msc_vlr_start(struct gsm_network *net) { + struct ipaccess_unit *ipa_dev; + OSMO_ASSERT(net->vlr); - return vlr_start("MSC", net->vlr, net->gsup_server_addr_str, - net->gsup_server_port); + + ipa_dev = talloc_zero(net->vlr, struct ipaccess_unit); + ipa_dev->unit_name = "MSC"; + ipa_dev->serno = net->msc_ipa_name; /* NULL unless configured via VTY */ + + return vlr_start(ipa_dev, net->vlr, net->gsup_server_addr_str, net->gsup_server_port); } struct msgb *gsm48_create_mm_serv_rej(enum gsm48_reject_value value) diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c index e1d1b4020..06e11394a 100644 --- a/src/libmsc/msc_vty.c +++ b/src/libmsc/msc_vty.c @@ -458,6 +458,18 @@ DEFUN(cfg_msc_emergency_msisdn, cfg_msc_emergency_msisdn_cmd, return CMD_SUCCESS; } +DEFUN(cfg_msc_ipa_name, + cfg_msc_ipa_name_cmd, + "ipa-name NAME", + "Set the IPA name of this MSC\n" + "A unique name for this MSC. For example: PLMN + redundancy server number: MSC-901-70-0. " + "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") +{ + gsmnet->msc_ipa_name = talloc_strdup(gsmnet, argv[0]); + return CMD_SUCCESS; +} + static int config_write_msc(struct vty *vty) { vty_out(vty, "msc%s", VTY_NEWLINE); @@ -491,6 +503,9 @@ static int config_write_msc(struct vty *vty) gsmnet->emergency.route_to_msisdn, VTY_NEWLINE); } + if (gsmnet->msc_ipa_name) + vty_out(vty, " ipa-name %s%s", gsmnet->msc_ipa_name, VTY_NEWLINE); + mgcp_client_config_write(vty, " "); #ifdef BUILD_IU ranap_iu_vty_config_write(vty, " "); @@ -1483,6 +1498,7 @@ void msc_vty_init(struct gsm_network *msc_network) install_element(MSC_NODE, &cfg_msc_cs7_instance_iu_cmd); install_element(MSC_NODE, &cfg_msc_paging_response_timer_cmd); install_element(MSC_NODE, &cfg_msc_emergency_msisdn_cmd); + install_element(MSC_NODE, &cfg_msc_ipa_name_cmd); mgcp_client_vty_init(msc_network, MSC_NODE, &msc_network->mgw.conf); #ifdef BUILD_IU |