/**
* @ingroup CAPI_NETWORK_THREAD_BORDERROUTER_MODULE
+ * @brief Get rloc16 for route
+ * @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_rloc16(thread_route_info_h route,
+ uint16_t *rloc16);
+
+/**
+ * @ingroup CAPI_NETWORK_THREAD_BORDERROUTER_MODULE
* @brief Add an external border routing rule to the network.
* @since_tizen 7.0
*
return THREAD_ERROR_NONE;
}
+int thread_br_get_rloc16(thread_route_info_h route,
+ uint16_t *rloc16)
+{
+ FUNC_ENTRY;
+ THREAD_CHECK_SUPPORTED_FEATURE(THREAD_FEATURE_COMMON);
+ THREAD_CHECK_INIT_STATUS();
+ THREAD_VALIDATE_INPUT_PARAMETER(route);
+ THREAD_VALIDATE_INPUT_PARAMETER(rloc16);
+
+ thread_route_info_s *route_info = (thread_route_info_s*)route;
+ *rloc16 = route_info->rloc16;
+
+ FUNC_EXIT;
+ return THREAD_ERROR_NONE;
+}
+
int thread_br_add_external_route(thread_instance_h instance,
const uint8_t *ipv6_prefix, uint8_t ipv6_prefix_len,
uint16_t rloc16, int8_t preference,
public:
enum class RouteInfo {
kIpv6Prefix,
+ kRloc16,
};
uint8_t ipv6Prefix[THREAD_IPV6_PREFIX_SIZE];
EXPECT_EQ(THREAD_ERROR_NONE, thread_br_get_ipv6_prefix(route_info, ipv6Prefix, &ipv6PrefixLen));
}
break;
+ case RouteInfo::kRloc16:
+ {
+ uint16_t rloc16;
+ EXPECT_EQ(THREAD_ERROR_NONE, thread_br_get_rloc16(route_info, &rloc16));
+ }
+ break;
default:
break;
}
GUINT_TO_POINTER(static_cast<guint>(RouteInfo::kIpv6Prefix))));
}
+TEST_F(ThreadBRTest, BRGetRloc16ErrorNone)
+{
+ EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance));
+ EXPECT_EQ(THREAD_ERROR_NONE, thread_br_enable(instance));
+ EXPECT_EQ(THREAD_ERROR_NONE,
+ thread_br_get_external_routes(instance, GetExternalRoutesCallback,
+ GUINT_TO_POINTER(static_cast<guint>(RouteInfo::kRloc16))));
+}
+
TEST_F(ThreadBRTest, BRAddExternalRouteNotInitialized)
{
EXPECT_EQ(THREAD_ERROR_NONE, thread_deinitialize());