aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2022-08-07 00:40:48 +0700
committerMax <msuraev@sysmocom.de>2022-08-14 12:21:12 +0700
commite145e28a91eeca65d34d7b82caa2190fa89492b4 (patch)
treed90cae03b92eb4c5cca073075e6ca9e0914c9401 /tests
parent18c6a8183f92915e77368ecffb1cbf7f555453a3 (diff)
Add osmo_sockaddr_strs_to_str()
This will come in handy for working with multihomes sockets like SCTP. Related: OS#5581 Change-Id: Ic0d7c08f669994e37a2314555ecac85d28c42c89
Diffstat (limited to 'tests')
-rw-r--r--tests/sockaddr_str/sockaddr_str_test.c59
-rw-r--r--tests/sockaddr_str/sockaddr_str_test.ok6
2 files changed, 63 insertions, 2 deletions
diff --git a/tests/sockaddr_str/sockaddr_str_test.c b/tests/sockaddr_str/sockaddr_str_test.c
index 0d0674b6..8077b9a6 100644
--- a/tests/sockaddr_str/sockaddr_str_test.c
+++ b/tests/sockaddr_str/sockaddr_str_test.c
@@ -24,7 +24,10 @@
#include <errno.h>
#include <string.h>
#include <osmocom/core/sockaddr_str.h>
+#include <osmocom/core/application.h>
+#include <osmocom/core/logging.h>
#include <osmocom/core/utils.h>
+#include <osmocom/core/socket.h>
#include <netinet/in.h>
struct osmo_sockaddr_str oip_data[] = {
@@ -259,10 +262,62 @@ static void test_osmo_sockaddr_str_cmp()
}
}
+static int test_sockaddr_strs_dump(void *ctx, struct osmo_sockaddr_str *xdata, size_t count)
+{
+ char buf[OSMO_SOCK_NAME_MAXLEN * OSMO_SOCK_MAX_ADDRS * 2];
+ struct osmo_sockaddr_str *sa_strs[OSMO_SOCK_MAX_ADDRS];
+ int i, j, rc;
+
+ for (i = 0, j = 0; j < count && i < OSMO_SOCK_MAX_ADDRS; j++) {//ARRAY_SIZE(oip_data)
+ sa_strs[i] = talloc_zero(ctx, struct osmo_sockaddr_str);
+ struct sockaddr_storage tmp;
+ if (osmo_sockaddr_str_to_sockaddr(&xdata[j], &tmp) == 0) {//&oip_data[j]
+ rc = osmo_sockaddr_str_from_sockaddr(sa_strs[i], &tmp);
+ if (rc < 0) {
+ printf("osmo_sockaddr_str_from_sockaddr(%d) failed on ", i);
+ dump_oip(&xdata[j]);//&oip_data[j]
+ return rc;
+ }
+ i++;
+ }
+ }
+ rc = osmo_sockaddr_strs_to_str(buf, sizeof(buf), (const struct osmo_sockaddr_str **)sa_strs, i);
+ printf("\nTest data [%d == %ld]: %s\n", rc, strlen(buf), buf);
+ return rc;
+}
+
+const struct log_info_cat default_categories[] = {
+};
+
+static struct log_info info = {
+ .cat = default_categories,
+ .num_cat = ARRAY_SIZE(default_categories),
+};
+
int main(int argc, char **argv)
{
+ int rc;
+ void *ctx = talloc_named_const(NULL, 0, "sockaddr_str__test");
+ osmo_init_logging2(ctx, &info);
+ log_set_use_color(osmo_stderr_target, 0);
+ log_set_print_filename2(osmo_stderr_target, LOG_FILENAME_NONE);
+ log_set_print_category(osmo_stderr_target, 0);
+ log_set_print_category_hex(osmo_stderr_target, 0);
+
sockaddr_str_test_conversions();
test_osmo_sockaddr_str_cmp();
- return 0;
-}
+ rc = test_sockaddr_strs_dump(ctx, oip_data, ARRAY_SIZE(oip_data));
+ if (rc < 0)
+ return EXIT_FAILURE;
+
+ rc = test_sockaddr_strs_dump(ctx, oip_data, 1);
+ if (rc < 0)
+ return EXIT_FAILURE;
+
+ rc = test_sockaddr_strs_dump(ctx, oip_data, 0);
+ if (rc < 0)
+ return EXIT_FAILURE;
+
+ return EXIT_SUCCESS;
+}
diff --git a/tests/sockaddr_str/sockaddr_str_test.ok b/tests/sockaddr_str/sockaddr_str_test.ok
index 910e9195..504231c4 100644
--- a/tests/sockaddr_str/sockaddr_str_test.ok
+++ b/tests/sockaddr_str/sockaddr_str_test.ok
@@ -937,3 +937,9 @@ test_osmo_sockaddr_str_cmp
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)
+
+Test data [179 == 179]: (1.2.3.4|0.0.0.0|255.255.255.255|[1:2:3::4]|[::]|[::1]|[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]|[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]|1.2.3.4|[::1:a09:807]|0.0.0.0|[::]|[::])
+
+Test data [7 == 7]: 1.2.3.4
+
+Test data [2 == 2]: ()