<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/20779">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">remove dead oml_router code<br><br>We originally wanted to intrdouce an OML router which would permit<br>external proceses to implement certain OML MOs.  However, that code<br>was never completed, and all the existing implementation (in three<br>copies) does is to create a unix domain socket and discard what<br>is received there.<br><br>Change-Id: I7fcbbd5d6b64ddc666ca836dc49abb430be0d5cb<br>---<br>M src/osmo-bts-litecell15/Makefile.am<br>M src/osmo-bts-litecell15/main.c<br>D src/osmo-bts-litecell15/oml_router.c<br>D src/osmo-bts-litecell15/oml_router.h<br>M src/osmo-bts-oc2g/Makefile.am<br>M src/osmo-bts-oc2g/main.c<br>D src/osmo-bts-oc2g/oml_router.c<br>D src/osmo-bts-oc2g/oml_router.h<br>M src/osmo-bts-sysmo/Makefile.am<br>M src/osmo-bts-sysmo/main.c<br>D src/osmo-bts-sysmo/oml_router.c<br>D src/osmo-bts-sysmo/oml_router.h<br>12 files changed, 6 insertions(+), 468 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo-bts-litecell15/Makefile.am b/src/osmo-bts-litecell15/Makefile.am</span><br><span>index 0cc124a..bb68efa 100644</span><br><span>--- a/src/osmo-bts-litecell15/Makefile.am</span><br><span>+++ b/src/osmo-bts-litecell15/Makefile.am</span><br><span>@@ -9,12 +9,12 @@</span><br><span> EXTRA_DIST = misc/lc15bts_mgr.h misc/lc15bts_misc.h misc/lc15bts_par.h misc/lc15bts_led.h \</span><br><span>        misc/lc15bts_temp.h misc/lc15bts_power.h misc/lc15bts_clock.h \</span><br><span>      misc/lc15bts_bid.h misc/lc15bts_nl.h misc/lc15bts_bts.h misc/lc15bts_swd.h \</span><br><span style="color: hsl(0, 100%, 40%);">-    hw_misc.h l1_if.h l1_transp.h lc15bts.h oml_router.h utils.h</span><br><span style="color: hsl(120, 100%, 40%);">+  hw_misc.h l1_if.h l1_transp.h lc15bts.h utils.h</span><br><span> </span><br><span> bin_PROGRAMS = osmo-bts-lc15 lc15bts-mgr lc15bts-util</span><br><span> </span><br><span> COMMON_SOURCES = main.c lc15bts.c l1_if.c oml.c lc15bts_vty.c tch.c hw_misc.c calib_file.c \</span><br><span style="color: hsl(0, 100%, 40%);">-                 utils.c misc/lc15bts_par.c misc/lc15bts_bid.c oml_router.c</span><br><span style="color: hsl(120, 100%, 40%);">+            utils.c misc/lc15bts_par.c misc/lc15bts_bid.c</span><br><span> </span><br><span> osmo_bts_lc15_SOURCES = $(COMMON_SOURCES) l1_transp_hw.c</span><br><span> osmo_bts_lc15_LDADD = $(top_builddir)/src/common/libbts.a $(COMMON_LDADD)</span><br><span>diff --git a/src/osmo-bts-litecell15/main.c b/src/osmo-bts-litecell15/main.c</span><br><span>index b48d3ec..a4f04e7 100644</span><br><span>--- a/src/osmo-bts-litecell15/main.c</span><br><span>+++ b/src/osmo-bts-litecell15/main.c</span><br><span>@@ -76,7 +76,6 @@</span><br><span> #include "utils.h"</span><br><span> #include "l1_if.h"</span><br><span> #include "hw_misc.h"</span><br><span style="color: hsl(0, 100%, 40%);">-#include "oml_router.h"</span><br><span> #include "misc/lc15bts_bid.h"</span><br><span> </span><br><span> unsigned int dsp_trace = 0x00000000;</span><br><span>@@ -84,8 +83,6 @@</span><br><span> int bts_model_init(struct gsm_bts *bts)</span><br><span> {</span><br><span>   struct stat st;</span><br><span style="color: hsl(0, 100%, 40%);">- static struct osmo_fd accept_fd, read_fd;</span><br><span style="color: hsl(0, 100%, 40%);">-       int rc;</span><br><span> </span><br><span>  struct bts_lc15_priv *bts_lc15 = talloc(bts, struct bts_lc15_priv);</span><br><span> </span><br><span>@@ -98,13 +95,6 @@</span><br><span>         /* RTP drift threshold default */</span><br><span>    bts_lc15->rtp_drift_thres_ms = LC15_BTS_RTP_DRIFT_THRES_DEFAULT;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- rc = oml_router_init(bts, OML_ROUTER_PATH, &accept_fd, &read_fd);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (rc < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                fprintf(stderr, "Error creating the OML router: %s rc=%d\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                  OML_ROUTER_PATH, rc);</span><br><span style="color: hsl(0, 100%, 40%);">-           exit(1);</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>    if (stat(LC15BTS_RF_LOCK_PATH, &st) == 0) {</span><br><span>              LOGP(DL1C, LOGL_NOTICE, "Not starting BTS due to RF_LOCK file present\n");</span><br><span>                 exit(23);</span><br><span>diff --git a/src/osmo-bts-litecell15/oml_router.c b/src/osmo-bts-litecell15/oml_router.c</span><br><span>deleted file mode 100644</span><br><span>index e20ce5b..0000000</span><br><span>--- a/src/osmo-bts-litecell15/oml_router.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,132 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/* Beginnings of an OML router */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* Copyright (C) 2015 by Yves Godin <support@nuranwireless.com></span><br><span style="color: hsl(0, 100%, 40%);">- * </span><br><span style="color: hsl(0, 100%, 40%);">- * Based on sysmoBTS:</span><br><span style="color: hsl(0, 100%, 40%);">- *     (C) 2014 by sysmocom s.f.m.c. GmbH</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * All Rights Reserved</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(0, 100%, 40%);">- * it under the terms of the GNU Affero General Public License as published by</span><br><span style="color: hsl(0, 100%, 40%);">- * the Free Software Foundation; either version 3 of the License, or</span><br><span style="color: hsl(0, 100%, 40%);">- * (at your option) any later version.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(0, 100%, 40%);">- * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(0, 100%, 40%);">- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(0, 100%, 40%);">- * GNU General Public License for more details.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * You should have received a copy of the GNU Affero General Public License</span><br><span style="color: hsl(0, 100%, 40%);">- * along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include "oml_router.h"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmo-bts/bts.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmo-bts/logging.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmo-bts/oml.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmo-bts/msg_utils.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/core/socket.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/core/select.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <errno.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <string.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <unistd.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static int oml_router_read_cb(struct osmo_fd *fd, unsigned int what)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- struct msgb *msg;</span><br><span style="color: hsl(0, 100%, 40%);">-       int rc;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- msg = oml_msgb_alloc();</span><br><span style="color: hsl(0, 100%, 40%);">- if (!msg) {</span><br><span style="color: hsl(0, 100%, 40%);">-             LOGP(DL1C, LOGL_ERROR, "Failed to allocate oml msgb.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-             return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       rc = recv(fd->fd, msg->tail, msg->data_len, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-        if (rc <= 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-               close(fd->fd);</span><br><span style="color: hsl(0, 100%, 40%);">-               osmo_fd_unregister(fd);</span><br><span style="color: hsl(0, 100%, 40%);">-         fd->fd = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-         goto err;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       msg->l1h = msgb_put(msg, rc);</span><br><span style="color: hsl(0, 100%, 40%);">-        rc = msg_verify_ipa_structure(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (rc < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DL1C, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                  "OML Router: Invalid IPA message rc(%d)\n", rc);</span><br><span style="color: hsl(0, 100%, 40%);">-              goto err;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       rc = msg_verify_oml_structure(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (rc < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DL1C, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                  "OML Router: Invalid OML message rc(%d)\n", rc);</span><br><span style="color: hsl(0, 100%, 40%);">-              goto err;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       /* todo dispatch message */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-err:</span><br><span style="color: hsl(0, 100%, 40%);">- msgb_free(msg);</span><br><span style="color: hsl(0, 100%, 40%);">- return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static int oml_router_accept_cb(struct osmo_fd *accept_fd, unsigned int what)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       int fd;</span><br><span style="color: hsl(0, 100%, 40%);">- struct osmo_fd *read_fd = (struct osmo_fd *) accept_fd->data;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        /* Accept only one connection at a time. De-register it */</span><br><span style="color: hsl(0, 100%, 40%);">-      if (read_fd->fd > -1) {</span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DL1C, LOGL_NOTICE,</span><br><span style="color: hsl(0, 100%, 40%);">-                 "New OML router connection. Closing old one.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-             close(read_fd->fd);</span><br><span style="color: hsl(0, 100%, 40%);">-          osmo_fd_unregister(read_fd);</span><br><span style="color: hsl(0, 100%, 40%);">-            read_fd->fd = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       fd = accept(accept_fd->fd, NULL, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-      if (fd < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DL1C, LOGL_ERROR, "Failed to accept. errno: %s.\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                   strerror(errno));</span><br><span style="color: hsl(0, 100%, 40%);">-          return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       read_fd->fd = fd;</span><br><span style="color: hsl(0, 100%, 40%);">-    if (osmo_fd_register(read_fd) != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DL1C, LOGL_ERROR, "Registering the read fd failed.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-          close(fd);</span><br><span style="color: hsl(0, 100%, 40%);">-              read_fd->fd = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-            return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int oml_router_init(struct gsm_bts *bts, const char *path,</span><br><span style="color: hsl(0, 100%, 40%);">-                    struct osmo_fd *accept_fd, struct osmo_fd *read_fd)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-    int rc;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- memset(accept_fd, 0, sizeof(*accept_fd));</span><br><span style="color: hsl(0, 100%, 40%);">-       memset(read_fd, 0, sizeof(*read_fd));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   accept_fd->cb = oml_router_accept_cb;</span><br><span style="color: hsl(0, 100%, 40%);">-        accept_fd->data = read_fd;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   read_fd->cb = oml_router_read_cb;</span><br><span style="color: hsl(0, 100%, 40%);">-    read_fd->data = bts;</span><br><span style="color: hsl(0, 100%, 40%);">- read_fd->when = OSMO_FD_READ;</span><br><span style="color: hsl(0, 100%, 40%);">-        read_fd->fd = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    rc = osmo_sock_unix_init_ofd(accept_fd, SOCK_SEQPACKET, 0,</span><br><span style="color: hsl(0, 100%, 40%);">-                                      path,</span><br><span style="color: hsl(0, 100%, 40%);">-                                   OSMO_SOCK_F_BIND | OSMO_SOCK_F_NONBLOCK);</span><br><span style="color: hsl(0, 100%, 40%);">-       return rc;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/osmo-bts-litecell15/oml_router.h b/src/osmo-bts-litecell15/oml_router.h</span><br><span>deleted file mode 100644</span><br><span>index 8c08baa..0000000</span><br><span>--- a/src/osmo-bts-litecell15/oml_router.h</span><br><span>+++ /dev/null</span><br><span>@@ -1,13 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#pragma once</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-struct gsm_bts;</span><br><span style="color: hsl(0, 100%, 40%);">-struct osmo_fd;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * The default path lc15bts will listen for incoming</span><br><span style="color: hsl(0, 100%, 40%);">- * registrations for OML routing and sending.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-#define OML_ROUTER_PATH "/var/run/lc15bts_oml_router"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int oml_router_init(struct gsm_bts *bts, const char *path, struct osmo_fd *accept, struct osmo_fd *read);</span><br><span>diff --git a/src/osmo-bts-oc2g/Makefile.am b/src/osmo-bts-oc2g/Makefile.am</span><br><span>index 54a8afa..7b18e88 100644</span><br><span>--- a/src/osmo-bts-oc2g/Makefile.am</span><br><span>+++ b/src/osmo-bts-oc2g/Makefile.am</span><br><span>@@ -9,12 +9,12 @@</span><br><span> EXTRA_DIST = misc/oc2gbts_mgr.h misc/oc2gbts_misc.h misc/oc2gbts_par.h misc/oc2gbts_led.h \</span><br><span>      misc/oc2gbts_temp.h misc/oc2gbts_power.h misc/oc2gbts_clock.h \</span><br><span>      misc/oc2gbts_bid.h misc/oc2gbts_bts.h misc/oc2gbts_nl.h misc/oc2gbts_swd.h \</span><br><span style="color: hsl(0, 100%, 40%);">-    hw_misc.h l1_if.h l1_transp.h oc2gbts.h oml_router.h utils.h</span><br><span style="color: hsl(120, 100%, 40%);">+  hw_misc.h l1_if.h l1_transp.h oc2gbts.h utils.h</span><br><span> </span><br><span> bin_PROGRAMS = osmo-bts-oc2g oc2gbts-mgr oc2gbts-util</span><br><span> </span><br><span> COMMON_SOURCES = main.c oc2gbts.c l1_if.c oml.c oc2gbts_vty.c tch.c hw_misc.c calib_file.c \</span><br><span style="color: hsl(0, 100%, 40%);">-                 utils.c misc/oc2gbts_par.c misc/oc2gbts_bid.c oml_router.c</span><br><span style="color: hsl(120, 100%, 40%);">+            utils.c misc/oc2gbts_par.c misc/oc2gbts_bid.c</span><br><span> </span><br><span> osmo_bts_oc2g_SOURCES = $(COMMON_SOURCES) l1_transp_hw.c</span><br><span> osmo_bts_oc2g_LDADD = $(top_builddir)/src/common/libbts.a $(COMMON_LDADD)</span><br><span>diff --git a/src/osmo-bts-oc2g/main.c b/src/osmo-bts-oc2g/main.c</span><br><span>index a0f4d4a..efbe180 100644</span><br><span>--- a/src/osmo-bts-oc2g/main.c</span><br><span>+++ b/src/osmo-bts-oc2g/main.c</span><br><span>@@ -76,7 +76,6 @@</span><br><span> #include "utils.h"</span><br><span> #include "l1_if.h"</span><br><span> #include "hw_misc.h"</span><br><span style="color: hsl(0, 100%, 40%);">-#include "oml_router.h"</span><br><span> #include "misc/oc2gbts_bid.h"</span><br><span> </span><br><span> unsigned int dsp_trace = 0x00000000;</span><br><span>@@ -84,8 +83,6 @@</span><br><span> int bts_model_init(struct gsm_bts *bts)</span><br><span> {</span><br><span>   struct stat st;</span><br><span style="color: hsl(0, 100%, 40%);">- static struct osmo_fd accept_fd, read_fd;</span><br><span style="color: hsl(0, 100%, 40%);">-       int rc;</span><br><span> </span><br><span>  struct bts_oc2g_priv *bts_oc2g = talloc(bts, struct bts_oc2g_priv);</span><br><span>  bts->model_priv = bts_oc2g;</span><br><span>@@ -99,13 +96,6 @@</span><br><span>  /* RTP drift threshold default */</span><br><span>    /* bts_oc2g->rtp_drift_thres_ms = OC2G_BTS_RTP_DRIFT_THRES_DEFAULT; */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   rc = oml_router_init(bts, OML_ROUTER_PATH, &accept_fd, &read_fd);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (rc < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                fprintf(stderr, "Error creating the OML router: %s rc=%d\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                  OML_ROUTER_PATH, rc);</span><br><span style="color: hsl(0, 100%, 40%);">-           exit(1);</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>    if (stat(OC2GBTS_RF_LOCK_PATH, &st) == 0) {</span><br><span>              LOGP(DL1C, LOGL_NOTICE, "Not starting BTS due to RF_LOCK file present\n");</span><br><span>                 exit(23);</span><br><span>diff --git a/src/osmo-bts-oc2g/oml_router.c b/src/osmo-bts-oc2g/oml_router.c</span><br><span>deleted file mode 100644</span><br><span>index e20ce5b..0000000</span><br><span>--- a/src/osmo-bts-oc2g/oml_router.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,132 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/* Beginnings of an OML router */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* Copyright (C) 2015 by Yves Godin <support@nuranwireless.com></span><br><span style="color: hsl(0, 100%, 40%);">- * </span><br><span style="color: hsl(0, 100%, 40%);">- * Based on sysmoBTS:</span><br><span style="color: hsl(0, 100%, 40%);">- *     (C) 2014 by sysmocom s.f.m.c. GmbH</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * All Rights Reserved</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(0, 100%, 40%);">- * it under the terms of the GNU Affero General Public License as published by</span><br><span style="color: hsl(0, 100%, 40%);">- * the Free Software Foundation; either version 3 of the License, or</span><br><span style="color: hsl(0, 100%, 40%);">- * (at your option) any later version.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(0, 100%, 40%);">- * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(0, 100%, 40%);">- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(0, 100%, 40%);">- * GNU General Public License for more details.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * You should have received a copy of the GNU Affero General Public License</span><br><span style="color: hsl(0, 100%, 40%);">- * along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include "oml_router.h"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmo-bts/bts.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmo-bts/logging.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmo-bts/oml.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmo-bts/msg_utils.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/core/socket.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/core/select.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <errno.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <string.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <unistd.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static int oml_router_read_cb(struct osmo_fd *fd, unsigned int what)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-   struct msgb *msg;</span><br><span style="color: hsl(0, 100%, 40%);">-       int rc;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- msg = oml_msgb_alloc();</span><br><span style="color: hsl(0, 100%, 40%);">- if (!msg) {</span><br><span style="color: hsl(0, 100%, 40%);">-             LOGP(DL1C, LOGL_ERROR, "Failed to allocate oml msgb.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-             return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       rc = recv(fd->fd, msg->tail, msg->data_len, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-        if (rc <= 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-               close(fd->fd);</span><br><span style="color: hsl(0, 100%, 40%);">-               osmo_fd_unregister(fd);</span><br><span style="color: hsl(0, 100%, 40%);">-         fd->fd = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-         goto err;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       msg->l1h = msgb_put(msg, rc);</span><br><span style="color: hsl(0, 100%, 40%);">-        rc = msg_verify_ipa_structure(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (rc < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DL1C, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                  "OML Router: Invalid IPA message rc(%d)\n", rc);</span><br><span style="color: hsl(0, 100%, 40%);">-              goto err;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       rc = msg_verify_oml_structure(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (rc < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DL1C, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                  "OML Router: Invalid OML message rc(%d)\n", rc);</span><br><span style="color: hsl(0, 100%, 40%);">-              goto err;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       /* todo dispatch message */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-err:</span><br><span style="color: hsl(0, 100%, 40%);">- msgb_free(msg);</span><br><span style="color: hsl(0, 100%, 40%);">- return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static int oml_router_accept_cb(struct osmo_fd *accept_fd, unsigned int what)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       int fd;</span><br><span style="color: hsl(0, 100%, 40%);">- struct osmo_fd *read_fd = (struct osmo_fd *) accept_fd->data;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        /* Accept only one connection at a time. De-register it */</span><br><span style="color: hsl(0, 100%, 40%);">-      if (read_fd->fd > -1) {</span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DL1C, LOGL_NOTICE,</span><br><span style="color: hsl(0, 100%, 40%);">-                 "New OML router connection. Closing old one.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-             close(read_fd->fd);</span><br><span style="color: hsl(0, 100%, 40%);">-          osmo_fd_unregister(read_fd);</span><br><span style="color: hsl(0, 100%, 40%);">-            read_fd->fd = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       fd = accept(accept_fd->fd, NULL, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-      if (fd < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DL1C, LOGL_ERROR, "Failed to accept. errno: %s.\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                   strerror(errno));</span><br><span style="color: hsl(0, 100%, 40%);">-          return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       read_fd->fd = fd;</span><br><span style="color: hsl(0, 100%, 40%);">-    if (osmo_fd_register(read_fd) != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DL1C, LOGL_ERROR, "Registering the read fd failed.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-          close(fd);</span><br><span style="color: hsl(0, 100%, 40%);">-              read_fd->fd = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-            return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int oml_router_init(struct gsm_bts *bts, const char *path,</span><br><span style="color: hsl(0, 100%, 40%);">-                    struct osmo_fd *accept_fd, struct osmo_fd *read_fd)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-    int rc;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- memset(accept_fd, 0, sizeof(*accept_fd));</span><br><span style="color: hsl(0, 100%, 40%);">-       memset(read_fd, 0, sizeof(*read_fd));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   accept_fd->cb = oml_router_accept_cb;</span><br><span style="color: hsl(0, 100%, 40%);">-        accept_fd->data = read_fd;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   read_fd->cb = oml_router_read_cb;</span><br><span style="color: hsl(0, 100%, 40%);">-    read_fd->data = bts;</span><br><span style="color: hsl(0, 100%, 40%);">- read_fd->when = OSMO_FD_READ;</span><br><span style="color: hsl(0, 100%, 40%);">-        read_fd->fd = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    rc = osmo_sock_unix_init_ofd(accept_fd, SOCK_SEQPACKET, 0,</span><br><span style="color: hsl(0, 100%, 40%);">-                                      path,</span><br><span style="color: hsl(0, 100%, 40%);">-                                   OSMO_SOCK_F_BIND | OSMO_SOCK_F_NONBLOCK);</span><br><span style="color: hsl(0, 100%, 40%);">-       return rc;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/osmo-bts-oc2g/oml_router.h b/src/osmo-bts-oc2g/oml_router.h</span><br><span>deleted file mode 100644</span><br><span>index 4b22e9c..0000000</span><br><span>--- a/src/osmo-bts-oc2g/oml_router.h</span><br><span>+++ /dev/null</span><br><span>@@ -1,13 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#pragma once</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-struct gsm_bts;</span><br><span style="color: hsl(0, 100%, 40%);">-struct osmo_fd;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * The default path oc2gbts will listen for incoming</span><br><span style="color: hsl(0, 100%, 40%);">- * registrations for OML routing and sending.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-#define OML_ROUTER_PATH "/var/run/oc2gbts_oml_router"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int oml_router_init(struct gsm_bts *bts, const char *path, struct osmo_fd *accept, struct osmo_fd *read);</span><br><span>diff --git a/src/osmo-bts-sysmo/Makefile.am b/src/osmo-bts-sysmo/Makefile.am</span><br><span>index 5f588f8..1faf122 100644</span><br><span>--- a/src/osmo-bts-sysmo/Makefile.am</span><br><span>+++ b/src/osmo-bts-sysmo/Makefile.am</span><br><span>@@ -5,12 +5,12 @@</span><br><span> EXTRA_DIST = misc/sysmobts_mgr.h misc/sysmobts_misc.h misc/sysmobts_par.h \</span><br><span>    misc/sysmobts_eeprom.h misc/sysmobts_nl.h femtobts.h hw_misc.h \</span><br><span>     misc/sysmobts-layer1.h \</span><br><span style="color: hsl(0, 100%, 40%);">-        l1_fwd.h l1_if.h l1_transp.h eeprom.h utils.h oml_router.h</span><br><span style="color: hsl(120, 100%, 40%);">+    l1_fwd.h l1_if.h l1_transp.h eeprom.h utils.h</span><br><span> </span><br><span> bin_PROGRAMS = osmo-bts-sysmo osmo-bts-sysmo-remote l1fwd-proxy sysmobts-mgr sysmobts-util</span><br><span> </span><br><span> COMMON_SOURCES = main.c femtobts.c l1_if.c oml.c sysmobts_vty.c tch.c hw_misc.c calib_file.c \</span><br><span style="color: hsl(0, 100%, 40%);">-            eeprom.c calib_fixup.c utils.c misc/sysmobts_par.c oml_router.c sysmobts_ctrl.c</span><br><span style="color: hsl(120, 100%, 40%);">+               eeprom.c calib_fixup.c utils.c misc/sysmobts_par.c sysmobts_ctrl.c</span><br><span> </span><br><span> osmo_bts_sysmo_SOURCES = $(COMMON_SOURCES) l1_transp_hw.c</span><br><span> osmo_bts_sysmo_LDADD = $(top_builddir)/src/common/libbts.a $(COMMON_LDADD)</span><br><span>diff --git a/src/osmo-bts-sysmo/main.c b/src/osmo-bts-sysmo/main.c</span><br><span>index 51a14c7..735768c 100644</span><br><span>--- a/src/osmo-bts-sysmo/main.c</span><br><span>+++ b/src/osmo-bts-sysmo/main.c</span><br><span>@@ -53,24 +53,14 @@</span><br><span> #include "eeprom.h"</span><br><span> #include "l1_if.h"</span><br><span> #include "hw_misc.h"</span><br><span style="color: hsl(0, 100%, 40%);">-#include "oml_router.h"</span><br><span> </span><br><span> int bts_model_init(struct gsm_bts *bts)</span><br><span> {</span><br><span>    struct stat st;</span><br><span style="color: hsl(0, 100%, 40%);">- static struct osmo_fd accept_fd, read_fd;</span><br><span style="color: hsl(0, 100%, 40%);">-       int rc;</span><br><span> </span><br><span>  bts->variant = BTS_OSMO_SYSMO;</span><br><span>    bts->support.ciphers = CIPHER_A5(1) | CIPHER_A5(2) | CIPHER_A5(3);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       rc = oml_router_init(bts, OML_ROUTER_PATH, &accept_fd, &read_fd);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (rc < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                fprintf(stderr, "Error creating the OML router: %s rc=%d\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                  OML_ROUTER_PATH, rc);</span><br><span style="color: hsl(0, 100%, 40%);">-           exit(1);</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>    if (stat(SYSMOBTS_RF_LOCK_PATH, &st) == 0) {</span><br><span>             LOGP(DL1C, LOGL_NOTICE, "Not starting BTS due to RF_LOCK file present\n");</span><br><span>                 exit(23);</span><br><span>diff --git a/src/osmo-bts-sysmo/oml_router.c b/src/osmo-bts-sysmo/oml_router.c</span><br><span>deleted file mode 100644</span><br><span>index faaf1b5..0000000</span><br><span>--- a/src/osmo-bts-sysmo/oml_router.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,129 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/* Beginnings of an OML router */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* (C) 2014 by sysmocom s.f.m.c. GmbH</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * All Rights Reserved</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(0, 100%, 40%);">- * it under the terms of the GNU Affero General Public License as published by</span><br><span style="color: hsl(0, 100%, 40%);">- * the Free Software Foundation; either version 3 of the License, or</span><br><span style="color: hsl(0, 100%, 40%);">- * (at your option) any later version.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(0, 100%, 40%);">- * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(0, 100%, 40%);">- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(0, 100%, 40%);">- * GNU General Public License for more details.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * You should have received a copy of the GNU Affero General Public License</span><br><span style="color: hsl(0, 100%, 40%);">- * along with this program.  If not, see <http://www.gnu.org/licenses/>.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include "oml_router.h"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmo-bts/bts.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmo-bts/logging.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmo-bts/oml.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmo-bts/msg_utils.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/core/socket.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/core/select.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <errno.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <string.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <unistd.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static int oml_router_read_cb(struct osmo_fd *fd, unsigned int what)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- struct msgb *msg;</span><br><span style="color: hsl(0, 100%, 40%);">-       int rc;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- msg = oml_msgb_alloc();</span><br><span style="color: hsl(0, 100%, 40%);">- if (!msg) {</span><br><span style="color: hsl(0, 100%, 40%);">-             LOGP(DL1C, LOGL_ERROR, "Failed to allocate oml msgb.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-             return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       rc = recv(fd->fd, msg->tail, msg->data_len, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-        if (rc <= 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-               close(fd->fd);</span><br><span style="color: hsl(0, 100%, 40%);">-               osmo_fd_unregister(fd);</span><br><span style="color: hsl(0, 100%, 40%);">-         fd->fd = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-         goto err;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       msg->l1h = msgb_put(msg, rc);</span><br><span style="color: hsl(0, 100%, 40%);">-        rc = msg_verify_ipa_structure(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (rc < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DL1C, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                  "OML Router: Invalid IPA message rc(%d)\n", rc);</span><br><span style="color: hsl(0, 100%, 40%);">-              goto err;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       rc = msg_verify_oml_structure(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (rc < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DL1C, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                  "OML Router: Invalid OML message rc(%d)\n", rc);</span><br><span style="color: hsl(0, 100%, 40%);">-              goto err;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       /* todo dispatch message */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-err:</span><br><span style="color: hsl(0, 100%, 40%);">- msgb_free(msg);</span><br><span style="color: hsl(0, 100%, 40%);">- return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static int oml_router_accept_cb(struct osmo_fd *accept_fd, unsigned int what)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       int fd;</span><br><span style="color: hsl(0, 100%, 40%);">- struct osmo_fd *read_fd = (struct osmo_fd *) accept_fd->data;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        /* Accept only one connection at a time. De-register it */</span><br><span style="color: hsl(0, 100%, 40%);">-      if (read_fd->fd > -1) {</span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DL1C, LOGL_NOTICE,</span><br><span style="color: hsl(0, 100%, 40%);">-                 "New OML router connection. Closing old one.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-             close(read_fd->fd);</span><br><span style="color: hsl(0, 100%, 40%);">-          osmo_fd_unregister(read_fd);</span><br><span style="color: hsl(0, 100%, 40%);">-            read_fd->fd = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       fd = accept(accept_fd->fd, NULL, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-      if (fd < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DL1C, LOGL_ERROR, "Failed to accept. errno: %s.\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                   strerror(errno));</span><br><span style="color: hsl(0, 100%, 40%);">-          return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       read_fd->fd = fd;</span><br><span style="color: hsl(0, 100%, 40%);">-    if (osmo_fd_register(read_fd) != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DL1C, LOGL_ERROR, "Registering the read fd failed.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-          close(fd);</span><br><span style="color: hsl(0, 100%, 40%);">-              read_fd->fd = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-            return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int oml_router_init(struct gsm_bts *bts, const char *path,</span><br><span style="color: hsl(0, 100%, 40%);">-                    struct osmo_fd *accept_fd, struct osmo_fd *read_fd)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-    int rc;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- memset(accept_fd, 0, sizeof(*accept_fd));</span><br><span style="color: hsl(0, 100%, 40%);">-       memset(read_fd, 0, sizeof(*read_fd));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   accept_fd->cb = oml_router_accept_cb;</span><br><span style="color: hsl(0, 100%, 40%);">-        accept_fd->data = read_fd;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   read_fd->cb = oml_router_read_cb;</span><br><span style="color: hsl(0, 100%, 40%);">-    read_fd->data = bts;</span><br><span style="color: hsl(0, 100%, 40%);">- read_fd->when = OSMO_FD_READ;</span><br><span style="color: hsl(0, 100%, 40%);">-        read_fd->fd = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    rc = osmo_sock_unix_init_ofd(accept_fd, SOCK_SEQPACKET, 0,</span><br><span style="color: hsl(0, 100%, 40%);">-                                      path,</span><br><span style="color: hsl(0, 100%, 40%);">-                                   OSMO_SOCK_F_BIND | OSMO_SOCK_F_NONBLOCK);</span><br><span style="color: hsl(0, 100%, 40%);">-       return rc;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/osmo-bts-sysmo/oml_router.h b/src/osmo-bts-sysmo/oml_router.h</span><br><span>deleted file mode 100644</span><br><span>index 55f0681..0000000</span><br><span>--- a/src/osmo-bts-sysmo/oml_router.h</span><br><span>+++ /dev/null</span><br><span>@@ -1,13 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#pragma once</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-struct gsm_bts;</span><br><span style="color: hsl(0, 100%, 40%);">-struct osmo_fd;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * The default path sysmobts will listen for incoming</span><br><span style="color: hsl(0, 100%, 40%);">- * registrations for OML routing and sending.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-#define OML_ROUTER_PATH "/var/run/sysmobts_oml_router"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int oml_router_init(struct gsm_bts *bts, const char *path, struct osmo_fd *accept, struct osmo_fd *read);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/20779">change 20779</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-bts/+/20779"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bts </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I7fcbbd5d6b64ddc666ca836dc49abb430be0d5cb </div>
<div style="display:none"> Gerrit-Change-Number: 20779 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>