<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmo-sccp/+/19852">View Change</a></p><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, 17 insertions(+), 3 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/52/19852/1</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 6357be1..fd8bfdb 100644</span><br><span>--- a/src/osmo_ss7.c</span><br><span>+++ b/src/osmo_ss7.c</span><br><span>@@ -1256,6 +1256,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>@@ -1287,6 +1288,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 = host_is_ipv6(hostbuf_l);</span><br><span style="color: hsl(120, 100%, 40%);">+  rem_is_v6 = host_is_ipv6(hostbuf_r);</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>@@ -1299,8 +1302,13 @@</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_any;</span><br><span style="color: hsl(120, 100%, 40%);">+                             bool iter_is_v6 = host_is_ipv6(asp->cfg.local.host[i]);</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%);">+                                  continue;</span><br><span style="color: hsl(120, 100%, 40%);">+                             iter_is_any = iter_is_v6 ? host_is_ipv6_anyaddr(asp->cfg.local.host[i])</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     : host_is_ipv4_anyaddr(asp->cfg.local.host[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+                           if (iter_is_any || !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>@@ -1309,7 +1317,13 @@</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_any;</span><br><span style="color: hsl(120, 100%, 40%);">+                                     bool iter_is_v6 = host_is_ipv6(asp->cfg.remote.host[i]);</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%);">+                                          continue;</span><br><span style="color: hsl(120, 100%, 40%);">+                                     iter_is_any = iter_is_v6 ? host_is_ipv6_anyaddr(asp->cfg.remote.host[i])</span><br><span style="color: hsl(120, 100%, 40%);">+                                                            : host_is_ipv4_anyaddr(asp->cfg.remote.host[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+                                  if (iter_is_any || !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: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>