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
This commit is contained in:
Neels Hofmeyr 2019-10-30 04:37:47 +01:00
parent 02f25ea77b
commit 002a51d731
5 changed files with 678 additions and 0 deletions

View File

@ -70,6 +70,7 @@ struct osmo_sockaddr_str {
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);

View File

@ -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. */

View File

@ -95,6 +95,80 @@ bool osmo_sockaddr_str_is_nonzero(const struct osmo_sockaddr_str *sockaddr_str)
}
}
/*! 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

View File

@ -55,6 +55,7 @@ struct osmo_sockaddr_str oip_data[] = {
{ .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 @@ void sockaddr_str_test_conversions()
}
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;
}

View File

@ -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)