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 | |
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')
-rw-r--r-- | src/libmsc/gsm_04_08.c | 10 | ||||
-rw-r--r-- | src/libmsc/msc_vty.c | 16 | ||||
-rw-r--r-- | src/libvlr/vlr.c | 11 |
3 files changed, 30 insertions, 7 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 diff --git a/src/libvlr/vlr.c b/src/libvlr/vlr.c index 336991482..975b240ec 100644 --- a/src/libvlr/vlr.c +++ b/src/libvlr/vlr.c @@ -27,6 +27,7 @@ #include <osmocom/gsm/gsup.h> #include <osmocom/gsm/apn.h> #include <osmocom/gsm/gsm48.h> +#include <osmocom/gsm/ipa.h> #include <osmocom/msc/gsm_subscriber.h> #include <osmocom/gsupclient/gsup_client.h> #include <osmocom/msc/vlr.h> @@ -1212,15 +1213,15 @@ struct vlr_instance *vlr_alloc(void *ctx, const struct vlr_ops *ops) return vlr; } -int vlr_start(const char *gsup_unit_name, struct vlr_instance *vlr, +int vlr_start(struct ipaccess_unit *ipa_dev, struct vlr_instance *vlr, const char *gsup_server_addr_str, uint16_t gsup_server_port) { OSMO_ASSERT(vlr); - vlr->gsup_client = osmo_gsup_client_create(vlr, gsup_unit_name, - gsup_server_addr_str, - gsup_server_port, - &vlr_gsupc_read_cb, NULL); + vlr->gsup_client = osmo_gsup_client_create2(vlr, ipa_dev, + gsup_server_addr_str, + gsup_server_port, + &vlr_gsupc_read_cb, NULL); if (!vlr->gsup_client) return -ENOMEM; vlr->gsup_client->data = vlr; |