Add a test to check convertation from char* to struct in6_addr.
Use in sandbox

Signed-off-by: Viacheslav Mitrofanov <v.v.mitrofa...@yadro.com>
---
 test/dm/eth.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/test/dm/eth.c b/test/dm/eth.c
index 5437f9ea4a..4cc90cf514 100644
--- a/test/dm/eth.c
+++ b/test/dm/eth.c
@@ -13,6 +13,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <net.h>
+#include <net6.h>
 #include <asm/eth.h>
 #include <dm/test.h>
 #include <dm/device-internal.h>
@@ -22,6 +23,53 @@
 
 #define DM_TEST_ETH_NUM                4
 
+static int dm_test_string_to_ip6(struct unit_test_state *uts)
+{
+       struct test_ip6_pair
+       {
+               char            *string_addr;
+               struct in6_addr ip6_addr;
+       };
+
+       struct in6_addr ip6 = {0};
+
+       /* Correct statements */
+       struct test_ip6_pair test_suite[] = {
+               {"2001:db8::0:1234:1", {.s6_addr32[0] = 0xb80d0120,
+                                       .s6_addr32[1] = 0x00000000,
+                                       .s6_addr32[2] = 0x00000000,
+                                       .s6_addr32[3] = 0x01003412}},
+               {"2001:0db8:0000:0000:0000:0000:1234:0001",
+                                      {.s6_addr32[0] = 0xb80d0120,
+                                       .s6_addr32[1] = 0x00000000,
+                                       .s6_addr32[2] = 0x00000000,
+                                       .s6_addr32[3] = 0x01003412}},
+               {"::1",                {.s6_addr32[0] = 0x00000000,
+                                       .s6_addr32[1] = 0x00000000,
+                                       .s6_addr32[2] = 0x00000000,
+                                       .s6_addr32[3] = 0x01000000}},
+               {"::ffff:192.168.1.1", {.s6_addr32[0] = 0x00000000,
+                                       .s6_addr32[1] = 0x00000000,
+                                       .s6_addr32[2] = 0xffff0000,
+                                       .s6_addr32[3] = 0x0101a8c0}},
+       };
+
+       for (int i = 0; i < ARRAY_SIZE(test_suite); ++i) {
+               ut_assertok(string_to_ip6(test_suite[i].string_addr, &ip6));
+               ut_asserteq_mem(&ip6, &test_suite[i].ip6_addr,
+                               sizeof(struct in6_addr));
+       }
+
+       /* Incorrect statements */
+       ut_assertok(!string_to_ip6("hello:world", &ip6));
+       ut_assertok(!string_to_ip6("2001:db8::0::0", &ip6));
+       ut_assertok(!string_to_ip6("2001:db8:192.168.1.1::1", &ip6));
+       ut_assertok(!string_to_ip6("192.168.1.1", &ip6));
+
+       return 0;
+}
+DM_TEST(dm_test_string_to_ip6, 0);
+
 static int dm_test_eth(struct unit_test_state *uts)
 {
        net_ping_ip = string_to_ip("1.1.2.2");
-- 
2.25.1

Reply via email to