/**
* @ingroup CAPI_NETWORK_THREAD_BORDERROUTER_MODULE
- * @brief Get Route informations
- * @since_tizen 7.0
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #THREAD_ERROR_NONE Successful
- * @retval #THREAD_ERROR_NOT_INITIALIZED Not initialized
- * @retval #THREAD_ERROR_OPERATION_FAILED Operation failed
- * @retval #THREAD_ERROR_NOT_SUPPORTED Not supported
- *
- * @pre thread API must be initialized with thread_initialize().
- *
- * @see thread_external_route_foreach_cb()
- */
-int thread_br_get_route_info(thread_route_info_h route, uint8_t *ipv6_prefix,
- uint8_t *ipv6_prefix_len, uint16_t *rloc16, int8_t *preference,
- bool *is_stable, bool *is_device_nexthop);
-
-/**
- * @ingroup CAPI_NETWORK_THREAD_BORDERROUTER_MODULE
* @brief Get ipv6 prefix for route
* @since_tizen 7.0
*
return THREAD_ERROR_NONE;
}
-int thread_br_get_route_info(thread_route_info_h route,
- uint8_t *ipv6_prefix, uint8_t *ipv6_prefix_len,
- uint16_t *rloc16, int8_t *preference, bool *is_stable,
- bool *is_device_nexthop)
-{
- FUNC_ENTRY;
- THREAD_CHECK_SUPPORTED_FEATURE(THREAD_FEATURE_COMMON);
- THREAD_CHECK_INIT_STATUS();
- THREAD_VALIDATE_INPUT_PARAMETER(route);
- THREAD_VALIDATE_INPUT_PARAMETER(ipv6_prefix);
- THREAD_VALIDATE_INPUT_PARAMETER(ipv6_prefix_len);
- THREAD_VALIDATE_INPUT_PARAMETER(rloc16);
- THREAD_VALIDATE_INPUT_PARAMETER(preference);
- THREAD_VALIDATE_INPUT_PARAMETER(is_stable);
- THREAD_VALIDATE_INPUT_PARAMETER(is_device_nexthop);
-
- thread_route_info_s *route_info = (thread_route_info_s*)route;
- memcpy(ipv6_prefix, (route_info->prefix).ipv6.fields.m8,
- THREAD_IPV6_PREFIX_SIZE*sizeof(uint8_t));
- *ipv6_prefix_len = (route_info->prefix).length;
- *rloc16 = route_info->rloc16;
- *preference = route_info->preference;
- *is_stable = route_info->is_stable;
- *is_device_nexthop = route_info->is_nexthop_this_device;
-
- FUNC_EXIT;
- return THREAD_ERROR_NONE;
-}
-
int thread_br_get_ipv6_prefix(thread_route_info_h route,
uint8_t *ipv6_prefix, uint8_t *ipv6_prefix_len)
{
msg("Found the external route...");
- int ret = thread_br_get_route_info(route_info,
- g_ext_ipv6_prefix, &g_ext_ipv6_prefix_len, &g_ext_rloc16,
- &g_ext_preference, &g_ext_is_stable, &g_ext_is_device_next_hop);
-
+ uint8_t *prefix_address = NULL;
+ int ret = thread_br_get_ipv6_prefix(route_info, g_ext_ipv6_prefix, &g_ext_ipv6_prefix_len);
if (ret == THREAD_ERROR_NONE) {
- msg("thread_br_get_route_info success");
- uint8_t *prefix_address = g_ext_ipv6_prefix;
-
+ prefix_address = g_ext_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_ext_ipv6_prefix_len);
+ }
+
+ ret = thread_br_get_rloc16(route_info, &g_ext_rloc16);
+ if (ret == THREAD_ERROR_NONE) {
msg("rloc16: %u", g_ext_rloc16);
+ }
+
+ ret = thread_br_get_preference(route_info, &g_ext_preference);
+ if (ret == THREAD_ERROR_NONE) {
msg("preference: %u", g_ext_preference);
+ }
+
+ ret = thread_br_check_stable(route_info, &g_ext_is_stable);
+ if (ret == THREAD_ERROR_NONE) {
msg("stable: %s", g_ext_is_stable ? "TRUE" : "FALSE");
+ }
+
+ ret = thread_br_check_device_nexthop(route_info, &g_ext_is_device_next_hop);
+ if (ret == THREAD_ERROR_NONE) {
msg("next_hop_is_self: %s", g_ext_is_device_next_hop ?
"TRUE" : "FALSE");
+ }
- /* Create a new route and add to route_list */
- thread_route_info_a *new_route = _create_new_route();
- if (!new_route)
- goto OUT;
-
- new_route->handle = route_info;
- memcpy(new_route->prefix_address, prefix_address,
- THREAD_IPV6_PREFIX_SIZE);
- new_route->prefix_length = g_ext_ipv6_prefix_len;
+ thread_route_info_a *new_route = _create_new_route();
+ if (!new_route)
+ goto OUT;
- route_list = g_slist_append(route_list, new_route);
+ new_route->handle = route_info;
+ memcpy(new_route->prefix_address, prefix_address,
+ THREAD_IPV6_PREFIX_SIZE);
+ new_route->prefix_length = g_ext_ipv6_prefix_len;
- } else
- msg("thread_br_get_route_info failed");
+ route_list = g_slist_append(route_list, new_route);
OUT:
msg("Callback exit");