Add test command to get onmesh prefixes 87/276687/1
authorhyunuk.tak <hyunuk.tak@samsung.com>
Mon, 20 Jun 2022 03:44:41 +0000 (12:44 +0900)
committerhyunuk.tak <hyunuk.tak@samsung.com>
Thu, 23 Jun 2022 02:25:23 +0000 (11:25 +0900)
Change-Id: I9cc114392ab366a941f4731f34bb696445bdb540
Signed-off-by: hyunuk.tak <hyunuk.tak@samsung.com>
tests/thread-test/thread-br.c
tests/unittest/thread-unittest-br.cpp

index d00c75dbd346daba0d9ac2e51334ab7acdb02843..9936b69229b0d06296aaef089ed49192329d0c54 100644 (file)
@@ -59,16 +59,19 @@ char g_str_on_mesh[MENU_DATA_SIZE + 1] = {"1"};
 char g_str_stable[MENU_DATA_SIZE + 1] = {"1"};
 char g_str_preferred[MENU_DATA_SIZE + 1] = {"1"};
 
-int g_slaac;
-int g_dhcp;
-int g_configure;
-int g_default_route;
-int g_on_mesh;
-int g_stable;
-uint8_t g_onmesh_ipv6_prefix[THREAD_IPV6_ADDRESS_SIZE];
+uint8_t *g_onmesh_ipv6_prefix;
 uint8_t g_onmesh_ipv6_prefix_len;
-int8_t g_onmesh_preference;
-int g_preferred;
+uint16_t g_onmesh_rloc;
+uint8_t g_onmesh_preference;
+bool g_onmesh_is_preferred;
+bool g_onmesh_is_slaac;
+bool g_onmesh_is_dhcp;
+bool g_onmesh_is_configure;
+bool g_onmesh_is_default_route;
+bool g_onmesh_is_on_mesh;
+bool g_onmesh_is_stable;
+bool g_onmesh_is_nd_dns;
+bool g_onmesh_is_dp;
 
 GSList *route_list;
 GSList *onmesh_prefix_list;
@@ -167,6 +170,97 @@ OUT:
        return TRUE;
 }
 
+static bool __thread_br_get_onmesh_prefixes_callback(int total,
+       thread_onmesh_prefix_info_h onmesh_prefix_info, void *user_data)
+{
+       msg("__thread_br_get_onmesh_prefixes_callback, result: %d", total);
+
+       msg("Found the onmesh prefixes...");
+
+       uint8_t *prefix_address = NULL;
+       int ret = thread_onmesh_prefix_get_ipv6_prefix(onmesh_prefix_info,
+               &g_onmesh_ipv6_prefix, &g_onmesh_ipv6_prefix_len);
+       if (ret == THREAD_ERROR_NONE) {
+               prefix_address = g_onmesh_ipv6_prefix;
+               msg("prefix_address: %02x%02x:%02x%02x:%02x%02x:%02x%02x",
+                       prefix_address[0], prefix_address[1], prefix_address[2],
+                       prefix_address[3], prefix_address[4], prefix_address[5],
+                       prefix_address[6], prefix_address[7]);
+               msg("prefix_len: %u", g_onmesh_ipv6_prefix_len);
+       }
+
+       ret = thread_onmesh_prefix_get_rloc(onmesh_prefix_info, &g_onmesh_rloc);
+       if (ret == THREAD_ERROR_NONE) {
+               msg("rloc: %u", g_onmesh_rloc);
+       }
+
+       ret = thread_onmesh_prefix_get_preference(onmesh_prefix_info, &g_onmesh_preference);
+       if (ret == THREAD_ERROR_NONE) {
+               msg("preference: %u", g_onmesh_preference);
+       }
+
+       ret = thread_onmesh_prefix_get_preferred(onmesh_prefix_info, &g_onmesh_is_preferred);
+       if (ret == THREAD_ERROR_NONE) {
+               msg("preferred: %s", g_onmesh_is_preferred ? "TRUE" : "FALSE");
+       }
+
+       ret = thread_onmesh_prefix_get_slaac(onmesh_prefix_info, &g_onmesh_is_slaac);
+       if (ret == THREAD_ERROR_NONE) {
+               msg("slaac: %s", g_onmesh_is_slaac ? "TRUE" : "FALSE");
+       }
+
+       ret = thread_onmesh_prefix_get_dhcp(onmesh_prefix_info, &g_onmesh_is_dhcp);
+       if (ret == THREAD_ERROR_NONE) {
+               msg("dhcp: %s", g_onmesh_is_dhcp ? "TRUE" : "FALSE");
+       }
+
+       ret = thread_onmesh_prefix_get_configure(onmesh_prefix_info, &g_onmesh_is_configure);
+       if (ret == THREAD_ERROR_NONE) {
+               msg("configure: %s", g_onmesh_is_configure ? "TRUE" : "FALSE");
+       }
+
+       ret = thread_onmesh_prefix_get_default_route(onmesh_prefix_info, &g_onmesh_is_default_route);
+       if (ret == THREAD_ERROR_NONE) {
+               msg("default route: %s", g_onmesh_is_default_route ? "TRUE" : "FALSE");
+       }
+
+       ret = thread_onmesh_prefix_get_on_mesh(onmesh_prefix_info, &g_onmesh_is_on_mesh);
+       if (ret == THREAD_ERROR_NONE) {
+               msg("on mesh: %s", g_onmesh_is_on_mesh ? "TRUE" : "FALSE");
+       }
+
+       ret = thread_onmesh_prefix_get_stable(onmesh_prefix_info, &g_onmesh_is_stable);
+       if (ret == THREAD_ERROR_NONE) {
+               msg("stable: %s", g_onmesh_is_stable ? "TRUE" : "FALSE");
+       }
+
+       ret = thread_onmesh_prefix_get_nd_dns(onmesh_prefix_info, &g_onmesh_is_nd_dns);
+       if (ret == THREAD_ERROR_NONE) {
+               msg("nd dns: %s", g_onmesh_is_nd_dns ? "TRUE" : "FALSE");
+       }
+
+       ret = thread_onmesh_prefix_get_dp(onmesh_prefix_info, &g_onmesh_is_dp);
+       if (ret == THREAD_ERROR_NONE) {
+               msg("dp: %s", g_onmesh_is_dp ? "TRUE" : "FALSE");
+       }
+
+       thread_onmesh_prefix_info_a *new_onmesh_prefix = _create_new_onmesh_prefix();
+       if (!new_onmesh_prefix)
+               goto OUT;
+
+       new_onmesh_prefix->handle = onmesh_prefix_info;
+       memcpy(new_onmesh_prefix->prefix_address, prefix_address,
+                                       THREAD_IPV6_PREFIX_SIZE);
+       new_onmesh_prefix->prefix_length = g_onmesh_ipv6_prefix_len;
+
+       onmesh_prefix_list = g_slist_append(onmesh_prefix_list, new_onmesh_prefix);
+OUT:
+
+       msg("Callback exit");
+
+       return TRUE;
+}
+
 static int run_thread_br_enable(MManager *mm, struct menu_data *menu)
 {
        FUNC_ENTRY;
@@ -335,6 +429,26 @@ OUT:
        return RET_SUCCESS;
 }
 
+static int run_thread_br_get_onmesh_prefixes(MManager *mm, struct menu_data *menu)
+{
+       FUNC_ENTRY;
+       thread_instance_h g_instance = mm->t_instance;
+       if (g_instance == NULL)
+               goto OUT;
+
+       free_list(route_list);
+       route_list = NULL;
+       int ret = thread_br_get_onmesh_prefixes(g_instance,
+                               __thread_br_get_onmesh_prefixes_callback, NULL);
+       if (ret == THREAD_ERROR_NONE)
+               msg("thread_br_get_onmesh_prefixes success");
+       else
+               msg("thread_br_get_onmesh_prefixes failed");
+OUT:
+       FUNC_EXIT;
+       return RET_SUCCESS;
+}
+
 static int run_thread_br_add_onmesh_prefix(MManager *mm, struct menu_data *menu)
 {
        FUNC_ENTRY;
@@ -348,13 +462,13 @@ static int run_thread_br_add_onmesh_prefix(MManager *mm, struct menu_data *menu)
 
        sscanf(g_str_onmesh_ipv6_prefix_len, "%hhu", &g_onmesh_ipv6_prefix_len);
        sscanf(g_str_onmesh_preference, "%hhd", &g_onmesh_preference);
-       sscanf(g_str_slaac, "%d", &g_slaac);
-       sscanf(g_str_dhcp, "%d", &g_dhcp);
-       sscanf(g_str_configure, "%d", &g_configure);
-       sscanf(g_str_default_route, "%d", &g_default_route);
-       sscanf(g_str_on_mesh, "%d", &g_on_mesh);
-       sscanf(g_str_stable, "%d", &g_stable);
-       sscanf(g_str_preferred, "%d", &g_preferred);
+       g_onmesh_is_slaac = g_strcmp0(g_str_slaac, "0") ? TRUE : FALSE;
+       g_onmesh_is_dhcp = g_strcmp0(g_str_dhcp, "0") ? TRUE : FALSE;
+       g_onmesh_is_configure = g_strcmp0(g_str_configure, "0") ? TRUE : FALSE;
+       g_onmesh_is_default_route = g_strcmp0(g_str_default_route, "0") ? TRUE : FALSE;
+       g_onmesh_is_on_mesh = g_strcmp0(g_str_on_mesh, "0") ? TRUE : FALSE;
+       g_onmesh_is_stable = g_strcmp0(g_str_stable, "0") ? TRUE : FALSE;
+       g_onmesh_is_preferred = g_strcmp0(g_str_preferred, "0") ? TRUE : FALSE;
 
        /* Printing parameters value */
        msg("Parameter value for add onmesh_prefix");
@@ -367,13 +481,13 @@ static int run_thread_br_add_onmesh_prefix(MManager *mm, struct menu_data *menu)
 
        msg("g_onmesh_prefix_len: %hhu", g_onmesh_ipv6_prefix_len);
        msg("g_onmesh_preference: %hhd", g_onmesh_preference);
-       msg("g_slaac: %s", g_slaac ? "TRUE" : "FALSE");
-       msg("g_dhcp: %s", g_dhcp ? "TRUE" : "FALSE");
-       msg("g_configure: %s", g_configure ? "TRUE" : "FALSE");
-       msg("g_default_route: %s", g_default_route ? "TRUE" : "FALSE");
-       msg("g_on_mesh: %s", g_on_mesh ? "TRUE" : "FALSE");
-       msg("g_stable: %s", g_stable ? "TRUE" : "FALSE");
-       msg("g_preferred: %s", g_preferred ? "TRUE" : "FALSE");
+       msg("g_onmesh_is_slaac: %s", g_onmesh_is_slaac ? "TRUE" : "FALSE");
+       msg("g_onmesh_is_dhcp: %s", g_onmesh_is_dhcp ? "TRUE" : "FALSE");
+       msg("g_onmesh_is_configure: %s", g_onmesh_is_configure ? "TRUE" : "FALSE");
+       msg("g_onmesh_is_default_route: %s", g_onmesh_is_default_route ? "TRUE" : "FALSE");
+       msg("g_onmesh_is_on_mesh: %s", g_onmesh_is_on_mesh ? "TRUE" : "FALSE");
+       msg("g_onmesh_is_stable: %s", g_onmesh_is_stable ? "TRUE" : "FALSE");
+       msg("g_onmesh_is_preferred: %s", g_onmesh_is_preferred ? "TRUE" : "FALSE");
 
        thread_onmesh_prefix_info_a *new_onmesh_prefix = _create_new_onmesh_prefix();
        if (!new_onmesh_prefix)
@@ -386,13 +500,13 @@ static int run_thread_br_add_onmesh_prefix(MManager *mm, struct menu_data *menu)
        thread_onmesh_prefix_set_ipv6_prefix(new_onmesh_prefix->handle,
                g_onmesh_ipv6_prefix, g_onmesh_ipv6_prefix_len);
        thread_onmesh_prefix_set_preference(new_onmesh_prefix->handle, g_onmesh_preference);
-       thread_onmesh_prefix_set_preferred(new_onmesh_prefix->handle, g_preferred);
-       thread_onmesh_prefix_set_slaac(new_onmesh_prefix->handle, g_slaac);
-       thread_onmesh_prefix_set_dhcp(new_onmesh_prefix->handle, g_dhcp);
-       thread_onmesh_prefix_set_configure(new_onmesh_prefix->handle, g_configure);
-       thread_onmesh_prefix_set_default_route(new_onmesh_prefix->handle, g_default_route);
-       thread_onmesh_prefix_set_on_mesh(new_onmesh_prefix->handle, g_on_mesh);
-       thread_onmesh_prefix_set_stable(new_onmesh_prefix->handle, g_stable);
+       thread_onmesh_prefix_set_preferred(new_onmesh_prefix->handle, g_onmesh_is_preferred);
+       thread_onmesh_prefix_set_slaac(new_onmesh_prefix->handle, g_onmesh_is_slaac);
+       thread_onmesh_prefix_set_dhcp(new_onmesh_prefix->handle, g_onmesh_is_dhcp);
+       thread_onmesh_prefix_set_configure(new_onmesh_prefix->handle, g_onmesh_is_configure);
+       thread_onmesh_prefix_set_default_route(new_onmesh_prefix->handle, g_onmesh_is_default_route);
+       thread_onmesh_prefix_set_on_mesh(new_onmesh_prefix->handle, g_onmesh_is_on_mesh);
+       thread_onmesh_prefix_set_stable(new_onmesh_prefix->handle, g_onmesh_is_stable);
 
        ret = thread_br_add_onmesh_prefix(g_instance, new_onmesh_prefix->handle);
        if (ret == THREAD_ERROR_NONE) {
@@ -531,9 +645,11 @@ struct menu_data menu_thread_br[] = {
                menu_thread_br_add_external_route, NULL, NULL },
        { "5", "thread_br_remove_external_route",
                menu_thread_br_remove_external_route, NULL, NULL },
-       { "6", "thread_br_add_onmesh_prefix",
+       { "6", "thread_br_get_onmesh_prefixes",
+               NULL, run_thread_br_get_onmesh_prefixes, NULL },
+       { "7", "thread_br_add_onmesh_prefix",
                menu_thread_br_add_onmesh_prefix, NULL, NULL },
-       { "7", "thread_br_remove_onmesh_prefix",
+       { "8", "thread_br_remove_onmesh_prefix",
                menu_thread_br_remove_onmesh_prefix, NULL, NULL },
        { NULL, NULL, },
 };
index 73062fd9aef46fa86e490c3d0431356b06c0bde7..ae898b54883b7c7e39d412a92da15b3a20a67f05 100644 (file)
@@ -41,7 +41,6 @@ public:
        uint8_t onmeshIpv6Prefix[THREAD_IPV6_PREFIX_SIZE];
        uint8_t onmeshIpv6PrefixLen;
        bool preferred;
-       bool rloc;
        bool slaac;
        bool dhcp;
        bool configure;
@@ -398,7 +397,7 @@ TEST_F(ThreadBRTest, BRSetOnmeshRlocErrorNone)
        EXPECT_EQ(THREAD_ERROR_NONE,
                thread_onmesh_prefix_create(instance, &onmeshPrefix));
        EXPECT_EQ(THREAD_ERROR_NONE,
-               thread_onmesh_prefix_set_rloc(onmeshPrefix, rloc));
+               thread_onmesh_prefix_set_rloc(onmeshPrefix, rloc16));
 }
 
 TEST_F(ThreadBRTest, BRGetOnmeshRlocErrorNone)
@@ -407,9 +406,9 @@ TEST_F(ThreadBRTest, BRGetOnmeshRlocErrorNone)
        EXPECT_EQ(THREAD_ERROR_NONE,
                thread_onmesh_prefix_create(instance, &onmeshPrefix));
        EXPECT_EQ(THREAD_ERROR_NONE,
-               thread_onmesh_prefix_set_rloc(onmeshPrefix, rloc));
+               thread_onmesh_prefix_set_rloc(onmeshPrefix, rloc16));
        EXPECT_EQ(THREAD_ERROR_NONE,
-               thread_onmesh_prefix_get_rloc(onmeshPrefix, &rloc));
+               thread_onmesh_prefix_get_rloc(onmeshPrefix, &rloc16));
 }
 
 TEST_F(ThreadBRTest, BRSetOnmeshPreferredErrorNone)
@@ -581,7 +580,7 @@ TEST_F(ThreadBRTest, BRSetOnmeshDpErrorNone)
                thread_onmesh_prefix_set_dp(onmeshPrefix, dp));
 }
 
-TEST_F(ThreadBRTest, BRGetOnmeshNdDnsErrorNone)
+TEST_F(ThreadBRTest, BRGetOnmeshDpErrorNone)
 {
        EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance));
        EXPECT_EQ(THREAD_ERROR_NONE,