* @see thread_remove_onmesh_prefix()
*/
int thread_br_add_onmesh_prefix(thread_instance_h instance,
- const uint8_t *ipv6_prefix, int ipv6_prefix_len, int8_t preference,
- bool preferred, bool slaac, bool dhcp, bool configure, bool default_route,
- bool on_mesh, bool stable, thread_onmesh_prefix_info_h *onmesh_prefix);
+ thread_onmesh_prefix_info_h onmesh_prefix);
/**
* @ingroup CAPI_NETWORK_THREAD_BORDERROUTER_MODULE
*
* @see thread_add_onmesh_prefix()
*/
-int thread_br_remove_onmesh_prefix(thread_instance_h instance, thread_onmesh_prefix_info_h prefix_info);
+int thread_br_remove_onmesh_prefix(thread_instance_h instance,
+ thread_onmesh_prefix_info_h onmesh_prefix);
/**
* @ingroup CAPI_NETWORK_THREAD_NETWORK_MODULE
}
int thread_br_add_onmesh_prefix(thread_instance_h instance,
- const uint8_t *ipv6_prefix, int ipv6_prefix_len, int8_t preference,
- bool preferred, bool slaac, bool dhcp, bool configure, bool default_route,
- bool on_mesh, bool stable, thread_onmesh_prefix_info_h *onmesh_prefix)
+ thread_onmesh_prefix_info_h onmesh_prefix)
{
FUNC_ENTRY;
THREAD_CHECK_SUPPORTED_FEATURE(THREAD_FEATURE_COMMON);
THREAD_CHECK_INIT_STATUS();
THREAD_VALIDATE_INPUT_PARAMETER(instance);
- THREAD_VALIDATE_INPUT_PARAMETER(ipv6_prefix);
THREAD_VALIDATE_INPUT_PARAMETER(onmesh_prefix);
thread_instance_s *current_instance = instance;
retv_if(!current_instance->is_br_enabled, THREAD_ERROR_NOT_ENABLED);
- retv_if(ipv6_prefix_len > THREAD_IPV6_PREFIX_LEN,
- THREAD_ERROR_INVALID_PARAMETER);
+ thread_onmesh_prefix_info_s* onmesh_prefix_info =
+ (thread_onmesh_prefix_info_s*)onmesh_prefix;
+ uint8_t *ipv6_prefix = (onmesh_prefix_info->prefix).ipv6.fields.m8;
+ uint8_t ipv6_prefix_len = (onmesh_prefix_info->prefix).length;
char msg[THREAD_BORDER_ROUTER_BUFFER_MAX];
snprintf(msg, THREAD_BORDER_ROUTER_BUFFER_MAX,
ipv6_prefix[4], ipv6_prefix[5], ipv6_prefix[6], ipv6_prefix[7],
ipv6_prefix_len);
- if (preference == 0)
+ if (onmesh_prefix_info->preference == 0)
strncat(msg, " low ", 6);
- else if (preference == 1)
+ else if (onmesh_prefix_info->preference == 1)
strncat(msg, " med ", 6);
- else if (preference == 2)
+ else if (onmesh_prefix_info->preference == 2)
strncat(msg, " high ", 7);
- if (preferred)
+ if (onmesh_prefix_info->preferred)
strncat(msg, "p", 2);
- if (slaac)
+ if (onmesh_prefix_info->slaac)
strncat(msg, "a", 2);
- if (configure)
+ if (onmesh_prefix_info->configure)
strncat(msg, "c", 2);
- if (default_route)
+ if (onmesh_prefix_info->default_route)
strncat(msg, "r", 2);
- if (on_mesh)
+ if (onmesh_prefix_info->on_mesh)
strncat(msg, "o", 2);
- if (stable)
+ if (onmesh_prefix_info->stable)
strncat(msg, "s", 2);
THREAD_DBG("DEBUG: BORDER ROUTER MESSAGE -> [%s]", msg);
retv_if(ret != THREAD_ERROR_NONE, ret);
THREAD_DBG("Successfully registered netdata");
- thread_onmesh_prefix_info_s* new_onmesh_prefix =
- _create_new_onmesh_prefix();
- memcpy((new_onmesh_prefix->prefix).ipv6.fields.m8, ipv6_prefix,
- THREAD_IPV6_PREFIX_SIZE*sizeof(uint8_t));
- (new_onmesh_prefix->prefix).length = ipv6_prefix_len;
- new_onmesh_prefix->preference = preference;
- new_onmesh_prefix->preferred = preferred;
- new_onmesh_prefix->slaac = slaac;
- new_onmesh_prefix->dhcp = dhcp;
- new_onmesh_prefix->configure = configure;
- new_onmesh_prefix->default_route = default_route;
- new_onmesh_prefix->on_mesh = on_mesh;
- new_onmesh_prefix->stable = stable;
-
- current_instance->onmesh_prefix_list = g_slist_append(
- current_instance->onmesh_prefix_list,
- new_onmesh_prefix);
-
- *onmesh_prefix = (thread_onmesh_prefix_info_h)new_onmesh_prefix;
-
FUNC_EXIT;
return THREAD_ERROR_NONE;
}
int thread_br_remove_onmesh_prefix(thread_instance_h instance,
- thread_onmesh_prefix_info_h prefix_info)
+ thread_onmesh_prefix_info_h onmesh_prefix)
{
FUNC_ENTRY;
THREAD_CHECK_SUPPORTED_FEATURE(THREAD_FEATURE_COMMON);
THREAD_CHECK_INIT_STATUS();
THREAD_VALIDATE_INPUT_PARAMETER(instance);
- THREAD_VALIDATE_INPUT_PARAMETER(prefix_info);
thread_instance_s *current_instance = instance;
retv_if(!current_instance->is_br_enabled, THREAD_ERROR_NOT_ENABLED);
- thread_onmesh_prefix_info_s* onmesh_prefix =
- (thread_onmesh_prefix_info_s*)prefix_info;
- uint8_t *ipv6_prefix = (onmesh_prefix->prefix).ipv6.fields.m8;
- uint8_t ipv6_prefix_len = (onmesh_prefix->prefix).length;
+ thread_onmesh_prefix_info_s* onmesh_prefix_info =
+ (thread_onmesh_prefix_info_s*)onmesh_prefix;
+ uint8_t *ipv6_prefix = (onmesh_prefix_info->prefix).ipv6.fields.m8;
+ uint8_t ipv6_prefix_len = (onmesh_prefix_info->prefix).length;
retv_if(ipv6_prefix_len > THREAD_IPV6_PREFIX_LEN,
THREAD_ERROR_INVALID_PARAMETER);
return ret;
}
- current_instance->onmesh_prefix_list = g_slist_remove(
- current_instance->onmesh_prefix_list,
- onmesh_prefix);
- g_free(onmesh_prefix);
-
FUNC_EXIT;
return THREAD_ERROR_NONE;
}
if (!new_onmesh_prefix)
goto OUT;
- ret = thread_br_add_onmesh_prefix(g_instance, g_onmesh_ipv6_prefix,
- g_onmesh_ipv6_prefix_len, g_onmesh_preference,
- g_preferred, g_slaac, g_dhcp, g_configure,
- g_default_route, g_on_mesh, g_stable,
- &(new_onmesh_prefix->handle));
+ ret = thread_onmesh_prefix_create(g_instance, &(new_onmesh_prefix->handle));
+ if (ret != THREAD_ERROR_NONE)
+ goto OUT;
+ 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);
+
+ ret = thread_br_add_onmesh_prefix(g_instance, new_onmesh_prefix->handle);
if (ret == THREAD_ERROR_NONE) {
msg("thread_br_add_onmesh_prefix success");
memcpy(new_onmesh_prefix->prefix_address, prefix_address,
{
if (instance)
{
+ if (onmeshPrefix)
+ thread_onmesh_prefix_destroy(instance, onmeshPrefix);
thread_br_disable(instance);
thread_disable(instance);
}
thread_br_remove_external_route(instance, routeInfo));
}
-TEST_F(ThreadBRTest, BRAddOnmeshPrefixNotInitialized)
-{
- EXPECT_EQ(THREAD_ERROR_NONE, thread_deinitialize());
- EXPECT_EQ(THREAD_ERROR_NOT_INITIALIZED,
- thread_br_add_onmesh_prefix(instance, onmeshIpv6Prefix,
- onmeshIpv6PrefixLen, preference, preferred, slaac,
- dhcp, configure, defaultRoute, onMesh, stable, &onmeshPrefix));
-}
-
-TEST_F(ThreadBRTest, BRAddOnmeshPrefixInvalidParameter)
-{
- EXPECT_EQ(THREAD_ERROR_INVALID_PARAMETER,
- thread_br_add_onmesh_prefix(instance, onmeshIpv6Prefix,
- onmeshIpv6PrefixLen, preference, preferred, slaac,
- dhcp, configure, defaultRoute, onMesh, stable, &onmeshPrefix));
-}
-
TEST_F(ThreadBRTest, BRCreateOnmeshPrefixErrorNone)
{
EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance));
thread_onmesh_prefix_get_stable(onmeshPrefix, &stable));
}
+TEST_F(ThreadBRTest, BRAddOnmeshPrefixNotInitialized)
+{
+ EXPECT_EQ(THREAD_ERROR_NONE, thread_deinitialize());
+ EXPECT_EQ(THREAD_ERROR_NOT_INITIALIZED,
+ thread_br_add_onmesh_prefix(instance, onmeshPrefix));
+}
+
+TEST_F(ThreadBRTest, BRAddOnmeshPrefixInvalidParameter)
+{
+ EXPECT_EQ(THREAD_ERROR_INVALID_PARAMETER,
+ thread_br_add_onmesh_prefix(instance, onmeshPrefix));
+}
+
TEST_F(ThreadBRTest, BRAddOnmeshPrefixNotEnabled)
{
EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance));
EXPECT_EQ(THREAD_ERROR_NOT_ENABLED,
- thread_br_add_onmesh_prefix(instance, onmeshIpv6Prefix,
- onmeshIpv6PrefixLen, preference, preferred, slaac,
- dhcp, configure, defaultRoute, onMesh, stable, &onmeshPrefix));
+ thread_br_add_onmesh_prefix(instance, onmeshPrefix));
}
TEST_F(ThreadBRTest, BRAddOnmeshPrefixErrorNone)
EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance));
EXPECT_EQ(THREAD_ERROR_NONE, thread_br_enable(instance));
EXPECT_EQ(THREAD_ERROR_NONE,
- thread_br_add_onmesh_prefix(instance, onmeshIpv6Prefix,
- onmeshIpv6PrefixLen, preference, preferred, slaac,
- dhcp, configure, defaultRoute, onMesh, stable, &onmeshPrefix));
+ thread_onmesh_prefix_create(instance, &onmeshPrefix));
+ EXPECT_EQ(THREAD_ERROR_NONE,
+ thread_br_add_onmesh_prefix(instance, onmeshPrefix));
}
TEST_F(ThreadBRTest, BRRemoveOnmeshPrefixNotInitialized)
EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance));
EXPECT_EQ(THREAD_ERROR_NONE, thread_br_enable(instance));
EXPECT_EQ(THREAD_ERROR_NONE,
- thread_br_add_onmesh_prefix(instance, onmeshIpv6Prefix,
- onmeshIpv6PrefixLen, preference, preferred, slaac,
- dhcp, configure, defaultRoute, onMesh, stable, &onmeshPrefix));
+ thread_onmesh_prefix_create(instance, &onmeshPrefix));
+ EXPECT_EQ(THREAD_ERROR_NONE,
+ thread_br_add_onmesh_prefix(instance, onmeshPrefix));
EXPECT_EQ(THREAD_ERROR_NONE,
thread_br_remove_onmesh_prefix(instance, onmeshPrefix));
}
\ No newline at end of file