Change in libosmocore[master]: add osmo_sockaddr_str_cmp() and _str_ip_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
Mon Nov 4 18:13:52 UTC 2019


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


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

add osmo_sockaddr_str_cmp() and _str_ip_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 sort existing entries, while showing
possible duplicates evaluating to the same actual IP address bytes.

osmo_sockaddr_str_ip_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, 1,263 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/61/15961/1

diff --git a/include/osmocom/core/sockaddr_str.h b/include/osmocom/core/sockaddr_str.h
index aa3da6a..0511771 100644
--- a/include/osmocom/core/sockaddr_str.h
+++ b/include/osmocom/core/sockaddr_str.h
@@ -71,6 +71,8 @@
 
 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_ip_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 4eba987..508b6b6 100644
--- a/include/osmocom/core/utils.h
+++ b/include/osmocom/core/utils.h
@@ -22,6 +22,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..0d824d9 100644
--- a/src/sockaddr_str.c
+++ b/src/sockaddr_str.c
@@ -95,6 +95,86 @@
 	}
 }
 
+/*! Compare two osmo_sockaddr_str instances by string comparison.
+ * Compare IP versions (AF_INET vs AF_INET6), use strcmp() for the address and compare port numbers.
+ * \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;
+	if (a == b)
+		return 0;
+	if (!a)
+		return -1;
+	if (!b)
+		return 1;
+	cmp = OSMO_CMP(a->af, b->af);
+	if (cmp)
+		return cmp;
+	cmp = strncmp(a->ip, b->ip, sizeof(a->ip));
+	if (cmp)
+		return cmp;
+	cmp = OSMO_CMP(a->port, b->port);
+	if (cmp)
+		return cmp;
+	return 0;
+}
+
+/*! 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
+ * osmo_sockaddr_str_cmp().
+ * \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_ip_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(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..3697256 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,57 @@
 
 }
 
+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 str_rc = osmo_sockaddr_str_cmp(a, b);
+			printf("  osmo_sockaddr_str_cmp(): \"" OSMO_SOCKADDR_STR_FMT "\" %s \"" OSMO_SOCKADDR_STR_FMT "\"\n",
+			       OSMO_SOCKADDR_STR_FMT_ARGS(a),
+			       str_rc < 0? "<" : (str_rc == 0? "==" : ">" ),
+			       OSMO_SOCKADDR_STR_FMT_ARGS(b));
+		}
+	}
+}
+
+static void test_osmo_sockaddr_str_ip_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_ip_cmp(a, b);
+			printf("  osmo_sockaddr_str_ip_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();
+	test_osmo_sockaddr_str_ip_cmp();
 	return 0;
 }
 
diff --git a/tests/sockaddr_str/sockaddr_str_test.ok b/tests/sockaddr_str/sockaddr_str_test.ok
index 52636f0..d8269ed 100644
--- a/tests/sockaddr_str/sockaddr_str_test.ok
+++ b/tests/sockaddr_str/sockaddr_str_test.ok
@@ -362,3 +362,1133 @@
   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"
+  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"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:5" < "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:5" < "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:5" < "[::]:0"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:5" < "[::1]:0"
+  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"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:5" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:5" < "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:5" < "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:5" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:5" > ":5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:5" < "[]:5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:5" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:5" < "1.2.3:4:5:0"
+  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"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:5" < "[::]:5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:5" < "[0::]:5"
+[ 1]
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" == "0.0.0.0:0"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "255.255.255.255:65535"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "0.0.0.256:1"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "[::]:0"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "[::1]:0"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "[::fffff]:1"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" > ":5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "[]:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "1.2.3:4:5:0"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "[::1:10.9.8.7]:1"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "0.0.0.0:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "[::]:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:0" < "[0::]:5"
+[ 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"
+  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"
+  osmo_sockaddr_str_cmp(): "255.255.255.255:65535" < "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "255.255.255.255:65535" < "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "255.255.255.255:65535" < "[::]:0"
+  osmo_sockaddr_str_cmp(): "255.255.255.255:65535" < "[::1]:0"
+  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"
+  osmo_sockaddr_str_cmp(): "255.255.255.255:65535" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "255.255.255.255:65535" < "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "255.255.255.255:65535" > "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "255.255.255.255:65535" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "255.255.255.255:65535" > ":5"
+  osmo_sockaddr_str_cmp(): "255.255.255.255:65535" < "[]:5"
+  osmo_sockaddr_str_cmp(): "255.255.255.255:65535" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "255.255.255.255:65535" > "1.2.3:4:5:0"
+  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"
+  osmo_sockaddr_str_cmp(): "255.255.255.255:65535" < "[::]:5"
+  osmo_sockaddr_str_cmp(): "255.255.255.255:65535" < "[0::]:5"
+[ 3]
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" > "0.0.0.0:0"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "255.255.255.255:65535"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" == "0.0.0.256:1"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "[::]:0"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "[::1]:0"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "[::fffff]:1"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" > ":5"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "[]:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "1.2.3:4:5:0"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "[::1:10.9.8.7]:1"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" > "0.0.0.0:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "[::]:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.256:1" < "[0::]:5"
+[ 4]
+  osmo_sockaddr_str_cmp(): "not an ip address:1" > "1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" > "0.0.0.0:0"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" > "255.255.255.255:65535"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" > "0.0.0.256:1"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" == "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" < "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" < "[::]:0"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" < "[::1]:0"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" < "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" < "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" < "[::fffff]:1"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" < "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" > "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" > ":5"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" < "[]:5"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" > "1.2.3:4:5:0"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" < "[::1:10.9.8.7]:1"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" > "0.0.0.0:5"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" < "[::]:5"
+  osmo_sockaddr_str_cmp(): "not an ip address:1" < "[0::]:5"
+[ 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"
+  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"
+  osmo_sockaddr_str_cmp(): "[1:2:3::4]:5" > "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "[1:2:3::4]:5" == "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "[1:2:3::4]:5" < "[::]:0"
+  osmo_sockaddr_str_cmp(): "[1:2:3::4]:5" < "[::1]:0"
+  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"
+  osmo_sockaddr_str_cmp(): "[1:2:3::4]:5" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "[1:2:3::4]:5" > "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "[1:2:3::4]:5" > "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "[1:2:3::4]:5" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[1:2:3::4]:5" > ":5"
+  osmo_sockaddr_str_cmp(): "[1:2:3::4]:5" > "[]:5"
+  osmo_sockaddr_str_cmp(): "[1:2:3::4]:5" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "[1:2:3::4]:5" > "1.2.3:4:5:0"
+  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"
+  osmo_sockaddr_str_cmp(): "[1:2:3::4]:5" < "[::]:5"
+  osmo_sockaddr_str_cmp(): "[1:2:3::4]:5" > "[0::]:5"
+[ 6]
+  osmo_sockaddr_str_cmp(): "[::]:0" > "1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[::]:0" > "0.0.0.0:0"
+  osmo_sockaddr_str_cmp(): "[::]:0" > "255.255.255.255:65535"
+  osmo_sockaddr_str_cmp(): "[::]:0" > "0.0.0.256:1"
+  osmo_sockaddr_str_cmp(): "[::]:0" > "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "[::]:0" > "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "[::]:0" == "[::]:0"
+  osmo_sockaddr_str_cmp(): "[::]:0" < "[::1]:0"
+  osmo_sockaddr_str_cmp(): "[::]:0" < "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
+  osmo_sockaddr_str_cmp(): "[::]:0" < "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535"
+  osmo_sockaddr_str_cmp(): "[::]:0" < "[::fffff]:1"
+  osmo_sockaddr_str_cmp(): "[::]:0" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "[::]:0" > "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "[::]:0" > "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "[::]:0" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[::]:0" > ":5"
+  osmo_sockaddr_str_cmp(): "[::]:0" > "[]:5"
+  osmo_sockaddr_str_cmp(): "[::]:0" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "[::]:0" > "1.2.3:4:5:0"
+  osmo_sockaddr_str_cmp(): "[::]:0" < "[::1:10.9.8.7]:1"
+  osmo_sockaddr_str_cmp(): "[::]:0" > "0.0.0.0:5"
+  osmo_sockaddr_str_cmp(): "[::]:0" < "[::]:5"
+  osmo_sockaddr_str_cmp(): "[::]:0" > "[0::]:5"
+[ 7]
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "0.0.0.0:0"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "255.255.255.255:65535"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "0.0.0.256:1"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "[::]:0"
+  osmo_sockaddr_str_cmp(): "[::1]:0" == "[::1]:0"
+  osmo_sockaddr_str_cmp(): "[::1]:0" < "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
+  osmo_sockaddr_str_cmp(): "[::1]:0" < "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535"
+  osmo_sockaddr_str_cmp(): "[::1]:0" < "[::fffff]:1"
+  osmo_sockaddr_str_cmp(): "[::1]:0" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > ":5"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "[]:5"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "1.2.3:4:5:0"
+  osmo_sockaddr_str_cmp(): "[::1]:0" < "[::1:10.9.8.7]:1"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "0.0.0.0:5"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "[::]:5"
+  osmo_sockaddr_str_cmp(): "[::1]:0" > "[0::]:5"
+[ 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"
+  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"
+  osmo_sockaddr_str_cmp(): "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535" > "not an ip address:1"
+  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"
+  osmo_sockaddr_str_cmp(): "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535" > "[::1]:0"
+  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"
+  osmo_sockaddr_str_cmp(): "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535" < "[not an ip address]:1"
+  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" > "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535" > ":5"
+  osmo_sockaddr_str_cmp(): "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535" > "[]:5"
+  osmo_sockaddr_str_cmp(): "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535" > "1.2.3:4:5:0"
+  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"
+  osmo_sockaddr_str_cmp(): "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535" > "[::]:5"
+  osmo_sockaddr_str_cmp(): "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535" > "[0::]:5"
+[ 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"
+  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"
+  osmo_sockaddr_str_cmp(): "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535" > "not an ip address:1"
+  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"
+  osmo_sockaddr_str_cmp(): "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535" > "[::1]:0"
+  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"
+  osmo_sockaddr_str_cmp(): "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535" < "[not an ip address]:1"
+  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" > "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535" > ":5"
+  osmo_sockaddr_str_cmp(): "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535" > "[]:5"
+  osmo_sockaddr_str_cmp(): "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535" > "1.2.3:4:5:0"
+  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"
+  osmo_sockaddr_str_cmp(): "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535" > "[::]:5"
+  osmo_sockaddr_str_cmp(): "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535" > "[0::]:5"
+[10]
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "0.0.0.0:0"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "255.255.255.255:65535"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "0.0.0.256:1"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "[::]:0"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "[::1]:0"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" < "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" < "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" == "[::fffff]:1"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > ":5"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "[]:5"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "1.2.3:4:5:0"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "[::1:10.9.8.7]:1"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "0.0.0.0:5"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "[::]:5"
+  osmo_sockaddr_str_cmp(): "[::fffff]:1" > "[0::]:5"
+[11]
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "0.0.0.0:0"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "255.255.255.255:65535"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "0.0.0.256:1"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "[::]:0"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "[::1]:0"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "[::fffff]:1"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" == "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > ":5"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "[]:5"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "1.2.3:4:5:0"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "[::1:10.9.8.7]:1"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "0.0.0.0:5"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "[::]:5"
+  osmo_sockaddr_str_cmp(): "[not an ip address]:1" > "[0::]:5"
+[12]
+  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"
+  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"
+  osmo_sockaddr_str_cmp(): "[1.2.3.4]:5" > "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "[1.2.3.4]:5" < "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "[1.2.3.4]:5" < "[::]:0"
+  osmo_sockaddr_str_cmp(): "[1.2.3.4]:5" < "[::1]:0"
+  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"
+  osmo_sockaddr_str_cmp(): "[1.2.3.4]:5" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "[1.2.3.4]:5" == "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "[1.2.3.4]:5" > "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "[1.2.3.4]:5" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[1.2.3.4]:5" > ":5"
+  osmo_sockaddr_str_cmp(): "[1.2.3.4]:5" > "[]:5"
+  osmo_sockaddr_str_cmp(): "[1.2.3.4]:5" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "[1.2.3.4]:5" > "1.2.3:4:5:0"
+  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"
+  osmo_sockaddr_str_cmp(): "[1.2.3.4]:5" < "[::]:5"
+  osmo_sockaddr_str_cmp(): "[1.2.3.4]:5" > "[0::]:5"
+[13]
+  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"
+  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"
+  osmo_sockaddr_str_cmp(): "1:2:3::4:5" < "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "1:2:3::4:5" < "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "1:2:3::4:5" < "[::]:0"
+  osmo_sockaddr_str_cmp(): "1:2:3::4:5" < "[::1]:0"
+  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"
+  osmo_sockaddr_str_cmp(): "1:2:3::4:5" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "1:2:3::4:5" < "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "1:2:3::4:5" == "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "1:2:3::4:5" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "1:2:3::4:5" > ":5"
+  osmo_sockaddr_str_cmp(): "1:2:3::4:5" < "[]:5"
+  osmo_sockaddr_str_cmp(): "1:2:3::4:5" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "1:2:3::4:5" > "1.2.3:4:5:0"
+  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"
+  osmo_sockaddr_str_cmp(): "1:2:3::4:5" < "[::]:5"
+  osmo_sockaddr_str_cmp(): "1:2:3::4:5" < "[0::]:5"
+[14]
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "0.0.0.0:0"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "255.255.255.255:65535"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "0.0.0.256:1"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "[::]:0"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "[::1]:0"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "[::fffff]:1"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" == "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < ":5"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "[]:5"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "1.2.3:4:5:0"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "[::1:10.9.8.7]:1"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "0.0.0.0:5"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "[::]:5"
+  osmo_sockaddr_str_cmp(): "(AF_UNSPEC)1.2.3.4:5" < "[0::]:5"
+[15]
+  osmo_sockaddr_str_cmp(): ":5" < "1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): ":5" < "0.0.0.0:0"
+  osmo_sockaddr_str_cmp(): ":5" < "255.255.255.255:65535"
+  osmo_sockaddr_str_cmp(): ":5" < "0.0.0.256:1"
+  osmo_sockaddr_str_cmp(): ":5" < "not an ip address:1"
+  osmo_sockaddr_str_cmp(): ":5" < "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): ":5" < "[::]:0"
+  osmo_sockaddr_str_cmp(): ":5" < "[::1]:0"
+  osmo_sockaddr_str_cmp(): ":5" < "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
+  osmo_sockaddr_str_cmp(): ":5" < "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535"
+  osmo_sockaddr_str_cmp(): ":5" < "[::fffff]:1"
+  osmo_sockaddr_str_cmp(): ":5" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): ":5" < "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): ":5" < "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): ":5" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): ":5" == ":5"
+  osmo_sockaddr_str_cmp(): ":5" < "[]:5"
+  osmo_sockaddr_str_cmp(): ":5" < "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): ":5" < "1.2.3:4:5:0"
+  osmo_sockaddr_str_cmp(): ":5" < "[::1:10.9.8.7]:1"
+  osmo_sockaddr_str_cmp(): ":5" < "0.0.0.0:5"
+  osmo_sockaddr_str_cmp(): ":5" < "[::]:5"
+  osmo_sockaddr_str_cmp(): ":5" < "[0::]:5"
+[16]
+  osmo_sockaddr_str_cmp(): "[]:5" > "1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[]:5" > "0.0.0.0:0"
+  osmo_sockaddr_str_cmp(): "[]:5" > "255.255.255.255:65535"
+  osmo_sockaddr_str_cmp(): "[]:5" > "0.0.0.256:1"
+  osmo_sockaddr_str_cmp(): "[]:5" > "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "[]:5" < "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "[]:5" < "[::]:0"
+  osmo_sockaddr_str_cmp(): "[]:5" < "[::1]:0"
+  osmo_sockaddr_str_cmp(): "[]:5" < "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
+  osmo_sockaddr_str_cmp(): "[]:5" < "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535"
+  osmo_sockaddr_str_cmp(): "[]:5" < "[::fffff]:1"
+  osmo_sockaddr_str_cmp(): "[]:5" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "[]:5" < "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "[]:5" > "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "[]:5" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[]:5" > ":5"
+  osmo_sockaddr_str_cmp(): "[]:5" == "[]:5"
+  osmo_sockaddr_str_cmp(): "[]:5" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "[]:5" > "1.2.3:4:5:0"
+  osmo_sockaddr_str_cmp(): "[]:5" < "[::1:10.9.8.7]:1"
+  osmo_sockaddr_str_cmp(): "[]:5" > "0.0.0.0:5"
+  osmo_sockaddr_str_cmp(): "[]:5" < "[::]:5"
+  osmo_sockaddr_str_cmp(): "[]:5" < "[0::]:5"
+[17]
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" > "0.0.0.0:0"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "255.255.255.255:65535"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" > "0.0.0.256:1"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "[::]:0"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "[::1]:0"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "[::fffff]:1"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" > ":5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "[]:5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" == "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "1.2.3:4:5:0"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "[::1:10.9.8.7]:1"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" > "0.0.0.0:5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "[::]:5"
+  osmo_sockaddr_str_cmp(): "1.2.3.4:0" < "[0::]:5"
+[18]
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" > "1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" > "0.0.0.0:0"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" < "255.255.255.255:65535"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" > "0.0.0.256:1"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" < "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" < "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" < "[::]:0"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" < "[::1]:0"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" < "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" < "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" < "[::fffff]:1"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" < "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" < "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" > ":5"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" < "[]:5"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" == "1.2.3:4:5:0"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" < "[::1:10.9.8.7]:1"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" > "0.0.0.0:5"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" < "[::]:5"
+  osmo_sockaddr_str_cmp(): "1.2.3:4:5:0" < "[0::]:5"
+[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"
+  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"
+  osmo_sockaddr_str_cmp(): "[::1:10.9.8.7]:1" > "not an ip address:1"
+  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"
+  osmo_sockaddr_str_cmp(): "[::1:10.9.8.7]:1" > "[::1]:0"
+  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"
+  osmo_sockaddr_str_cmp(): "[::1:10.9.8.7]:1" < "[not an ip address]:1"
+  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" > "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "[::1:10.9.8.7]:1" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[::1:10.9.8.7]:1" > ":5"
+  osmo_sockaddr_str_cmp(): "[::1:10.9.8.7]:1" > "[]:5"
+  osmo_sockaddr_str_cmp(): "[::1:10.9.8.7]:1" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "[::1:10.9.8.7]:1" > "1.2.3:4:5:0"
+  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"
+  osmo_sockaddr_str_cmp(): "[::1:10.9.8.7]:1" > "[::]:5"
+  osmo_sockaddr_str_cmp(): "[::1:10.9.8.7]:1" > "[0::]:5"
+[20]
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" > "0.0.0.0:0"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "255.255.255.255:65535"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "0.0.0.256:1"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "[::]:0"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "[::1]:0"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "[::fffff]:1"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" > ":5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "[]:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "1.2.3:4:5:0"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "[::1:10.9.8.7]:1"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" == "0.0.0.0:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "[::]:5"
+  osmo_sockaddr_str_cmp(): "0.0.0.0:5" < "[0::]:5"
+[21]
+  osmo_sockaddr_str_cmp(): "[::]:5" > "1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[::]:5" > "0.0.0.0:0"
+  osmo_sockaddr_str_cmp(): "[::]:5" > "255.255.255.255:65535"
+  osmo_sockaddr_str_cmp(): "[::]:5" > "0.0.0.256:1"
+  osmo_sockaddr_str_cmp(): "[::]:5" > "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "[::]:5" > "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "[::]:5" > "[::]:0"
+  osmo_sockaddr_str_cmp(): "[::]:5" < "[::1]:0"
+  osmo_sockaddr_str_cmp(): "[::]:5" < "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
+  osmo_sockaddr_str_cmp(): "[::]:5" < "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535"
+  osmo_sockaddr_str_cmp(): "[::]:5" < "[::fffff]:1"
+  osmo_sockaddr_str_cmp(): "[::]:5" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "[::]:5" > "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "[::]:5" > "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "[::]:5" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[::]:5" > ":5"
+  osmo_sockaddr_str_cmp(): "[::]:5" > "[]:5"
+  osmo_sockaddr_str_cmp(): "[::]:5" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "[::]:5" > "1.2.3:4:5:0"
+  osmo_sockaddr_str_cmp(): "[::]:5" < "[::1:10.9.8.7]:1"
+  osmo_sockaddr_str_cmp(): "[::]:5" > "0.0.0.0:5"
+  osmo_sockaddr_str_cmp(): "[::]:5" == "[::]:5"
+  osmo_sockaddr_str_cmp(): "[::]:5" > "[0::]:5"
+[22]
+  osmo_sockaddr_str_cmp(): "[0::]:5" > "1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[0::]:5" > "0.0.0.0:0"
+  osmo_sockaddr_str_cmp(): "[0::]:5" > "255.255.255.255:65535"
+  osmo_sockaddr_str_cmp(): "[0::]:5" > "0.0.0.256:1"
+  osmo_sockaddr_str_cmp(): "[0::]:5" > "not an ip address:1"
+  osmo_sockaddr_str_cmp(): "[0::]:5" < "[1:2:3::4]:5"
+  osmo_sockaddr_str_cmp(): "[0::]:5" < "[::]:0"
+  osmo_sockaddr_str_cmp(): "[0::]:5" < "[::1]:0"
+  osmo_sockaddr_str_cmp(): "[0::]:5" < "[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
+  osmo_sockaddr_str_cmp(): "[0::]:5" < "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535"
+  osmo_sockaddr_str_cmp(): "[0::]:5" < "[::fffff]:1"
+  osmo_sockaddr_str_cmp(): "[0::]:5" < "[not an ip address]:1"
+  osmo_sockaddr_str_cmp(): "[0::]:5" < "[1.2.3.4]:5"
+  osmo_sockaddr_str_cmp(): "[0::]:5" > "1:2:3::4:5"
+  osmo_sockaddr_str_cmp(): "[0::]:5" > "(AF_UNSPEC)1.2.3.4:5"
+  osmo_sockaddr_str_cmp(): "[0::]:5" > ":5"
+  osmo_sockaddr_str_cmp(): "[0::]:5" > "[]:5"
+  osmo_sockaddr_str_cmp(): "[0::]:5" > "1.2.3.4:0"
+  osmo_sockaddr_str_cmp(): "[0::]:5" > "1.2.3:4:5:0"
+  osmo_sockaddr_str_cmp(): "[0::]:5" < "[::1:10.9.8.7]:1"
+  osmo_sockaddr_str_cmp(): "[0::]:5" > "0.0.0.0:5"
+  osmo_sockaddr_str_cmp(): "[0::]:5" < "[::]:5"
+  osmo_sockaddr_str_cmp(): "[0::]:5" == "[0::]:5"
+
+
+test_osmo_sockaddr_str_ip_cmp
+[ 0]
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 == 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:5 < [0::]:5(zero)
+[ 1]
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) == 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:0(zero) < [0::]:5(zero)
+[ 2]
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 == 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 < not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 < [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 < []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 < [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 255.255.255.255:65535 < [0::]:5(zero)
+[ 3]
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) == 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.256:1(zero) < [0::]:5(zero)
+[ 4]
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) == not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) < [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) < []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) < [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): not an ip address:1(zero) < [0::]:5(zero)
+[ 5]
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 == [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [1:2:3::4]:5 > [0::]:5(zero)
+[ 6]
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) == [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) > []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) < [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:0(zero) < [0::]:5(zero)
+[ 7]
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) == [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1]:0(zero) > [0::]:5(zero)
+[ 8]
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 == [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 == [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535 > [0::]:5(zero)
+[ 9]
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 == [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 == [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535 > [0::]:5(zero)
+[10]
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) == [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::fffff]:1(zero) > [0::]:5(zero)
+[11]
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) == [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [not an ip address]:1(zero) > [0::]:5(zero)
+[12]
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) < [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) == [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) > []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) < [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [1.2.3.4]:5(zero) > [0::]:5(zero)
+[13]
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) < [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) == 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) < []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) < [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1:2:3::4:5(zero) < [0::]:5(zero)
+[14]
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) == (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < :5(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): (AF_UNSPEC)1.2.3.4:5(zero) < [0::]:5(zero)
+[15]
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) == :5(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): :5(zero) < [0::]:5(zero)
+[16]
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) < [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) == []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) < [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): []:5(zero) < [0::]:5(zero)
+[17]
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) == 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3.4:0(zero) < [0::]:5(zero)
+[18]
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) < [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) < []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) == 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) < [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 1.2.3:4:5:0(zero) < [0::]:5(zero)
+[19]
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 == [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::1:10.9.8.7]:1 > [0::]:5(zero)
+[20]
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) == 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): 0.0.0.0:5(zero) < [0::]:5(zero)
+[21]
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) > [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) > [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) > []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) == [::]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [::]:5(zero) == [0::]:5(zero)
+[22]
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) > 1.2.3.4:5
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) > 0.0.0.0:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) > 255.255.255.255:65535
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) > 0.0.0.256:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) > not an ip address:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) < [1:2:3::4]:5
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) > [::]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) < [::1]:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) < [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) < [FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:65535
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) < [::fffff]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) < [not an ip address]:1(zero)
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) < [1.2.3.4]:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) > 1:2:3::4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) > (AF_UNSPEC)1.2.3.4:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) > :5(zero)
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) > []:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) > 1.2.3.4:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) > 1.2.3:4:5:0(zero)
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) < [::1:10.9.8.7]:1
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) > 0.0.0.0:5(zero)
+  osmo_sockaddr_str_ip_cmp(): [0::]:5(zero) == [::]:5(zero)
+  osmo_sockaddr_str_ip_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: 1
Gerrit-Owner: neels <nhofmeyr at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20191104/c17a849a/attachment.htm>


More information about the gerrit-log mailing list