Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
start to fill the NEWS file
[simgrid.git] / src / surf / surf_routing_vivaldi.c
index 2079a80..2a925fc 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009, 2010, 2011. The SimGrid Team.
+/* Copyright (c) 2009-2013. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -27,8 +27,14 @@ static void vivaldi_get_route_and_latency(
   char *dst = (char*)dst_p->name;
 
   if(src_p->rc_type == SURF_NETWORK_ELEMENT_AS) {
-    route->gw_src = xbt_lib_get_or_null(as_router_lib,ROUTER_PEER(src),ROUTING_ASR_LEVEL);
-    route->gw_dst = xbt_lib_get_or_null(as_router_lib,ROUTER_PEER(dst),ROUTING_ASR_LEVEL);
+    char *rp_src = ROUTER_PEER(src);
+    char *rp_dst = ROUTER_PEER(dst);
+    route->gw_src = xbt_lib_get_or_null(as_router_lib, rp_src,
+                                        ROUTING_ASR_LEVEL);
+    route->gw_dst = xbt_lib_get_or_null(as_router_lib, rp_dst,
+                                        ROUTING_ASR_LEVEL);
+    xbt_free(rp_src);
+    xbt_free(rp_dst);
   }
 
   double euclidean_dist;
@@ -102,8 +108,10 @@ static int vivaldi_parse_PU(AS_t rc, sg_routing_edge_t elm) {
 /* Creation routing model functions */
 AS_t model_vivaldi_create(void)
 {
-  AS_t new_component = model_rulebased_create();
+  AS_t new_component = model_generic_create_sized(sizeof *new_component);
+  
   new_component->get_route_and_latency = vivaldi_get_route_and_latency;
   new_component->parse_PU = vivaldi_parse_PU;
+  new_component->get_graph = generic_get_graph;
   return new_component;
 }