-static void floyd_get_route(AS_t asg, const char *src, const char *dst, route_t res);
+static void floyd_get_route_and_latency(AS_t asg, const char *src, const char *dst,
+ route_t res, double *lat);
xbt_dict_foreach(asg->to_index, c1, k1, d1) {
xbt_dict_foreach(asg->to_index, c2, k2, d2) {
xbt_dynar_reset(route->link_list);
xbt_dict_foreach(asg->to_index, c1, k1, d1) {
xbt_dict_foreach(asg->to_index, c2, k2, d2) {
xbt_dynar_reset(route->link_list);
- floyd_get_route(asg, k1, k2, route);
+ floyd_get_route_and_latency(asg, k1, k2, route, NULL);
if (xbt_dynar_length(route->link_list) == 1) {
void *link = *(void **) xbt_dynar_get_ptr(route->link_list, 0);
onelink_t onelink = xbt_new0(s_onelink_t, 1);
if (xbt_dynar_length(route->link_list) == 1) {
void *link = *(void **) xbt_dynar_get_ptr(route->link_list, 0);
onelink_t onelink = xbt_new0(s_onelink_t, 1);
-static void floyd_get_route(AS_t asg, const char *src, const char *dst, route_t res)
+static void floyd_get_route_and_latency(AS_t asg, const char *src, const char *dst,
+ route_t res, double *lat)
if (asg->hierarchy == SURF_ROUTING_RECURSIVE && !first
&& strcmp(gw_dst, prev_gw_src)) {
if (asg->hierarchy == SURF_ROUTING_RECURSIVE && !first
&& strcmp(gw_dst, prev_gw_src)) {
routing_get_route_and_latency(gw_dst, prev_gw_src,&e_route_as_to_as,NULL);
links = e_route_as_to_as;
int pos = 0;
xbt_dynar_foreach(links, cpt, link) {
xbt_dynar_insert_at(res->link_list, pos, &link);
routing_get_route_and_latency(gw_dst, prev_gw_src,&e_route_as_to_as,NULL);
links = e_route_as_to_as;
int pos = 0;
xbt_dynar_foreach(links, cpt, link) {
xbt_dynar_insert_at(res->link_list, pos, &link);
}
links = e_route->link_list;
xbt_dynar_foreach(links, cpt, link) {
xbt_dynar_unshift(res->link_list, &link);
}
links = e_route->link_list;
xbt_dynar_foreach(links, cpt, link) {
xbt_dynar_unshift(res->link_list, &link);
as_floyd_t new_component = (as_floyd_t)model_generic_create_sized(sizeof(s_as_floyd_t));
new_component->generic_routing.parse_route = model_floyd_parse_route;
new_component->generic_routing.parse_ASroute = model_floyd_parse_route;
as_floyd_t new_component = (as_floyd_t)model_generic_create_sized(sizeof(s_as_floyd_t));
new_component->generic_routing.parse_route = model_floyd_parse_route;
new_component->generic_routing.parse_ASroute = model_floyd_parse_route;
new_component->generic_routing.get_onelink_routes =
floyd_get_onelink_routes;
new_component->generic_routing.finalize = floyd_finalize;
new_component->generic_routing.get_onelink_routes =
floyd_get_onelink_routes;
new_component->generic_routing.finalize = floyd_finalize;
xbt_assert(!xbt_dynar_compare(
(void*)TO_FLOYD_LINK(*src_id, *dst_id)->link_list,
(void*)link_route_to_test,
xbt_assert(!xbt_dynar_compare(
(void*)TO_FLOYD_LINK(*src_id, *dst_id)->link_list,
(void*)link_route_to_test,
xbt_assert(!xbt_dynar_compare(
(void*)TO_FLOYD_LINK(*dst_id, *src_id)->link_list,
(void*)link_route_to_test,
xbt_assert(!xbt_dynar_compare(
(void*)TO_FLOYD_LINK(*dst_id, *src_id)->link_list,
(void*)link_route_to_test,
"The route between \"%s\" and \"%s\" already exists", src,dst);
}
else
{
if(route->dst_gateway && route->src_gateway)
{
"The route between \"%s\" and \"%s\" already exists", src,dst);
}
else
{
if(route->dst_gateway && route->src_gateway)
{