<p>Max has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13367">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">trxcon: update trx_udp_open()<br><br>* explicitly log created socket type (ctrl vs data)<br>* log local/remote ip/port<br>* log detailed per-socket error in case of failure<br>* internalize callback and osmo_fd selection based on socket type<br><br>Change-Id: I33b01879f6ea468941e5dab5b46492be8fe5730d<br>---<br>M src/host/trxcon/trx_if.c<br>1 file changed, 25 insertions(+), 22 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/67/13367/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/host/trxcon/trx_if.c b/src/host/trxcon/trx_if.c</span><br><span>index 4c10da6..9b7a5d6 100644</span><br><span>--- a/src/host/trxcon/trx_if.c</span><br><span>+++ b/src/host/trxcon/trx_if.c</span><br><span>@@ -83,23 +83,6 @@</span><br><span>    .event_names = trx_evt_names,</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int trx_udp_open(void *priv, struct osmo_fd *ofd, const char *host_local,</span><br><span style="color: hsl(0, 100%, 40%);">- uint16_t port_local, const char *host_remote, uint16_t port_remote,</span><br><span style="color: hsl(0, 100%, 40%);">-     int (*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%);">-      int rc;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- ofd->data = priv;</span><br><span style="color: hsl(0, 100%, 40%);">-    ofd->fd = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-        ofd->cb = cb;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        /* Init UDP Connection */</span><br><span style="color: hsl(0, 100%, 40%);">-       rc = osmo_sock_init2_ofd(ofd, AF_UNSPEC, SOCK_DGRAM, 0, host_local, port_local,</span><br><span style="color: hsl(0, 100%, 40%);">-                          host_remote, port_remote,</span><br><span style="color: hsl(0, 100%, 40%);">-                               OSMO_SOCK_F_BIND | OSMO_SOCK_F_CONNECT);</span><br><span style="color: hsl(0, 100%, 40%);">-       return rc;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> static void trx_udp_close(struct osmo_fd *ofd)</span><br><span> {</span><br><span>   if (ofd->fd > 0) {</span><br><span>@@ -626,6 +609,29 @@</span><br><span>      return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static int trx_udp_open(struct trx_instance *trx, bool is_ctrl, const char *host_local,</span><br><span style="color: hsl(120, 100%, 40%);">+                   uint16_t port_local, const char *host_remote, uint16_t port_remote)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        int rc;</span><br><span style="color: hsl(120, 100%, 40%);">+       struct osmo_fd *ofd = is_ctrl ? &trx->trx_ofd_ctrl : &trx->trx_ofd_data;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      ofd->data = trx;</span><br><span style="color: hsl(120, 100%, 40%);">+   ofd->fd = -1;</span><br><span style="color: hsl(120, 100%, 40%);">+      ofd->cb = is_ctrl ? trx_ctrl_read_cb : trx_data_rx_cb;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Init UDP Connection */</span><br><span style="color: hsl(120, 100%, 40%);">+     rc = osmo_sock_init2_ofd(ofd, AF_UNSPEC, SOCK_DGRAM, 0, host_local, port_local,</span><br><span style="color: hsl(120, 100%, 40%);">+                                host_remote, port_remote,</span><br><span style="color: hsl(120, 100%, 40%);">+                             OSMO_SOCK_F_BIND | OSMO_SOCK_F_CONNECT);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (rc < 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                LOGP(DTRX, LOGL_ERROR, "Failed to prepare %s UDP socket r=%s:%u<->l=%s:%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+              is_ctrl ? "CTRL" : "DATA", host_remote, port_remote, host_local, port_local);</span><br><span style="color: hsl(120, 100%, 40%);">+        else</span><br><span style="color: hsl(120, 100%, 40%);">+          LOGP(DTRX, LOGL_NOTICE, "%s UDP socket %s ready\n", is_ctrl ? "CTRL" : "DATA", osmo_sock_get_name2(rc));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      return rc;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Init TRX interface (TRXC, TRXD sockets and FSM) */</span><br><span> struct trx_instance *trx_if_open(void *tall_ctx,</span><br><span>         const char *local_host, const char *remote_host,</span><br><span>@@ -658,20 +664,17 @@</span><br><span>     INIT_LLIST_HEAD(&trx->trx_ctrl_list);</span><br><span> </span><br><span>     /* Open sockets */</span><br><span style="color: hsl(0, 100%, 40%);">-      rc = trx_udp_open(trx, &trx->trx_ofd_ctrl, local_host,</span><br><span style="color: hsl(0, 100%, 40%);">-           base_port + 101, remote_host, base_port + 1, trx_ctrl_read_cb);</span><br><span style="color: hsl(120, 100%, 40%);">+       rc = trx_udp_open(trx, true, local_host, base_port + 101, remote_host, base_port + 1);</span><br><span>       if (rc < 0)</span><br><span>               goto udp_error;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     rc = trx_udp_open(trx, &trx->trx_ofd_data, local_host,</span><br><span style="color: hsl(0, 100%, 40%);">-           base_port + 102, remote_host, base_port + 2, trx_data_rx_cb);</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = trx_udp_open(trx, false, local_host, base_port + 102, remote_host, base_port + 2);</span><br><span>      if (rc < 0)</span><br><span>               goto udp_error;</span><br><span> </span><br><span>  return trx;</span><br><span> </span><br><span> udp_error:</span><br><span style="color: hsl(0, 100%, 40%);">-   LOGP(DTRX, LOGL_ERROR, "Couldn't establish UDP connection\n");</span><br><span>         osmo_fsm_inst_free(trx->fsm);</span><br><span>     talloc_free(trx);</span><br><span>    return NULL;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13367">change 13367</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/13367"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmocom-bb </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I33b01879f6ea468941e5dab5b46492be8fe5730d </div>
<div style="display:none"> Gerrit-Change-Number: 13367 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Max <msuraev@sysmocom.de> </div>