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
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\"",
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\"",
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 */
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;
(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
(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
(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
(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
"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 =
/* ************************************************************************** */
/* ************************* 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)
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;
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) {
}
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);