- double euclidean_dist;
- xbt_dynar_t src_ctn, dst_ctn;
- char *tmp_src_name, *tmp_dst_name;
-
- if(src->isHost()){
- tmp_src_name = HOST_PEER(src->name());
- src_ctn = (xbt_dynar_t) simgrid::s4u::Host::by_name_or_create(tmp_src_name)->extension(COORD_HOST_LEVEL);
- if (src_ctn == nullptr)
- src_ctn = (xbt_dynar_t) simgrid::s4u::Host::by_name_or_create(src->name())->extension(COORD_HOST_LEVEL);
- }
- else if(src->isRouter() || src->isAS()){
- tmp_src_name = ROUTER_PEER(src->name());
- src_ctn = (xbt_dynar_t) xbt_lib_get_or_null(as_router_lib, tmp_src_name, COORD_ASR_LEVEL);
- }
- else{
- THROW_IMPOSSIBLE;
- }
-
- if(dst->isHost()){
- tmp_dst_name = HOST_PEER(dst->name());
-
- dst_ctn = (xbt_dynar_t) simgrid::s4u::Host::by_name_or_create(tmp_dst_name)->extension(COORD_HOST_LEVEL);
- if (dst_ctn == nullptr)
- dst_ctn = (xbt_dynar_t) simgrid::s4u::Host::by_name_or_create(dst->name())->extension(COORD_HOST_LEVEL);
- }
- else if(dst->isRouter() || dst->isAS()){
- tmp_dst_name = ROUTER_PEER(dst->name());
- dst_ctn = (xbt_dynar_t) xbt_lib_get_or_null(as_router_lib, tmp_dst_name, COORD_ASR_LEVEL);
- }
- else{
- THROW_IMPOSSIBLE;
- }
-
- xbt_assert(src_ctn,"No coordinate found for element '%s'",tmp_src_name);
- xbt_assert(dst_ctn,"No coordinate found for element '%s'",tmp_dst_name);
- free(tmp_src_name);
- free(tmp_dst_name);
+ /* Compute the extra latency due to the euclidean distance if needed */
+ if (lat){
+ xbt_dynar_t srcCoords = getCoordsFromNetcard(src);
+ xbt_dynar_t dstCoords = getCoordsFromNetcard(dst);