From 3f3112270fd0744e9b28f9a2fef4888d5bd3d1b6 Mon Sep 17 00:00:00 2001 From: "hyunuk.tak" Date: Mon, 20 Jun 2022 12:44:41 +0900 Subject: [PATCH] Add test command to get onmesh prefixes Change-Id: I9cc114392ab366a941f4731f34bb696445bdb540 Signed-off-by: hyunuk.tak --- tests/thread-test/thread-br.c | 180 +++++++++++++++++++++----- tests/unittest/thread-unittest-br.cpp | 9 +- 2 files changed, 152 insertions(+), 37 deletions(-) diff --git a/tests/thread-test/thread-br.c b/tests/thread-test/thread-br.c index d00c75d..9936b69 100644 --- a/tests/thread-test/thread-br.c +++ b/tests/thread-test/thread-br.c @@ -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, }, }; diff --git a/tests/unittest/thread-unittest-br.cpp b/tests/unittest/thread-unittest-br.cpp index 73062fd..ae898b5 100644 --- a/tests/unittest/thread-unittest-br.cpp +++ b/tests/unittest/thread-unittest-br.cpp @@ -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, -- 2.34.1