<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/26708">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">VTY: implement 'no log gsmtap [HOSTNAME]' command<br><br>Change-Id: I9a4efa1e35cbc22cea06a64a15a369522c32d3c4<br>---<br>M include/osmocom/core/gsmtap_util.h<br>M src/gsmtap_util.c<br>M src/logging.c<br>M src/vty/logging_vty.c<br>4 files changed, 43 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/08/26708/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/core/gsmtap_util.h b/include/osmocom/core/gsmtap_util.h</span><br><span>index 1cc8d75..33ade95 100644</span><br><span>--- a/include/osmocom/core/gsmtap_util.h</span><br><span>+++ b/include/osmocom/core/gsmtap_util.h</span><br><span>@@ -44,6 +44,7 @@</span><br><span> </span><br><span> struct gsmtap_inst *gsmtap_source_init(const char *host, uint16_t port,</span><br><span>                                      int ofd_wq_mode);</span><br><span style="color: hsl(120, 100%, 40%);">+void gsmtap_source_free(struct gsmtap_inst *gti);</span><br><span> </span><br><span> int gsmtap_source_add_sink(struct gsmtap_inst *gti);</span><br><span> </span><br><span>diff --git a/src/gsmtap_util.c b/src/gsmtap_util.c</span><br><span>index 671a6c3..2571b85 100644</span><br><span>--- a/src/gsmtap_util.c</span><br><span>+++ b/src/gsmtap_util.c</span><br><span>@@ -486,6 +486,22 @@</span><br><span>         return gti;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+void gsmtap_source_free(struct gsmtap_inst *gti)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     if (gti->ofd_wq_mode) {</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo_fd_unregister(&gti->wq.bfd);</span><br><span style="color: hsl(120, 100%, 40%);">+              osmo_wqueue_clear(&gti->wq);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+         if (gti->sink_ofd.fd != -1) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      osmo_fd_unregister(&gti->sink_ofd);</span><br><span style="color: hsl(120, 100%, 40%);">+                    close(gti->sink_ofd.fd);</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   close(gti->wq.bfd.fd);</span><br><span style="color: hsl(120, 100%, 40%);">+     talloc_free(gti);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #endif /* HAVE_SYS_SOCKET_H */</span><br><span> </span><br><span> const struct value_string gsmtap_gsm_channel_names[] = {</span><br><span>diff --git a/src/logging.c b/src/logging.c</span><br><span>index e5c66f2..e05091b 100644</span><br><span>--- a/src/logging.c</span><br><span>+++ b/src/logging.c</span><br><span>@@ -67,6 +67,7 @@</span><br><span> #include <osmocom/core/thread.h></span><br><span> #include <osmocom/core/select.h></span><br><span> #include <osmocom/core/write_queue.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/gsmtap_util.h></span><br><span> </span><br><span> #include <osmocom/vty/logging.h>     /* for LOGGING_STR. */</span><br><span> </span><br><span>@@ -1312,6 +1313,9 @@</span><br><span>           talloc_free((void *)target->tgt_file.fname);</span><br><span>              target->tgt_file.fname = NULL;</span><br><span>            break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case LOG_TGT_TYPE_GSMTAP:</span><br><span style="color: hsl(120, 100%, 40%);">+             gsmtap_source_free(target->tgt_gsmtap.gsmtap_inst);</span><br><span style="color: hsl(120, 100%, 40%);">+                break;</span><br><span> #ifdef HAVE_SYSLOG_H</span><br><span>       case LOG_TGT_TYPE_SYSLOG:</span><br><span>            closelog();</span><br><span>diff --git a/src/vty/logging_vty.c b/src/vty/logging_vty.c</span><br><span>index 4e5725b..c83dafd 100644</span><br><span>--- a/src/vty/logging_vty.c</span><br><span>+++ b/src/vty/logging_vty.c</span><br><span>@@ -830,6 +830,27 @@</span><br><span>  RET_WITH_UNLOCK(CMD_SUCCESS);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(cfg_no_log_gsmtap, cfg_no_log_gsmtap_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+       "no log gsmtap [HOSTNAME]",</span><br><span style="color: hsl(120, 100%, 40%);">+ NO_STR LOG_STR "Logging via GSMTAP\n"</span><br><span style="color: hsl(120, 100%, 40%);">+       "Host name to send the GSMTAP logging to (UDP port 4729)\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     const char *hostname = argc ? argv[0] : "127.0.0.1";</span><br><span style="color: hsl(120, 100%, 40%);">+        struct log_target *tgt;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     log_tgt_mutex_lock();</span><br><span style="color: hsl(120, 100%, 40%);">+ tgt = log_target_find(LOG_TGT_TYPE_GSMTAP, hostname);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (tgt == NULL) {</span><br><span style="color: hsl(120, 100%, 40%);">+            vty_out(vty, "%% Unable to find GSMTAP log target for %s%s",</span><br><span style="color: hsl(120, 100%, 40%);">+                        hostname, VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+               RET_WITH_UNLOCK(CMD_WARNING);</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   log_target_destroy(tgt);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    RET_WITH_UNLOCK(CMD_SUCCESS);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> DEFUN(cfg_log_stderr, cfg_log_stderr_cmd,</span><br><span>      "log stderr [blocking-io]",</span><br><span>        LOG_STR "Logging via STDERR of the process\n"</span><br><span>@@ -1245,4 +1266,5 @@</span><br><span>      install_lib_element(CONFIG_NODE, &cfg_log_systemd_journal_cmd);</span><br><span>  install_lib_element(CONFIG_NODE, &cfg_no_log_systemd_journal_cmd);</span><br><span>       install_lib_element(CONFIG_NODE, &cfg_log_gsmtap_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+    install_lib_element(CONFIG_NODE, &cfg_no_log_gsmtap_cmd);</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/26708">change 26708</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/libosmocore/+/26708"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I9a4efa1e35cbc22cea06a64a15a369522c32d3c4 </div>
<div style="display:none"> Gerrit-Change-Number: 26708 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>