diff options
Diffstat (limited to 'src/osmo-bsc')
-rw-r--r-- | src/osmo-bsc/osmo_bsc_sigtran.c | 2 | ||||
-rw-r--r-- | src/osmo-bsc/osmo_bsc_vty.c | 21 |
2 files changed, 21 insertions, 2 deletions
diff --git a/src/osmo-bsc/osmo_bsc_sigtran.c b/src/osmo-bsc/osmo_bsc_sigtran.c index 0646a69a2..b40177eb8 100644 --- a/src/osmo-bsc/osmo_bsc_sigtran.c +++ b/src/osmo-bsc/osmo_bsc_sigtran.c @@ -427,7 +427,7 @@ int osmo_bsc_sigtran_init(struct llist_head *mscs) osmo_sccp_simple_client(NULL, msc_name, msc->a.g_calling_addr.pc, OSMO_SS7_ASP_PROT_M3UA, 0, NULL, M3UA_PORT, "127.0.0.1"); msc->a.sccp_user = - osmo_sccp_user_bind(msc->a.sccp, msc_name, sccp_sap_up, SCCP_SSN_BSSAP); + osmo_sccp_user_bind(msc->a.sccp, msc_name, sccp_sap_up, msc->a.g_calling_addr.ssn); /* Start MSC reset procedure */ msc->a.reset = a_reset_alloc(msc, msc_name, osmo_bsc_sigtran_reset_cb, msc); diff --git a/src/osmo-bsc/osmo_bsc_vty.c b/src/osmo-bsc/osmo_bsc_vty.c index 5d6491047..17764e85b 100644 --- a/src/osmo-bsc/osmo_bsc_vty.c +++ b/src/osmo-bsc/osmo_bsc_vty.c @@ -28,6 +28,7 @@ #include <osmocom/core/talloc.h> #include <osmocom/vty/logging.h> +#include <osmocom/sccp/sccp_types.h> #include <time.h> @@ -717,6 +718,21 @@ DEFUN(cfg_msc_cs7_instance, return CMD_SUCCESS; } +/* Make sure only standard SSN numbers are used. If no ssn number is + * configured, silently apply the default SSN */ +static void enforce_standard_ssn(struct vty *vty, struct osmo_sccp_addr *addr) +{ + if (addr->presence & OSMO_SCCP_ADDR_T_SSN) { + if (addr->ssn != SCCP_SSN_BSSAP) + vty_out(vty, + "setting ssn different from the standard (%u) is not allowd!%s", + SCCP_SSN_BSSAP, VTY_NEWLINE); + } + + addr->presence |= OSMO_SCCP_ADDR_T_SSN; + addr->ssn = SCCP_SSN_BSSAP; +} + DEFUN(cfg_msc_cs7_calling_addr, cfg_msc_cs7_calling_addr_cmd, "calling-addr NAME", @@ -739,8 +755,9 @@ DEFUN(cfg_msc_cs7_calling_addr, return CMD_WARNING; } - memcpy(&msc->a.g_calling_addr, calling_addr, sizeof(*calling_addr)); + enforce_standard_ssn(vty, calling_addr); + memcpy(&msc->a.g_calling_addr, calling_addr, sizeof(*calling_addr)); return CMD_SUCCESS; } @@ -766,6 +783,8 @@ DEFUN(cfg_msc_cs7_called_addr, return CMD_WARNING; } + enforce_standard_ssn(vty, called_addr); + memcpy(&msc->a.g_called_addr, called_addr, sizeof(*called_addr)); return CMD_SUCCESS; |