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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">fix OSMO_SOCKADDR_STR_FMT for IPv6<br><br>The format prints IP:port separated by a colon, which of course is confusing<br>when the IPv6 address itself contains mostly colons. The new format adds square<br>braces.<br><br>  cafe:face::1:42 -> [cafe:face::1]:42<br><br>The IPv4 format remains unchanged:<br>  1.2.3.4:42<br><br>Change-Id: I161f8427729ae31be0eac719b7a4a9290715e37f<br>---<br>M include/osmocom/core/sockaddr_str.h<br>M tests/sockaddr_str/sockaddr_str_test.ok<br>2 files changed, 17 insertions(+), 13 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/core/sockaddr_str.h b/include/osmocom/core/sockaddr_str.h</span><br><span>index d47b2a4..6dd428c 100644</span><br><span>--- a/include/osmocom/core/sockaddr_str.h</span><br><span>+++ b/include/osmocom/core/sockaddr_str.h</span><br><span>@@ -61,8 +61,12 @@</span><br><span>  *     struct osmo_sockaddr_str *my_sockaddr_str = ...;</span><br><span>  *     printf("got " OSMO_SOCKADDR_STR_FMT "\n", OSMO_SOCKADDR_STR_FMT_ARGS(my_sockaddr_str));</span><br><span>  */</span><br><span style="color: hsl(0, 100%, 40%);">-#define OSMO_SOCKADDR_STR_FMT "%s:%u"</span><br><span style="color: hsl(0, 100%, 40%);">-#define OSMO_SOCKADDR_STR_FMT_ARGS(R) ((R)? (R)->ip : "NULL"), ((R)? (R)->port : 0)</span><br><span style="color: hsl(120, 100%, 40%);">+#define OSMO_SOCKADDR_STR_FMT "%s%s%s:%u"</span><br><span style="color: hsl(120, 100%, 40%);">+#define OSMO_SOCKADDR_STR_FMT_ARGS(R) \</span><br><span style="color: hsl(120, 100%, 40%);">+       ((R) && (R)->af == AF_INET6)? "[" : "", \</span><br><span style="color: hsl(120, 100%, 40%);">+      (R)? (R)->ip : "NULL", \</span><br><span style="color: hsl(120, 100%, 40%);">+ ((R) && (R)->af == AF_INET6)? "]" : "", \</span><br><span style="color: hsl(120, 100%, 40%);">+      (R)? (R)->port : 0</span><br><span> </span><br><span> bool osmo_sockaddr_str_is_set(const struct osmo_sockaddr_str *sockaddr_str);</span><br><span> bool osmo_sockaddr_str_is_nonzero(const struct osmo_sockaddr_str *sockaddr_str);</span><br><span>diff --git a/tests/sockaddr_str/sockaddr_str_test.ok b/tests/sockaddr_str/sockaddr_str_test.ok</span><br><span>index 5ebf7be..bc18225 100644</span><br><span>--- a/tests/sockaddr_str/sockaddr_str_test.ok</span><br><span>+++ b/tests/sockaddr_str/sockaddr_str_test.ok</span><br><span>@@ -86,7 +86,7 @@</span><br><span> </span><br><span> </span><br><span> { .af = AF_INET6, .ip = "1:2:3::4", .port = 5 }</span><br><span style="color: hsl(0, 100%, 40%);">-  OSMO_SOCKADDR_STR_FMT: '1:2:3::4:5'</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_SOCKADDR_STR_FMT: '[1:2:3::4]:5'</span><br><span>   osmo_sockaddr_str_is_set() = true</span><br><span>   osmo_sockaddr_str_is_nonzero() = true</span><br><span>   osmo_sockaddr_str_to_in_addr() rc < 0 in_addr=00000000</span><br><span>@@ -103,7 +103,7 @@</span><br><span> </span><br><span> </span><br><span> { .af = AF_INET6, .ip = "::", .port = 0 }</span><br><span style="color: hsl(0, 100%, 40%);">-  OSMO_SOCKADDR_STR_FMT: ':::0'</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_SOCKADDR_STR_FMT: '[::]:0'</span><br><span>   osmo_sockaddr_str_is_set() = false</span><br><span>   osmo_sockaddr_str_is_nonzero() = false</span><br><span>   osmo_sockaddr_str_to_in_addr() rc < 0 in_addr=00000000</span><br><span>@@ -120,7 +120,7 @@</span><br><span> </span><br><span> </span><br><span> { .af = AF_INET6, .ip = "::1", .port = 0 }</span><br><span style="color: hsl(0, 100%, 40%);">-  OSMO_SOCKADDR_STR_FMT: '::1:0'</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_SOCKADDR_STR_FMT: '[::1]:0'</span><br><span>   osmo_sockaddr_str_is_set() = false</span><br><span>   osmo_sockaddr_str_is_nonzero() = false</span><br><span>   osmo_sockaddr_str_to_in_addr() rc < 0 in_addr=00000000</span><br><span>@@ -137,7 +137,7 @@</span><br><span> </span><br><span> </span><br><span> { .af = AF_INET6, .ip = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", .port = 65535 }</span><br><span style="color: hsl(0, 100%, 40%);">-  OSMO_SOCKADDR_STR_FMT: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:65535'</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_SOCKADDR_STR_FMT: '[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535'</span><br><span>   osmo_sockaddr_str_is_set() = true</span><br><span>   osmo_sockaddr_str_is_nonzero() = true</span><br><span>   osmo_sockaddr_str_to_in_addr() rc < 0 in_addr=00000000</span><br><span>@@ -154,7 +154,7 @@</span><br><span> </span><br><span> </span><br><span> { .af = AF_INET6, .ip = "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", .port = 65535 }</span><br><span style="color: hsl(0, 100%, 40%);">-  OSMO_SOCKADDR_STR_FMT: 'FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:65535'</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_SOCKADDR_STR_FMT: '[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535'</span><br><span>   osmo_sockaddr_str_is_set() = true</span><br><span>   osmo_sockaddr_str_is_nonzero() = true</span><br><span>   osmo_sockaddr_str_to_in_addr() rc < 0 in_addr=00000000</span><br><span>@@ -174,7 +174,7 @@</span><br><span> </span><br><span> </span><br><span> { .af = AF_INET6, .ip = "::fffff", .port = 1 }</span><br><span style="color: hsl(0, 100%, 40%);">-  OSMO_SOCKADDR_STR_FMT: '::fffff:1'</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_SOCKADDR_STR_FMT: '[::fffff]:1'</span><br><span>   osmo_sockaddr_str_is_set() = true</span><br><span>   osmo_sockaddr_str_is_nonzero() = false</span><br><span>   osmo_sockaddr_str_to_in_addr() rc < 0 in_addr=00000000</span><br><span>@@ -188,7 +188,7 @@</span><br><span> </span><br><span> </span><br><span> { .af = AF_INET6, .ip = "not an ip address", .port = 1 }</span><br><span style="color: hsl(0, 100%, 40%);">-  OSMO_SOCKADDR_STR_FMT: 'not an ip address:1'</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_SOCKADDR_STR_FMT: '[not an ip address]:1'</span><br><span>   osmo_sockaddr_str_is_set() = true</span><br><span>   osmo_sockaddr_str_is_nonzero() = false</span><br><span>   osmo_sockaddr_str_to_in_addr() rc < 0 in_addr=00000000</span><br><span>@@ -202,7 +202,7 @@</span><br><span> </span><br><span> </span><br><span> { .af = AF_INET6, .ip = "1.2.3.4", .port = 5 }</span><br><span style="color: hsl(0, 100%, 40%);">-  OSMO_SOCKADDR_STR_FMT: '1.2.3.4:5'</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_SOCKADDR_STR_FMT: '[1.2.3.4]:5'</span><br><span>   osmo_sockaddr_str_is_set() = true</span><br><span>   osmo_sockaddr_str_is_nonzero() = false</span><br><span>   osmo_sockaddr_str_to_in_addr() rc < 0 in_addr=00000000</span><br><span>@@ -261,7 +261,7 @@</span><br><span> </span><br><span> </span><br><span> { .af = AF_INET6, .ip = "", .port = 5 }</span><br><span style="color: hsl(0, 100%, 40%);">-  OSMO_SOCKADDR_STR_FMT: ':5'</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_SOCKADDR_STR_FMT: '[]:5'</span><br><span>   osmo_sockaddr_str_is_set() = false</span><br><span>   osmo_sockaddr_str_is_nonzero() = false</span><br><span>   osmo_sockaddr_str_to_in_addr() rc < 0 in_addr=00000000</span><br><span>@@ -309,7 +309,7 @@</span><br><span> </span><br><span> </span><br><span> { .af = AF_INET6, .ip = "::1:10.9.8.7", .port = 1 }</span><br><span style="color: hsl(0, 100%, 40%);">-  OSMO_SOCKADDR_STR_FMT: '::1:10.9.8.7:1'</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_SOCKADDR_STR_FMT: '[::1:10.9.8.7]:1'</span><br><span>   osmo_sockaddr_str_is_set() = true</span><br><span>   osmo_sockaddr_str_is_nonzero() = true</span><br><span>   osmo_sockaddr_str_to_in_addr() rc < 0 in_addr=00000000</span><br><span>@@ -348,7 +348,7 @@</span><br><span> </span><br><span> </span><br><span> { .af = AF_INET6, .ip = "::", .port = 5 }</span><br><span style="color: hsl(0, 100%, 40%);">-  OSMO_SOCKADDR_STR_FMT: ':::5'</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_SOCKADDR_STR_FMT: '[::]:5'</span><br><span>   osmo_sockaddr_str_is_set() = true</span><br><span>   osmo_sockaddr_str_is_nonzero() = false</span><br><span>   osmo_sockaddr_str_to_in_addr() rc < 0 in_addr=00000000</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/15959">change 15959</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/+/15959"/><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: I161f8427729ae31be0eac719b7a4a9290715e37f </div>
<div style="display:none"> Gerrit-Change-Number: 15959 </div>
<div style="display:none"> Gerrit-PatchSet: 5 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@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-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>