X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ae5f503c0bd1670d808b1f7e61366e8191333cee..bad37c9f86d4932e80abbca3757fac80660b5b05:/src/surf/surf_routing.c diff --git a/src/surf/surf_routing.c b/src/surf/surf_routing.c index 671557557f..d0940f5cc7 100644 --- a/src/surf/surf_routing.c +++ b/src/surf/surf_routing.c @@ -214,7 +214,7 @@ static double vivaldi_get_link_latency (routing_component_t rc,const char *src, /** * \brief Add a "host" to the network element list */ -static void parse_S_host(const char *host_id, const char* coord) +void parse_S_host(const char *host_id, const char* coord) { network_element_info_t info = NULL; if (current_routing->hierarchy == SURF_ROUTING_NULL) @@ -232,7 +232,6 @@ static void parse_S_host(const char *host_id, const char* coord) info->rc_type = SURF_NETWORK_ELEMENT_HOST; xbt_dict_set(global_routing->where_network_elements, host_id, (void *) info, xbt_free); - if (strcmp(coord,"")) { xbt_dynar_t ctn = xbt_str_split_str(coord, " "); xbt_dynar_shrink(ctn, 0); @@ -306,7 +305,7 @@ static void parse_S_router(void) /** * \brief Set the endponints for a route */ -static void parse_S_route_new_and_endpoints(const char *src_id, const char *dst_id) +void parse_S_route_new_and_endpoints(const char *src_id, const char *dst_id) { if (src != NULL && dst != NULL && link_list != NULL) THROW2(arg_error, 0, "Route between %s to %s can not be defined", @@ -378,7 +377,7 @@ static void parse_S_bypassRoute_new_and_endpoints(void) /** * \brief Set a new link on the actual list of link for a route or ASroute */ -static void parse_E_link_ctn_new_elem(const char *link_id) +void parse_E_link_ctn_new_elem(const char *link_id) { char *val; val = xbt_strdup(link_id); @@ -416,7 +415,7 @@ static void parse_E_link_c_ctn_new_elem_lua(const char *link_id) /** * \brief Store the route by calling the set_route function of the current routing component */ -static void parse_E_route_store_route(void) +void parse_E_route_store_route(void) { name_route_extended_t route = xbt_new0(s_name_route_extended_t, 1); route->generic_route.link_list = link_list; @@ -476,7 +475,7 @@ static void parse_E_bypassRoute_store_route(void) * make the new structure and * set the parsing functions to allows parsing the part of the routing tree */ -static void parse_S_AS(char *AS_id, char *AS_routing) +void parse_S_AS(char *AS_id, char *AS_routing) { routing_component_t new_routing; model_type_t model = NULL; @@ -571,7 +570,7 @@ static void parse_S_AS_lua(char *id, char *mode) * When you finish to read the routing component, other structures must be created. * the "end" method allow to do that for any routing model type */ -static void parse_E_AS(const char *AS_id) +void parse_E_AS(const char *AS_id) { if (current_routing == NULL) { @@ -2621,6 +2620,7 @@ static route_extended_t rulebased_get_route(routing_component_t rc, int ovector_dst[OVECCOUNT]; const char **list_src = NULL; const char **list_dst = NULL; + int res; xbt_dynar_foreach(rule_list, cpt, ruleroute) { rc_src = pcre_exec(ruleroute->re_src, NULL, src, src_length, 0, 0, @@ -2630,12 +2630,10 @@ static route_extended_t rulebased_get_route(routing_component_t rc, pcre_exec(ruleroute->re_dst, NULL, dst, dst_length, 0, 0, ovector_dst, OVECCOUNT); if (rc_dst >= 0) { - xbt_assert1(!pcre_get_substring_list - (src, ovector_src, rc_src, &list_src), - "error solving substring list for src \"%s\"", src); - xbt_assert1(!pcre_get_substring_list - (dst, ovector_dst, rc_dst, &list_dst), - "error solving substring list for src \"%s\"", dst); + res = pcre_get_substring_list(src, ovector_src, rc_src, &list_src); + xbt_assert1(!res, "error solving substring list for src \"%s\"", src); + res = pcre_get_substring_list(dst, ovector_dst, rc_dst, &list_dst); + xbt_assert1(!res, "error solving substring list for src \"%s\"", dst); char *link_name; xbt_dynar_foreach(ruleroute->re_str_link, cpt, link_name) { char *new_link_name = @@ -3394,13 +3392,16 @@ static void routing_parse_Scluster(void) SURFXML_BUFFER_SET(host_power, temp_cluster_power); SURFXML_BUFFER_SET(host_core, cluster_core); SURFXML_BUFFER_SET(host_availability, "1.0"); - availability_file = bprintf("%s",cluster_availability_file); - state_file = bprintf("%s",cluster_state_file); - XBT_DEBUG("\tavailability_file=\"%s\"",xbt_str_varsubst(availability_file,patterns)); - XBT_DEBUG("\tstate_file=\"%s\"",xbt_str_varsubst(state_file,patterns)); - SURFXML_BUFFER_SET(host_availability_file, xbt_str_varsubst(availability_file,patterns)); - SURFXML_BUFFER_SET(host_state_file, xbt_str_varsubst(state_file,patterns)); - XBT_DEBUG(""); + SURFXML_BUFFER_SET(host_coordinates, ""); + xbt_free(availability_file); + availability_file = bprintf("%s",cluster_availability_file); + xbt_free(state_file); + state_file = bprintf("%s",cluster_state_file); + XBT_DEBUG("\tavailability_file=\"%s\"",xbt_str_varsubst(availability_file,patterns)); + XBT_DEBUG("\tstate_file=\"%s\"",xbt_str_varsubst(state_file,patterns)); + SURFXML_BUFFER_SET(host_availability_file, xbt_str_varsubst(availability_file,patterns)); + SURFXML_BUFFER_SET(host_state_file, xbt_str_varsubst(state_file,patterns)); + XBT_DEBUG(""); SURFXML_START_TAG(host); SURFXML_END_TAG(host); @@ -3451,14 +3452,17 @@ static void routing_parse_Scluster(void) SURFXML_BUFFER_SET(host_id, host_id); SURFXML_BUFFER_SET(host_power, temp_cluster_power); SURFXML_BUFFER_SET(host_core, cluster_core); - SURFXML_BUFFER_SET(host_availability, "1.0"); - availability_file = bprintf("%s",cluster_availability_file); - state_file = bprintf("%s",cluster_state_file); - XBT_DEBUG("\tavailability_file=\"%s\"",xbt_str_varsubst(availability_file,patterns)); - XBT_DEBUG("\tstate_file=\"%s\"",xbt_str_varsubst(state_file,patterns)); - SURFXML_BUFFER_SET(host_availability_file, xbt_str_varsubst(availability_file,patterns)); - SURFXML_BUFFER_SET(host_state_file, xbt_str_varsubst(state_file,patterns)); - XBT_DEBUG(""); + SURFXML_BUFFER_SET(host_availability, "1.0"); + SURFXML_BUFFER_SET(host_coordinates, ""); + xbt_free(availability_file); + availability_file = bprintf("%s",cluster_availability_file); + xbt_free(state_file); + state_file = bprintf("%s",cluster_state_file); + XBT_DEBUG("\tavailability_file=\"%s\"",xbt_str_varsubst(availability_file,patterns)); + XBT_DEBUG("\tstate_file=\"%s\"",xbt_str_varsubst(state_file,patterns)); + SURFXML_BUFFER_SET(host_availability_file, xbt_str_varsubst(availability_file,patterns)); + SURFXML_BUFFER_SET(host_state_file, xbt_str_varsubst(state_file,patterns)); + XBT_DEBUG(""); SURFXML_START_TAG(host); SURFXML_END_TAG(host); @@ -3678,10 +3682,10 @@ static void routing_parse_Scluster(void) } } xbt_dynar_free(&tab_elements_num); - free(router_id); #endif + free(router_id); free(link_backbone); free(link_router); xbt_dict_free(&patterns); @@ -3779,6 +3783,7 @@ static void routing_parse_Speer(void) SURFXML_BUFFER_SET(host_availability, "1.0"); SURFXML_BUFFER_SET(host_availability_file, peer_availability_file); SURFXML_BUFFER_SET(host_state_file, peer_state_file); + SURFXML_BUFFER_SET(host_coordinates, ""); SURFXML_START_TAG(host); SURFXML_END_TAG(host);