fixeria submitted this change.
mobile: add MNCC socket path to settings
Previously the MNCC socket path was generated automatically,
using concatenation of the '/tmp/ms_mncc_' prefix and MS name.
Let's allow the user to specify this manually, keeping the same
naming generation method for default value.
Change-Id: I643356ac579bc5e765f668265ec803b22a73739c
Related: OS#3400
---
M doc/examples/mobile/default.cfg
M doc/examples/mobile/multi_ms.cfg
M src/host/layer23/include/osmocom/bb/mobile/settings.h
M src/host/layer23/src/mobile/app_mobile.c
M src/host/layer23/src/mobile/settings.c
M src/host/layer23/src/mobile/vty_interface.c
6 files changed, 33 insertions(+), 6 deletions(-)
diff --git a/doc/examples/mobile/default.cfg b/doc/examples/mobile/default.cfg
index f14e900..d78bef5 100644
--- a/doc/examples/mobile/default.cfg
+++ b/doc/examples/mobile/default.cfg
@@ -14,6 +14,7 @@
ms 1
layer2-socket /tmp/osmocom_l2
sap-socket /tmp/osmocom_sap
+ mncc-socket /tmp/ms_mncc_1
sim reader
network-selection-mode auto
imei 000000000000000 0
diff --git a/doc/examples/mobile/multi_ms.cfg b/doc/examples/mobile/multi_ms.cfg
index c72817f..4ccdb10 100644
--- a/doc/examples/mobile/multi_ms.cfg
+++ b/doc/examples/mobile/multi_ms.cfg
@@ -14,6 +14,7 @@
ms one
layer2-socket /tmp/osmocom_l2.one
sap-socket /tmp/osmocom_sap.one
+ mncc-socket /tmp/ms_mncc_one
sim reader
network-selection-mode auto
imei 000000000000000 0
@@ -66,6 +67,7 @@
ms two
layer2-socket /tmp/osmocom_l2.two
sap-socket /tmp/osmocom_sap.two
+ mncc-socket /tmp/ms_mncc_two
sim reader
network-selection-mode auto
imei 000000000000000 0
diff --git a/src/host/layer23/include/osmocom/bb/mobile/settings.h b/src/host/layer23/include/osmocom/bb/mobile/settings.h
index 57f23ee..6f4f59c 100644
--- a/src/host/layer23/include/osmocom/bb/mobile/settings.h
+++ b/src/host/layer23/include/osmocom/bb/mobile/settings.h
@@ -22,6 +22,7 @@
struct gsm_settings {
char layer2_socket_path[128];
char sap_socket_path[128];
+ char mncc_socket_path[128];
/* Audio settings */
struct audio_settings audio;
diff --git a/src/host/layer23/src/mobile/app_mobile.c b/src/host/layer23/src/mobile/app_mobile.c
index 7b28bb4..5016582 100644
--- a/src/host/layer23/src/mobile/app_mobile.c
+++ b/src/host/layer23/src/mobile/app_mobile.c
@@ -269,6 +269,14 @@
*other_name = tmp->name;
return -2;
}
+ if (!strcmp(ms->settings.mncc_socket_path,
+ tmp->settings.mncc_socket_path)) {
+ LOGP(DMOB, LOGL_ERROR, "Cannot start MS '%s', because MS '%s' "
+ "is using the same mncc-socket.\nPlease shutdown "
+ "MS '%s' first.\n", ms->name, tmp->name, tmp->name);
+ *other_name = tmp->name;
+ return -3;
+ }
}
rc = mobile_init(ms);
@@ -291,7 +299,6 @@
struct osmocom_ms *mobile_new(char *name)
{
static struct osmocom_ms *ms;
- char *mncc_name;
ms = talloc_zero(l23_ctx, struct osmocom_ms);
if (!ms) {
@@ -313,12 +320,8 @@
mobile_set_shutdown(ms, MS_SHUTDOWN_COMPL);
if (mncc_recv_app) {
- mncc_name = talloc_asprintf(ms, "/tmp/ms_mncc_%s", ms->name);
-
ms->mncc_entity.mncc_recv = mncc_recv_app;
- ms->mncc_entity.sock_state = mncc_sock_init(ms, mncc_name);
-
- talloc_free(mncc_name);
+ ms->mncc_entity.sock_state = mncc_sock_init(ms, ms->settings.mncc_socket_path);
} else if (ms->settings.ch_cap == GSM_CAP_SDCCH)
ms->mncc_entity.mncc_recv = mncc_recv_dummy;
else
diff --git a/src/host/layer23/src/mobile/settings.c b/src/host/layer23/src/mobile/settings.c
index 23da620..769fad6 100644
--- a/src/host/layer23/src/mobile/settings.c
+++ b/src/host/layer23/src/mobile/settings.c
@@ -28,6 +28,7 @@
static char *layer2_socket_path = "/tmp/osmocom_l2";
static char *sap_socket_path = "/tmp/osmocom_sap";
+static char *mncc_socket_path = "/tmp/ms_mncc";
int gsm_settings_init(struct osmocom_ms *ms)
{
@@ -37,6 +38,10 @@
strcpy(set->layer2_socket_path, layer2_socket_path);
strcpy(set->sap_socket_path, sap_socket_path);
+ /* Compose MNCC socket path using MS name */
+ snprintf(set->mncc_socket_path, sizeof(set->mncc_socket_path) - 1,
+ "%s_%s", mncc_socket_path, ms->name);
+
/* Audio settings: drop TCH frames by default */
set->audio.io_handler = AUDIO_IOH_NONE;
diff --git a/src/host/layer23/src/mobile/vty_interface.c b/src/host/layer23/src/mobile/vty_interface.c
index d6f6cd1..7c757a6 100644
--- a/src/host/layer23/src/mobile/vty_interface.c
+++ b/src/host/layer23/src/mobile/vty_interface.c
@@ -1324,6 +1324,7 @@
vty_out(vty, " layer2-socket %s%s", set->layer2_socket_path,
VTY_NEWLINE);
vty_out(vty, " sap-socket %s%s", set->sap_socket_path, VTY_NEWLINE);
+ vty_out(vty, " mncc-socket %s%s", set->mncc_socket_path, VTY_NEWLINE);
switch(set->sim_type) {
case GSM_SIM_TYPE_NONE:
vty_out(vty, " sim none%s", VTY_NEWLINE);
@@ -1604,6 +1605,19 @@
return CMD_SUCCESS;
}
+DEFUN(cfg_ms_mncc, cfg_ms_mncc_cmd, "mncc-socket PATH",
+ "Define socket path for the MNCC interface\n"
+ "UNIX socket path (default '/tmp/ms_mncc_' + MS_NAME)")
+{
+ struct osmocom_ms *ms = vty->index;
+ struct gsm_settings *set = &ms->settings;
+
+ OSMO_STRLCPY_ARRAY(set->mncc_socket_path, argv[0]);
+
+ vty_restart(vty, ms);
+ return CMD_SUCCESS;
+}
+
DEFUN(cfg_ms_sim, cfg_ms_sim_cmd, "sim (none|reader|test|sap)",
"Set SIM card to attach when powering on\nAttach no SIM\n"
"Attach SIM from reader\nAttach build in test SIM\n"
@@ -2933,6 +2947,7 @@
install_element(MS_NODE, &cfg_ms_show_this_cmd);
install_element(MS_NODE, &cfg_ms_layer2_cmd);
install_element(MS_NODE, &cfg_ms_sap_cmd);
+ install_element(MS_NODE, &cfg_ms_mncc_cmd);
install_element(MS_NODE, &cfg_ms_sim_cmd);
install_element(MS_NODE, &cfg_ms_mode_cmd);
install_element(MS_NODE, &cfg_ms_imei_cmd);
To view, visit change 30325. To unsubscribe, or for help writing mail filters, visit settings.