/**
* @ingroup CAPI_NETWORK_THREAD_BORDERROUTER_MODULE
+ * @brief Get device next hop 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_device_nexthop(thread_route_info_h route,
+ bool *is_device_nexthop);
+
+/**
+ * @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_device_nexthop(thread_route_info_h route,
+ 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(is_device_nexthop);
+
+ thread_route_info_s *route_info = (thread_route_info_s*)route;
+ *is_device_nexthop = route_info->is_nexthop_this_device;
+
+ 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,
kRloc16,
kPreference,
kStable,
+ kDeviceNexthop,
};
uint8_t ipv6Prefix[THREAD_IPV6_PREFIX_SIZE];
EXPECT_EQ(THREAD_ERROR_NONE, thread_br_get_stable(route_info, &isStable));
}
break;
+ case RouteInfo::kDeviceNexthop:
+ {
+ bool isDeviceNexthop;
+ EXPECT_EQ(THREAD_ERROR_NONE, thread_br_get_device_nexthop(route_info, &isDeviceNexthop));
+ }
+ break;
default:
break;
}
GUINT_TO_POINTER(static_cast<guint>(RouteInfo::kStable))));
}
+TEST_F(ThreadBRTest, BRGetDeviceNexthopErrorNone)
+{
+ 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::kDeviceNexthop))));
+}
+
TEST_F(ThreadBRTest, BRAddExternalRouteNotInitialized)
{
EXPECT_EQ(THREAD_ERROR_NONE, thread_deinitialize());