int thread_br_get_rloc16(thread_route_info_h route,
uint16_t *rloc16);
+/**
+ * @ingroup CAPI_NETWORK_THREAD_BORDERROUTER_MODULE
+ * @brief Get preference 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_preference(thread_route_info_h route,
+ int8_t *preference);
+
/**
* @ingroup CAPI_NETWORK_THREAD_BORDERROUTER_MODULE
* @brief Add an external border routing rule to the network.
return THREAD_ERROR_NONE;
}
+int thread_br_get_preference(thread_route_info_h route,
+ int8_t *preference)
+{
+ FUNC_ENTRY;
+ THREAD_CHECK_SUPPORTED_FEATURE(THREAD_FEATURE_COMMON);
+ THREAD_CHECK_INIT_STATUS();
+ THREAD_VALIDATE_INPUT_PARAMETER(route);
+ THREAD_VALIDATE_INPUT_PARAMETER(preference);
+
+ thread_route_info_s *route_info = (thread_route_info_s*)route;
+ *preference = route_info->preference;
+
+ 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,
enum class RouteInfo {
kIpv6Prefix,
kRloc16,
+ kPreference,
};
uint8_t ipv6Prefix[THREAD_IPV6_PREFIX_SIZE];
EXPECT_EQ(THREAD_ERROR_NONE, thread_br_get_rloc16(route_info, &rloc16));
}
break;
+ case RouteInfo::kPreference:
+ {
+ int8_t preference;
+ EXPECT_EQ(THREAD_ERROR_NONE, thread_br_get_preference(route_info, &preference));
+ }
+ break;
default:
break;
}
GUINT_TO_POINTER(static_cast<guint>(RouteInfo::kRloc16))));
}
+TEST_F(ThreadBRTest, BRGetPreferenceErrorNone)
+{
+ 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::kPreference))));
+}
+
TEST_F(ThreadBRTest, BRAddExternalRouteNotInitialized)
{
EXPECT_EQ(THREAD_ERROR_NONE, thread_deinitialize());