Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Don't declare this variable if not used.
[simgrid.git] / src / surf / surf_routing.c
index 7a6b608..3bef200 100644 (file)
@@ -134,6 +134,9 @@ static route_extended_t generic_get_bypassroute(routing_component_t rc,
 static route_extended_t
 generic_new_extended_route(e_surf_routing_hierarchy_t hierarchy,
                            void *data, int order);
+static route_t
+generic_new_route(e_surf_routing_hierarchy_t hierarchy,
+                           void *data, int order);
 static void generic_free_route(route_t route);
 static void generic_free_extended_route(route_extended_t e_route);
 static routing_component_t
@@ -162,7 +165,7 @@ static void parse_S_host(char *host_id)
     current_routing->hierarchy = SURF_ROUTING_BASE;
   xbt_assert1(!xbt_dict_get_or_null
               (global_routing->where_network_elements, host_id),
-              "Reading a host, processing unit \"%s\" already exist",
+              "Reading a host, processing unit \"%s\" already exists",
               host_id);
   xbt_assert1(current_routing->set_processing_unit,
               "no defined method \"set_processing_unit\" in \"%s\"",
@@ -204,7 +207,7 @@ static void parse_S_router(void)
   xbt_assert1(!xbt_dict_get_or_null
               (global_routing->where_network_elements,
                A_surfxml_router_id),
-              "Reading a router, processing unit \"%s\" already exist",
+              "Reading a router, processing unit \"%s\" already exists",
               A_surfxml_router_id);
   xbt_assert1(current_routing->set_processing_unit,
               "no defined method \"set_processing_unit\" in \"%s\"",
@@ -426,7 +429,7 @@ static void parse_S_AS(char *AS_id, char *AS_routing)
 
     xbt_assert1(!xbt_dict_get_or_null
                 (current_routing->routing_sons, AS_id),
-                "The AS \"%s\" already exist", AS_id);
+                "The AS \"%s\" already exists", AS_id);
     /* it is a part of the tree */
     new_routing->routing_father = current_routing;
     /* set the father behavior */
@@ -481,7 +484,7 @@ static void parse_E_AS(char *AS_id)
     network_element_info_t info = NULL;
     xbt_assert1(!xbt_dict_get_or_null
                 (global_routing->where_network_elements,
-                 current_routing->name), "The AS \"%s\" already exist",
+                 current_routing->name), "The AS \"%s\" already exists",
                 current_routing->name);
     info = xbt_new0(s_network_element_info_t, 1);
     info->rc_component = current_routing->routing_father;
@@ -1127,7 +1130,7 @@ static void model_full_set_route(routing_component_t rc, const char *src,
                          (void*)TO_ROUTE_FULL(*src_id, *dst_id)->generic_route.link_list,
                          (void*)link_route_to_test,
                          (int_f_cpvoid_cpvoid_t) surf_pointer_resource_cmp),
-                         "The route between \"%s\" and \"%s\" already exist", src,dst);
+                         "The route between \"%s\" and \"%s\" already exists", src,dst);
                xbt_free(link_route_to_test);
        }
        else
@@ -1167,7 +1170,7 @@ static void model_full_set_route(routing_component_t rc, const char *src,
                                  (void*)TO_ROUTE_FULL(*dst_id, *src_id)->generic_route.link_list,
                              (void*)link_route_to_test,
                                  (int_f_cpvoid_cpvoid_t) surf_pointer_resource_cmp),
-                                 "The route between \"%s\" and \"%s\" already exist", src,dst);
+                                 "The route between \"%s\" and \"%s\" already exists", src,dst);
                        xbt_free(link_route_to_test);
                }
                else
@@ -1494,7 +1497,7 @@ static void model_floyd_set_route(routing_component_t rc, const char *src,
                          (void*)TO_FLOYD_LINK(*src_id, *dst_id)->generic_route.link_list,
                          (void*)link_route_to_test,
                          (int_f_cpvoid_cpvoid_t) surf_pointer_resource_cmp),
-                         "The route between \"%s\" and \"%s\" already exist", src,dst);
+                         "The route between \"%s\" and \"%s\" already exists", src,dst);
                xbt_free(link_route_to_test);
        }
        else
@@ -1536,7 +1539,7 @@ static void model_floyd_set_route(routing_component_t rc, const char *src,
                                  (void*)TO_FLOYD_LINK(*dst_id, *src_id)->generic_route.link_list,
                              (void*)link_route_to_test,
                                  (int_f_cpvoid_cpvoid_t) surf_pointer_resource_cmp),
-                                 "The route between \"%s\" and \"%s\" already exist", src,dst);
+                                 "The route between \"%s\" and \"%s\" already exists", src,dst);
                        xbt_free(link_route_to_test);
                }
                else
@@ -2659,7 +2662,7 @@ static void generic_set_bypassroute(routing_component_t rc,
               "Invalid count of links, must be greater than zero (%s,%s)",
               src, dst);
   xbt_assert4(!xbt_dict_get_or_null(dict_bypassRoutes, route_name),
-              "The bypass route between \"%s\"(\"%s\") and \"%s\"(\"%s\") already exist",
+              "The bypass route between \"%s\"(\"%s\") and \"%s\"(\"%s\") already exists",
               src, e_route->src_gateway, dst, e_route->dst_gateway);
 
   route_extended_t new_e_route =
@@ -2816,6 +2819,44 @@ static route_extended_t generic_get_bypassroute(routing_component_t rc,
 /* ************************************************************************** */
 /* ************************* GENERIC AUX FUNCTIONS ************************** */
 
+static route_t
+generic_new_route(e_surf_routing_hierarchy_t hierarchy,
+                           void *data, int order)
+{
+
+  char *link_name;
+  route_t new_route;
+  unsigned int cpt;
+  xbt_dynar_t links = NULL, links_id = NULL;
+
+  new_route = xbt_new0(s_route_t, 1);
+  new_route->link_list =
+      xbt_dynar_new(global_routing->size_of_link, NULL);
+
+  xbt_assert0(hierarchy == SURF_ROUTING_BASE,
+              "the hierarchy type is not SURF_ROUTING_BASE");
+
+  links = ((route_t) data)->link_list;
+
+
+  links_id = new_route->link_list;
+
+  xbt_dynar_foreach(links, cpt, link_name) {
+
+    void *link =
+        xbt_dict_get_or_null(surf_network_model->resource_set, link_name);
+    if (link) {
+      if (order)
+        xbt_dynar_push(links_id, &link);
+      else
+        xbt_dynar_unshift(links_id, &link);
+    } else
+      THROW1(mismatch_error, 0, "Link %s not found", link_name);
+  }
+
+  return new_route;
+}
+
 static route_extended_t
 generic_new_extended_route(e_surf_routing_hierarchy_t hierarchy,
                            void *data, int order)
@@ -3008,7 +3049,7 @@ static void routing_parse_Scluster(void)
   char *cluster_bb_bw = A_surfxml_cluster_bb_bw;
   char *cluster_bb_lat = A_surfxml_cluster_bb_lat;
   char *host_id, *groups, *link_id = NULL;
-  char *router_id, *link_router, *link_backbone, *route_src_dst;
+  char *router_id, *link_router, *link_backbone;
   unsigned int iter;
   int start, end, i;
   xbt_dynar_t radical_elements;
@@ -3170,7 +3211,11 @@ static void routing_parse_Scluster(void)
   SURFXML_START_TAG(link);
   SURFXML_END_TAG(link);
 
+  DEBUG0(" ");
+
+#ifdef HAVE_PCRE_LIB
   char *new_suffix = bprintf("%s", "");
+  char *route_src_dst;
 
   radical_elements = xbt_str_split(cluster_suffix, ".");
   xbt_dynar_foreach(radical_elements, iter, groups) {
@@ -3180,10 +3225,6 @@ static void routing_parse_Scluster(void)
   }
   route_src_dst = bprintf("%s(.*)%s", cluster_prefix, new_suffix);
 
-  DEBUG0(" ");
-
-#ifdef HAVE_PCRE_LIB
-
   DEBUG2("<route\tsrc=\"%s\"\tdst=\"%s\"", route_src_dst, route_src_dst);
   DEBUG0("symetrical=\"NO\">");
   SURFXML_BUFFER_SET(route_src, route_src_dst);