X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3a7c706f9b266fe9faee94ab0098bd3090e25e56..04446484b754854fb4e9cd3ef649bdc56dcc5d86:/src/surf/surf_routing.c diff --git a/src/surf/surf_routing.c b/src/surf/surf_routing.c index f921c14d85..c94cd5ca9c 100644 --- a/src/surf/surf_routing.c +++ b/src/surf/surf_routing.c @@ -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); @@ -1073,7 +1072,8 @@ static e_surf_network_element_type_t get_network_element_type(const char *name) { network_element_info_t rc = NULL; - rc = xbt_dict_get(global_routing->where_network_elements, name); + rc = xbt_dict_get_or_null(global_routing->where_network_elements, name); + if(!rc) return SURF_NETWORK_ELEMENT_NULL; return rc->rc_type; } @@ -2621,6 +2621,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 +2631,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 = @@ -3385,30 +3384,33 @@ static void routing_parse_Scluster(void) #endif link_id = bprintf("%s_link_%d", cluster_id, start); - xbt_dict_set(patterns,"radical",bprintf("%d",start),NULL); + xbt_dict_set(patterns, "radical", bprintf("%d", start), xbt_free); temp_cluster_power = bprintf("%s",cluster_power); - temp_cluster_power = bprintf("%s",replace_random_parameter(temp_cluster_power)); + temp_cluster_power = replace_random_parameter(temp_cluster_power); XBT_DEBUG("", host_id, temp_cluster_power); A_surfxml_host_state = A_surfxml_host_state_ON; 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_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); temp_cluster_bw = bprintf("%s",cluster_bw); - temp_cluster_bw = bprintf("%s",replace_random_parameter(temp_cluster_bw)); + temp_cluster_bw = replace_random_parameter(temp_cluster_bw); temp_cluster_lat = bprintf("%s",cluster_lat); - temp_cluster_lat = bprintf("%s",replace_random_parameter(temp_cluster_lat)); + temp_cluster_lat = replace_random_parameter(temp_cluster_lat); XBT_DEBUG("", link_id,temp_cluster_bw, cluster_lat); A_surfxml_link_state = A_surfxml_link_state_ON; A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED; @@ -3425,6 +3427,8 @@ static void routing_parse_Scluster(void) SURFXML_START_TAG(link); SURFXML_END_TAG(link); + xbt_free(temp_cluster_bw); + xbt_free(temp_cluster_lat); free(link_id); free(host_id); break; @@ -3441,29 +3445,34 @@ static void routing_parse_Scluster(void) #endif link_id = bprintf("%s_link_%d", cluster_id, i); - xbt_dict_set(patterns,"radical",bprintf("%d",i),NULL); + xbt_dict_set(patterns, "radical", bprintf("%d", i), xbt_free); temp_cluster_power = bprintf("%s",cluster_power); - temp_cluster_power = bprintf("%s",replace_random_parameter(temp_cluster_power)); + temp_cluster_power = replace_random_parameter(temp_cluster_power); XBT_DEBUG("", host_id, temp_cluster_power); A_surfxml_host_state = A_surfxml_host_state_ON; 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); + xbt_free(temp_cluster_power); + temp_cluster_bw = bprintf("%s",cluster_bw); - temp_cluster_bw = bprintf("%s",replace_random_parameter(temp_cluster_bw)); + temp_cluster_bw = replace_random_parameter(temp_cluster_bw); temp_cluster_lat = bprintf("%s",cluster_lat); - temp_cluster_lat = bprintf("%s",replace_random_parameter(temp_cluster_lat)); + temp_cluster_lat = replace_random_parameter(temp_cluster_lat); XBT_DEBUG("", link_id,temp_cluster_bw, cluster_lat); A_surfxml_link_state = A_surfxml_link_state_ON; A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED; @@ -3480,6 +3489,8 @@ static void routing_parse_Scluster(void) SURFXML_START_TAG(link); SURFXML_END_TAG(link); + xbt_free(temp_cluster_bw); + xbt_free(temp_cluster_lat); free(link_id); free(host_id); } @@ -3506,11 +3517,11 @@ static void routing_parse_Scluster(void) SURFXML_END_TAG(router); //TODO - xbt_dict_set(patterns,"radical",bprintf("_router"),NULL); + xbt_dict_set(patterns, "radical", bprintf("_router"), xbt_free); temp_cluster_bw = bprintf("%s",cluster_bw); - temp_cluster_bw = bprintf("%s",replace_random_parameter(temp_cluster_bw)); + temp_cluster_bw = replace_random_parameter(temp_cluster_bw); temp_cluster_lat = bprintf("%s",cluster_lat); - temp_cluster_lat = bprintf("%s",replace_random_parameter(temp_cluster_lat)); + temp_cluster_lat = replace_random_parameter(temp_cluster_lat); XBT_DEBUG("", link_router,temp_cluster_bw, temp_cluster_lat); A_surfxml_link_state = A_surfxml_link_state_ON; A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED; @@ -3527,6 +3538,9 @@ static void routing_parse_Scluster(void) SURFXML_START_TAG(link); SURFXML_END_TAG(link); + xbt_free(temp_cluster_bw); + xbt_free(temp_cluster_lat); + XBT_DEBUG("", link_backbone,cluster_bb_bw, cluster_bb_lat); A_surfxml_link_state = A_surfxml_link_state_ON; A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED; @@ -3669,10 +3683,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); @@ -3691,23 +3705,21 @@ static void routing_parse_Scluster(void) */ static char* replace_random_parameter(char * string) { - char *temp_string = NULL; - char *test_string = NULL; + char *test_string = NULL; - if(xbt_dict_size(random_value)==0) - return string; + if(xbt_dict_size(random_value)==0) + return string; - temp_string = bprintf("%s",string); - temp_string = xbt_str_varsubst(temp_string,patterns); // for patterns of cluster - test_string = bprintf("${%s}",temp_string); - test_string = xbt_str_varsubst(test_string,random_value); //Add ${xxxxx} for random Generator + string = xbt_str_varsubst(string, patterns); // for patterns of cluster + test_string = bprintf("${%s}", string); + test_string = xbt_str_varsubst(test_string,random_value); //Add ${xxxxx} for random Generator - if(strcmp(test_string,"")) //if not empty, keep this value. - string = bprintf("%s",test_string); - else //In other case take old value (without ${}) - string = bprintf("%s",temp_string); + if (strcmp(test_string,"")) { //if not empty, keep this value. + xbt_free(string); + string = test_string; + } //In other case take old value (without ${}) - return string; + return string; } static void routing_parse_Speer(void) @@ -3772,6 +3784,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);