<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/20552">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  daniel: Looks good to me, approved
  pespin: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gprs_ns2: add gprs_ns2_ip_bind_by_sockaddr() to search for binds by sockaddr<br><br>Change-Id: I48c3f1a82574eee0a49e6941cf9e1365c2302d3b<br>---<br>M include/osmocom/gprs/gprs_ns2.h<br>M src/gb/gprs_ns2_udp.c<br>M src/gb/libosmogb.map<br>3 files changed, 29 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/gprs/gprs_ns2.h b/include/osmocom/gprs/gprs_ns2.h</span><br><span>index dc27c96..cbd6647 100644</span><br><span>--- a/include/osmocom/gprs/gprs_ns2.h</span><br><span>+++ b/include/osmocom/gprs/gprs_ns2.h</span><br><span>@@ -110,6 +110,8 @@</span><br><span>                  const struct osmo_sockaddr *local,</span><br><span>                   int dscp,</span><br><span>                    struct gprs_ns2_vc_bind **result);</span><br><span style="color: hsl(120, 100%, 40%);">+struct gprs_ns2_vc_bind *gprs_ns2_ip_bind_by_sockaddr(struct gprs_ns2_inst *nsi,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                   const struct osmo_sockaddr *sockaddr);</span><br><span> void gprs_ns2_bind_set_mode(struct gprs_ns2_vc_bind *bind, enum gprs_ns2_vc_mode mode);</span><br><span> </span><br><span> /* create a VC connection */</span><br><span>diff --git a/src/gb/gprs_ns2_udp.c b/src/gb/gprs_ns2_udp.c</span><br><span>index 815e516..a578160 100644</span><br><span>--- a/src/gb/gprs_ns2_udp.c</span><br><span>+++ b/src/gb/gprs_ns2_udp.c</span><br><span>@@ -265,6 +265,32 @@</span><br><span>  return rc;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Find NS bind for a given socket address</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] nsi NS instance</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] sockaddr socket address to search for</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \return</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+struct gprs_ns2_vc_bind *gprs_ns2_ip_bind_by_sockaddr(struct gprs_ns2_inst *nsi,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                  const struct osmo_sockaddr *sockaddr)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gprs_ns2_vc_bind *bind;</span><br><span style="color: hsl(120, 100%, 40%);">+        struct osmo_sockaddr *local;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        OSMO_ASSERT(nsi);</span><br><span style="color: hsl(120, 100%, 40%);">+     OSMO_ASSERT(sockaddr);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      llist_for_each_entry(bind, &nsi->binding, list) {</span><br><span style="color: hsl(120, 100%, 40%);">+              if (!gprs_ns2_is_ip_bind(bind))</span><br><span style="color: hsl(120, 100%, 40%);">+                       continue;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           local = gprs_ns2_ip_bind_sockaddr(bind);</span><br><span style="color: hsl(120, 100%, 40%);">+              if (!osmo_sockaddr_cmp(sockaddr, local))</span><br><span style="color: hsl(120, 100%, 40%);">+                      return bind;</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%);">+   return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! Bind to an IPv4/IPv6 address</span><br><span>  *  \param[in] nsi NS Instance in which to create the NSVC</span><br><span>  *  \param[in] local the local address to bind to</span><br><span>diff --git a/src/gb/libosmogb.map b/src/gb/libosmogb.map</span><br><span>index d08e85e..980b317 100644</span><br><span>--- a/src/gb/libosmogb.map</span><br><span>+++ b/src/gb/libosmogb.map</span><br><span>@@ -84,6 +84,7 @@</span><br><span> gprs_ns2_frgre_bind;</span><br><span> gprs_ns2_instantiate;</span><br><span> gprs_ns2_ip_bind;</span><br><span style="color: hsl(120, 100%, 40%);">+gprs_ns2_ip_bind_by_sockaddr;</span><br><span> gprs_ns2_ip_bind_set_dscp;</span><br><span> gprs_ns2_ip_bind_sockaddr;</span><br><span> gprs_ns2_ip_connect;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/20552">change 20552</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/+/20552"/><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: I48c3f1a82574eee0a49e6941cf9e1365c2302d3b </div>
<div style="display:none"> Gerrit-Change-Number: 20552 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@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>