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){