Change in libosmocore[master]: add osmo_sockaddr_str_cmp()

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

neels gerrit-no-reply at lists.osmocom.org
Thu Nov 21 21:12:49 UTC 2019


neels has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/15961 )

Change subject: add osmo_sockaddr_str_cmp()
......................................................................

add osmo_sockaddr_str_cmp()

Currently planned user: for Distributed GSM in osmo-hlr: setting per-MSC
service addresses in VTY: replace/remove existing entries.

osmo_sockaddr_str_cmp() is useful to catch identical resulting IP addresses,
regardless of differing strings (e.g. '0::' and '::' are equal but differ in
strings).

Change-Id: I0dbc1cf707098dcda75f8e07c1b936951f9f9501
---
M include/osmocom/core/sockaddr_str.h
M include/osmocom/core/utils.h
M src/sockaddr_str.c
M tests/sockaddr_str/sockaddr_str_test.c
M tests/sockaddr_str/sockaddr_str_test.ok
5 files changed, 678 insertions(+), 0 deletions(-)

Approvals:
  Jenkins Builder: Verified
  neels: Looks good to me, approved



diff --git a/include/osmocom/core/sockaddr_str.h b/include/osmocom/core/sockaddr_str.h
index 6dd428c..d7a8cdf 100644
--- a/include/osmocom/core/sockaddr_str.h
+++ b/include/osmocom/core/sockaddr_str.h
@@ -70,6 +70,7 @@
 
 bool osmo_sockaddr_str_is_set(const struct osmo_sockaddr_str *sockaddr_str);
 bool osmo_sockaddr_str_is_nonzero(const struct osmo_sockaddr_str *sockaddr_str);
+int osmo_sockaddr_str_cmp(const struct osmo_sockaddr_str *a, const struct osmo_sockaddr_str *b);
 
 int osmo_sockaddr_str_from_str(struct osmo_sockaddr_str *sockaddr_str, const char *ip, uint16_t port);
 
diff --git a/include/osmocom/core/utils.h b/include/osmocom/core/utils.h
index 601bb56..c4e6f5f 100644
--- a/include/osmocom/core/utils.h
+++ b/include/osmocom/core/utils.h
@@ -21,6 +21,8 @@
 #define OSMO_MAX(a, b) ((a) >= (b) ? (a) : (b))
 /*! Return the minimum of two specified values */
 #define OSMO_MIN(a, b) ((a) >= (b) ? (b) : (a))
+/*! Return a typical cmp result for comparable entities a and b. */
+#define OSMO_CMP(a, b) ((a) < (b)? -1 : ((a) > (b)? 1 : 0))
 /*! Stringify the name of a macro x, e.g. an FSM event name.
  * Note: if nested within another preprocessor macro, this will
  * stringify the value of x instead of its name. */
diff --git a/src/sockaddr_str.c b/src/sockaddr_str.c
index f523050..5c548b4 100644
--- a/src/sockaddr_str.c
+++ b/src/sockaddr_str.c
@@ -95,6 +95,80 @@
 	}
 }
 
+/*! Compare two osmo_sockaddr_str instances by string comparison.
+ * Compare by strcmp() for the address and compare port numbers, ignore the AF_INET/AF_INET6 value.
+ * \param[in] a  left side of comparison.
+ * \param[in] b  right side of comparison.
+ * \return -1 if a < b, 0 if a == b, 1 if a > b.
+ */
+static int osmo_sockaddr_str_cmp_by_string(const struct osmo_sockaddr_str *a, const struct osmo_sockaddr_str *b)
+{
+	int cmp;
+	if (a == b)
+		return 0;
+	if (!a)
+		return -1;
+	if (!b)
+		return 1;
+	cmp = strncmp(a->ip, b->ip, sizeof(a->ip));
+	if (cmp)
+		return cmp;
+	return OSMO_CMP(a->port, b->port);
+}
+
+/*! Compare two osmo_sockaddr_str instances by resulting IP address.
+ * Compare IP versions (AF_INET vs AF_INET6), compare resulting IP address bytes and compare port numbers.
+ * If the IP address strings cannot be parsed successfully / if the 'af' is neither AF_INET nor AF_INET6, fall back to
+ * pure string comparison of the ip address.
+ * \param[in] a  left side of comparison.
+ * \param[in] b  right side of comparison.
+ * \return -1 if a < b, 0 if a == b, 1 if a > b.
+ */
+int osmo_sockaddr_str_cmp(const struct osmo_sockaddr_str *a, const struct osmo_sockaddr_str *b)
+{
+	int cmp;
+	uint32_t ipv4_a, ipv4_b;
+	struct in6_addr ipv6_a = {}, ipv6_b = {};
+
+	if (a == b)
+		return 0;
+	if (!a)
+		return -1;
+	if (!b)
+		return 1;
+	cmp = OSMO_CMP(a->af, b->af);
+	if (cmp)
+		return cmp;
+	switch (a->af) {
+	case AF_INET:
+		if (osmo_sockaddr_str_to_32(a, &ipv4_a)
+		    || osmo_sockaddr_str_to_32(b, &ipv4_b))
+			goto fallback_to_strcmp;
+		cmp = OSMO_CMP(ipv4_a, ipv4_b);
+		break;
+
+	case AF_INET6:
+		if (osmo_sockaddr_str_to_in6_addr(a, &ipv6_a)
+		    || osmo_sockaddr_str_to_in6_addr(b, &ipv6_b))
+			goto fallback_to_strcmp;
+		cmp = memcmp(&ipv6_a, &ipv6_b, sizeof(ipv6_a));
+		break;
+
+	default:
+		goto fallback_to_strcmp;
+	}
+	if (cmp)
+		return cmp;
+
+	cmp = OSMO_CMP(a->port, b->port);
+	if (cmp)
+		return cmp;
+	return 0;
+
+fallback_to_strcmp:
+	return osmo_sockaddr_str_cmp_by_string(a, b);
+}
+
 /*! Distinguish between valid IPv4 and IPv6 strings.
  * This does not verify whether the string is a valid IP address; it assumes that the input is a valid IP address, and
  * on that premise returns whether it is an IPv4 or IPv6 string, by looking for '.' and ':' characters.  It is safe to
diff --git a/tests/sockaddr_str/sockaddr_str_test.c b/tests/sockaddr_str/sockaddr_str_test.c
index bf7d738..7d8fe4f 100644
--- a/tests/sockaddr_str/sockaddr_str_test.c
+++ b/tests/sockaddr_str/sockaddr_str_test.c
@@ -55,6 +55,7 @@
 	{ .af = AF_INET6, .ip = "::1:10.9.8.7", .port = 1 },
 	{ .af = AF_INET, .ip = "0.0.0.0", .port = 5 },
 	{ .af = AF_INET6, .ip = "::", .port = 5 },
+	{ .af = AF_INET6, .ip = "0::", .port = 5 },
 };
 
 const char *af_name(int af)
@@ -236,9 +237,34 @@
 
 }
 
+static void test_osmo_sockaddr_str_cmp()
+{
+	int i;
+	printf("\n\n%s\n", __func__);
+	for (i = 0; i < ARRAY_SIZE(oip_data); i++) {
+		/* use a copy to not hit the pointer comparison in osmo_sockaddr_str_cmp(). */
+		struct osmo_sockaddr_str _a = oip_data[i];
+		struct osmo_sockaddr_str *a = &_a;
+		int j;
+		printf("[%2d]\n", i);
+
+		for (j = 0; j < ARRAY_SIZE(oip_data); j++) {
+			struct osmo_sockaddr_str *b = &oip_data[j];
+			int ip_rc = osmo_sockaddr_str_cmp(a, b);
+			printf("  osmo_sockaddr_str_cmp(): " OSMO_SOCKADDR_STR_FMT "%s %s " OSMO_SOCKADDR_STR_FMT "%s\n",
+			       OSMO_SOCKADDR_STR_FMT_ARGS(a),
+			       osmo_sockaddr_str_is_nonzero(a) ? "" : "(zero)",
+			       ip_rc < 0? "<" : (ip_rc == 0 ? "==" : ">" ),
+			       OSMO_SOCKADDR_STR_FMT_ARGS(b),
+			       osmo_sockaddr_str_is_nonzero(b) ? "" : "(zero)");
+		}
+	}
+}
+
 int main(int argc, char **argv)
 {
 	sockaddr_str_test_conversions();
+	test_osmo_sockaddr_str_cmp();
 	return 0;
 }
 
diff --git a/tests/sockaddr_str/sockaddr_str_test.ok b/tests/sockaddr_str/sockaddr_str_test.ok
index bc18225..31f630f 100644
--- a/tests/sockaddr_str/sockaddr_str_test.ok
+++ b/tests/sockaddr_str/sockaddr_str_test.ok
@@ -362,3 +362,578 @@
   osmo_sockaddr_str_to_sockaddr() rc == 0 sockaddr_storage=0a00000500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    -> osmo_sockaddr_str_from_sockaddr() rc == 0 { .af = AF_INET6, .ip = "::", .port = 5 }
   osmo_sockaddr_str_from_str() rc == 0 { .af = AF_INET6, .ip = "::", .port = 5 }
+
+
+{ .af = AF_INET6, .ip = "0::", .port = 5 }
+  OSMO_SOCKADDR_STR_FMT: '[0::]:5'
+  osmo_sockaddr_str_is_set() = true
+  osmo_sockaddr_str_is_nonzero() = false
+  osmo_sockaddr_str_to_in_addr() rc < 0 in_addr=00000000
+  osmo_sockaddr_str_to_in6_addr() rc == 0 in6_addr=00000000000000000000000000000000
+   -> osmo_sockaddr_str_from_in6_addr() rc == 0 { .af = AF_INET6, .ip = "::", .port = 5 }
+      DIFFERS!
+  osmo_sockaddr_str_to_32() rc < 0 uint32_t=0x0
+  osmo_sockaddr_str_to_32n() rc < 0 uint32_t=0x0
+  osmo_sockaddr_str_to_sockaddr_in() rc < 0 sockaddr_in=00000000000000000000000000000000
+  osmo_sockaddr_str_to_sockaddr_in6() rc == 0 sockaddr_in6=0a000005000000000000000000000000000000000000000000000000
+   -> osmo_sockaddr_str_from_sockaddr_in6() rc == 0 { .af = AF_INET6, .ip = "::", .port = 5 }
+      DIFFERS!
+  osmo_sockaddr_str_to_sockaddr() rc == 0 sockaddr_storage=0a00000500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+   -> osmo_sockaddr_str_from_sockaddr() rc == 0 { .af = AF_INET6, .ip = "::", .port = 5 }
+      DIFFERS!
+  osmo_sockaddr_str_from_str() rc == 0 { .af = AF_INET6, .ip = "0::", .port = 5 }
+
+
+test_osmo_sockaddr_str_cmp
+[ 0]
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 == 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < [::]:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 > :5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < []:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < [::]:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5 < [0::]:5(zero)
+[ 1]
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) == 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < [::]:0(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) > :5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < []:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < [::]:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:0(zero) < [0::]:5(zero)
+[ 2]
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 == 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 < not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 < [::]:0(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 > :5(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 < []:5(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 < [::]:5(zero)
+  osmo_sockaddr_str_cmp(): 255.255.255.255:65535 < [0::]:5(zero)
+[ 3]
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) == 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < [::]:0(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) > :5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < []:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < [::]:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.256:1(zero) < [0::]:5(zero)
+[ 4]
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) == not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) < [::]:0(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) > :5(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) < []:5(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) < [::]:5(zero)
+  osmo_sockaddr_str_cmp(): not an ip address:1(zero) < [0::]:5(zero)
+[ 5]
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 == [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > [::]:0(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > :5(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > []:5(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > [::]:5(zero)
+  osmo_sockaddr_str_cmp(): [1:2:3::4]:5 > [0::]:5(zero)
+[ 6]
+  osmo_sockaddr_str_cmp(): [::]:0(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): [::]:0(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): [::]:0(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): [::]:0(zero) == [::]:0(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): [::]:0(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): [::]:0(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) > :5(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) > []:5(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): [::]:0(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) < [::]:5(zero)
+  osmo_sockaddr_str_cmp(): [::]:0(zero) < [0::]:5(zero)
+[ 7]
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > [::]:0(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) == [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > :5(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > []:5(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > [::]:5(zero)
+  osmo_sockaddr_str_cmp(): [::1]:0(zero) > [0::]:5(zero)
+[ 8]
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [::]:0(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 == [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 == [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > :5(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > []:5(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [::]:5(zero)
+  osmo_sockaddr_str_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [0::]:5(zero)
+[ 9]
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [::]:0(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 == [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 == [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > :5(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > []:5(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [::]:5(zero)
+  osmo_sockaddr_str_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [0::]:5(zero)
+[10]
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > [::]:0(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) == [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > :5(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > []:5(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > [::]:5(zero)
+  osmo_sockaddr_str_cmp(): [::fffff]:1(zero) > [0::]:5(zero)
+[11]
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > [::]:0(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) == [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > :5(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > []:5(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > [::]:5(zero)
+  osmo_sockaddr_str_cmp(): [not an ip address]:1(zero) > [0::]:5(zero)
+[12]
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) < [::]:0(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) == [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) > :5(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) > []:5(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) < [::]:5(zero)
+  osmo_sockaddr_str_cmp(): [1.2.3.4]:5(zero) > [0::]:5(zero)
+[13]
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) < [::]:0(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) == 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) > :5(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) < []:5(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) < [::]:5(zero)
+  osmo_sockaddr_str_cmp(): 1:2:3::4:5(zero) < [0::]:5(zero)
+[14]
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < [::]:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) == 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < :5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < []:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < [::]:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:5(zero) < [0::]:5(zero)
+[15]
+  osmo_sockaddr_str_cmp(): :5(zero) < 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): :5(zero) < 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): :5(zero) < 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): :5(zero) < [::]:0(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): :5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): :5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) == :5(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) < []:5(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) < 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) < 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): :5(zero) < 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) < [::]:5(zero)
+  osmo_sockaddr_str_cmp(): :5(zero) < [0::]:5(zero)
+[16]
+  osmo_sockaddr_str_cmp(): []:5(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): []:5(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): []:5(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): []:5(zero) < [::]:0(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): []:5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): []:5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) > :5(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) == []:5(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): []:5(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) < [::]:5(zero)
+  osmo_sockaddr_str_cmp(): []:5(zero) < [0::]:5(zero)
+[17]
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < [::]:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) > :5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < []:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) == 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < [::]:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3.4:0(zero) < [0::]:5(zero)
+[18]
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) < [::]:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) > :5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) < []:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) == 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) < [::]:5(zero)
+  osmo_sockaddr_str_cmp(): 1.2.3:4:5:0(zero) < [0::]:5(zero)
+[19]
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > [::]:0(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > :5(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > []:5(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 == [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > [::]:5(zero)
+  osmo_sockaddr_str_cmp(): [::1:10.9.8.7]:1 > [0::]:5(zero)
+[20]
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < [::]:0(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) > :5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < []:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) == 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < [::]:5(zero)
+  osmo_sockaddr_str_cmp(): 0.0.0.0:5(zero) < [0::]:5(zero)
+[21]
+  osmo_sockaddr_str_cmp(): [::]:5(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): [::]:5(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): [::]:5(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): [::]:5(zero) > [::]:0(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): [::]:5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): [::]:5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) > :5(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) > []:5(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): [::]:5(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) == [::]:5(zero)
+  osmo_sockaddr_str_cmp(): [::]:5(zero) == [0::]:5(zero)
+[22]
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) > [::]:0(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) > 1.2.3.4:5(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) > :5(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) > []:5(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) == [::]:5(zero)
+  osmo_sockaddr_str_cmp(): [0::]:5(zero) == [0::]:5(zero)

-- 
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/15961
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I0dbc1cf707098dcda75f8e07c1b936951f9f9501
Gerrit-Change-Number: 15961
Gerrit-PatchSet: 7
Gerrit-Owner: neels <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: osmith <osmith at sysmocom.de>
Gerrit-CC: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20191121/2fdf2bed/attachment.htm>


More information about the gerrit-log mailing list