- /*
- x = atof(xbt_dynar_get_as(src_ctn, 0, char *))-atof(xbt_dynar_get_as(dst_ctn, 0, char *));
- y = atof(xbt_dynar_get_as(src_ctn, 1, char *));
- h = atof(xbt_dynar_get_as(ctn, 2, char *));
- sqrt((c1->x - c2->x) * (c1->x - c2->x) + (c1->y - c2->y) * (c1->y - c2->y)) + fabs(c1->h) + fabs(c2->h);
-
- if (strcmp(coord,"")) {
- xbt_dynar_t ctn = xbt_str_split_str(coord, " ");
- xbt_dynar_shrink(ctn,0);
- xbt_lib_set(host_lib, host_id, COORD_HOST_LEVEL, ctn);
+static double vivaldi_get_link_latency (routing_component_t rc,const char *src, const char *dst, route_extended_t e_route)
+{
+ if(get_network_element_type(src) == SURF_NETWORK_ELEMENT_AS) {
+ int need_to_clean = e_route?0:1;
+ double latency;
+ e_route = e_route?e_route:(*(rc->get_route)) (rc, src, dst);
+ latency = base_vivaldi_get_latency(e_route->src_gateway,e_route->dst_gateway);
+ if(need_to_clean) generic_free_extended_route(e_route);
+ return latency;
+ } else {
+ return base_vivaldi_get_latency(src,dst);