fixeria has submitted this change. ( 
https://gerrit.osmocom.org/c/osmocom-bb/+/30325 )

Change subject: mobile: add MNCC socket path to settings
......................................................................

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(-)

Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, but someone else must approve
  msuraev: Looks good to me, but someone else must approve
  fixeria: Looks good to me, approved



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 https://gerrit.osmocom.org/c/osmocom-bb/+/30325
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Change-Id: I643356ac579bc5e765f668265ec803b22a73739c
Gerrit-Change-Number: 30325
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanits...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanits...@sysmocom.de>
Gerrit-Reviewer: laforge <lafo...@osmocom.org>
Gerrit-Reviewer: msuraev <msur...@sysmocom.de>
Gerrit-MessageType: merged

Reply via email to