<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/libosmo-sccp/+/19852">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;">Fix matching IPv6 anyaddr :: in osmo_ss7_asp_find_by_socket_addr<br><br>Change-Id: I36dd8f1978e3b7b785660745378c9cf77a21a566<br>---<br>M src/osmo_ss7.c<br>1 file changed, 19 insertions(+), 3 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo_ss7.c b/src/osmo_ss7.c</span><br><span>index b58de34..7639c41 100644</span><br><span>--- a/src/osmo_ss7.c</span><br><span>+++ b/src/osmo_ss7.c</span><br><span>@@ -1241,6 +1241,7 @@</span><br><span>      socklen_t sa_len_r = sizeof(sa_r);</span><br><span>   char hostbuf_l[64], hostbuf_r[64];</span><br><span>   uint16_t local_port, remote_port;</span><br><span style="color: hsl(120, 100%, 40%);">+     bool loc_is_v6, rem_is_v6;</span><br><span>   int rc;</span><br><span>      int i;</span><br><span> </span><br><span>@@ -1272,6 +1273,8 @@</span><br><span>    */</span><br><span>  chop_v4_mapped_on_v6_prefix(hostbuf_l);</span><br><span>      chop_v4_mapped_on_v6_prefix(hostbuf_r);</span><br><span style="color: hsl(120, 100%, 40%);">+       loc_is_v6 = osmo_ip_str_type(hostbuf_l) == AF_INET6;</span><br><span style="color: hsl(120, 100%, 40%);">+  rem_is_v6 = osmo_ip_str_type(hostbuf_r) == AF_INET6;</span><br><span> </span><br><span>     /* check all instances for any ASP definition matching the</span><br><span>    * address combination of local/remote ip/port */</span><br><span>@@ -1284,8 +1287,14 @@</span><br><span>                           continue;</span><br><span> </span><br><span>                        for (i = 0; i < asp->cfg.local.host_cnt; i++) {</span><br><span style="color: hsl(0, 100%, 40%);">-                           bool is_any = !asp->cfg.local.host[i] || !strcmp(asp->cfg.local.host[i], "0.0.0.0");</span><br><span style="color: hsl(0, 100%, 40%);">-                            if (is_any || !strcmp(asp->cfg.local.host[i], hostbuf_l))</span><br><span style="color: hsl(120, 100%, 40%);">+                          bool iter_is_v6 = osmo_ip_str_type(asp->cfg.local.host[i]) == AF_INET6;</span><br><span style="color: hsl(120, 100%, 40%);">+                            bool iter_is_anyaddr = host_is_ip_anyaddr(asp->cfg.local.host[i], iter_is_v6);</span><br><span style="color: hsl(120, 100%, 40%);">+                             /* "::" (v6) covers "0.0.0.0" (v4), but not otherwise */</span><br><span style="color: hsl(120, 100%, 40%);">+                          if (iter_is_v6 != loc_is_v6 &&</span><br><span style="color: hsl(120, 100%, 40%);">+                                    !(iter_is_v6 && iter_is_anyaddr))</span><br><span style="color: hsl(120, 100%, 40%);">+                                 continue;</span><br><span style="color: hsl(120, 100%, 40%);">+                             if (iter_is_anyaddr ||</span><br><span style="color: hsl(120, 100%, 40%);">+                                    !strcmp(asp->cfg.local.host[i], hostbuf_l))</span><br><span>                                   break;</span><br><span>                       }</span><br><span>                    if (i == asp->cfg.local.host_cnt)</span><br><span>@@ -1294,7 +1303,14 @@</span><br><span>                        /* If no remote host was set, it's probably a server and hence we match any cli src */</span><br><span>                   if (asp->cfg.remote.host_cnt) {</span><br><span>                           for (i = 0; i < asp->cfg.remote.host_cnt; i++) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                  if (!asp->cfg.remote.host[i] || !strcmp(asp->cfg.remote.host[i], hostbuf_r))</span><br><span style="color: hsl(120, 100%, 40%);">+                                    bool iter_is_v6 = osmo_ip_str_type(asp->cfg.remote.host[i]) == AF_INET6;</span><br><span style="color: hsl(120, 100%, 40%);">+                                   bool iter_is_anyaddr = host_is_ip_anyaddr(asp->cfg.remote.host[i], iter_is_v6);</span><br><span style="color: hsl(120, 100%, 40%);">+                                    /* "::" (v6) covers "0.0.0.0" (v4), but not otherwise */</span><br><span style="color: hsl(120, 100%, 40%);">+                                  if (iter_is_v6 != rem_is_v6 &&</span><br><span style="color: hsl(120, 100%, 40%);">+                                            !(iter_is_v6 && iter_is_anyaddr))</span><br><span style="color: hsl(120, 100%, 40%);">+                                         continue;</span><br><span style="color: hsl(120, 100%, 40%);">+                                     if (iter_is_anyaddr ||</span><br><span style="color: hsl(120, 100%, 40%);">+                                            !strcmp(asp->cfg.remote.host[i], hostbuf_r))</span><br><span>                                          break;</span><br><span>                               }</span><br><span>                            if (i == asp->cfg.remote.host_cnt)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmo-sccp/+/19852">change 19852</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/libosmo-sccp/+/19852"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmo-sccp </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I36dd8f1978e3b7b785660745378c9cf77a21a566 </div>
<div style="display:none"> Gerrit-Change-Number: 19852 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>