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;
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;
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;
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");
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)
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) {
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, },
};