X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/124d5ababfd69a4dd07e63211e1683762e04f7a0..96f27c279bcb5dd32cf0e8af04bd273240d298ef:/src/surf/xml/surfxml_sax_cb.cpp diff --git a/src/surf/xml/surfxml_sax_cb.cpp b/src/surf/xml/surfxml_sax_cb.cpp index 45febe1b24..f84c8014c3 100644 --- a/src/surf/xml/surfxml_sax_cb.cpp +++ b/src/surf/xml/surfxml_sax_cb.cpp @@ -14,7 +14,9 @@ #include "xbt/file.h" #include "xbt/dict.h" #include "src/surf/surf_private.h" +#include "src/surf/network_interface.hpp" #include "simgrid/sg_config.h" +#include "simgrid/link.h" #include "src/surf/xml/platf_private.hpp" @@ -747,18 +749,18 @@ void ETag_surfxml_route(void){ route.dst = A_surfxml_route_dst; route.gw_src = NULL; route.gw_dst = NULL; - route.link_list = parsed_link_list; - - switch (A_surfxml_route_symmetrical) { - case AU_surfxml_route_symmetrical: - case A_surfxml_route_symmetrical_YES: - route.symmetrical = TRUE; - break; - case A_surfxml_route_symmetrical_NO: - route.symmetrical = FALSE;; - break; + route.link_list = new std::vector(); + route.symmetrical = (A_surfxml_route_symmetrical == A_surfxml_route_symmetrical_YES); + + unsigned int cpt; + char *link_name; + xbt_dynar_foreach(parsed_link_list, cpt, link_name) { + simgrid::surf::Link *link = Link::byName(link_name); + route.link_list->push_back(link); } + + sg_platf_new_route(&route); parsed_link_list = NULL; } @@ -780,7 +782,14 @@ void ETag_surfxml_ASroute(void){ surf_parse_error("gw_dst=\"%s\" not found for ASroute from \"%s\" to \"%s\"", A_surfxml_ASroute_gw___dst, ASroute.src, ASroute.dst); - ASroute.link_list = parsed_link_list; + ASroute.link_list = new std::vector(); + + unsigned int cpt; + char *link_name; + xbt_dynar_foreach(parsed_link_list, cpt, link_name) { + simgrid::surf::Link *link = Link::byName(link_name); + ASroute.link_list->push_back(link); + } switch (A_surfxml_ASroute_symmetrical) { case AU_surfxml_ASroute_symmetrical: @@ -804,11 +813,18 @@ void ETag_surfxml_bypassRoute(void){ route.dst = A_surfxml_bypassRoute_dst; route.gw_src = NULL; route.gw_dst = NULL; - route.link_list = parsed_link_list; route.symmetrical = FALSE; + route.link_list = new std::vector(); - sg_platf_new_bypassRoute(&route); + unsigned int cpt; + char *link_name; + xbt_dynar_foreach(parsed_link_list, cpt, link_name) { + simgrid::surf::Link *link = Link::byName(link_name); + route.link_list->push_back(link); + } xbt_dynar_free(&parsed_link_list); + + sg_platf_new_bypassRoute(&route); } void ETag_surfxml_bypassASroute(void){ @@ -817,14 +833,20 @@ void ETag_surfxml_bypassASroute(void){ ASroute.src = A_surfxml_bypassASroute_src; ASroute.dst = A_surfxml_bypassASroute_dst; - ASroute.link_list = parsed_link_list; + ASroute.link_list = new std::vector(); + unsigned int cpt; + char *link_name; + xbt_dynar_foreach(parsed_link_list, cpt, link_name) { + simgrid::surf::Link *link = Link::byName(link_name); + ASroute.link_list->push_back(link); + } + xbt_dynar_free(&parsed_link_list); ASroute.symmetrical = FALSE; ASroute.gw_src = sg_netcard_by_name_or_null(A_surfxml_bypassASroute_gw___src); ASroute.gw_dst = sg_netcard_by_name_or_null(A_surfxml_bypassASroute_gw___dst); sg_platf_new_bypassRoute(&ASroute); - xbt_dynar_free(&parsed_link_list); } void ETag_surfxml_trace(void){