- xbt_lib_foreach(as_router_lib, cursor_src, src, value1){ // Routes from router
- value1 = (sg_netcard_t)xbt_lib_get_or_null(as_router_lib,src,ROUTING_ASR_LEVEL);
- if (value1->isRouter()){
- xbt_lib_foreach(as_router_lib, cursor_dst, dst, value2){ //to router
- value2 = (sg_netcard_t)xbt_lib_get_or_null(as_router_lib,dst,ROUTING_ASR_LEVEL);
- if(value2->isRouter()){
- std::printf(" <route src=\"%s\" dst=\"%s\">\n ", src, dst);
- std::vector<Link*> *route = new std::vector<Link*>();
- routing_platf->getRouteAndLatency((sg_netcard_t)value1,(sg_netcard_t)value2,route,nullptr);
- for(auto link :*route)
- std::printf("<link_ctn id=\"%s\"/>",link->getName());
- delete route;
- std::printf("\n </route>\n");
- }
- }
- xbt_dict_foreach(host_list, cursor_dst, dst, value2){ //to host
- std::printf(" <route src=\"%s\" dst=\"%s\">\n ",src, dst);
- std::vector<Link*> *route = new std::vector<Link*>();
- value2 = sg_host_by_name(dst)->pimpl_netcard;
- routing_platf->getRouteAndLatency((sg_netcard_t)value1,(sg_netcard_t)value2,route, nullptr);
- for(auto link : *route)
- std::printf("<link_ctn id=\"%s\"/>",link->getName());
- delete route;
- std::printf("\n </route>\n");
- }
- }
- }
+static void dump_platform()
+{
+ int version = 4;
+
+ std::printf("<?xml version='1.0'?>\n");
+ std::printf("<!DOCTYPE platform SYSTEM \"https://simgrid.org/simgrid.dtd\">\n");
+ std::printf("<platform version=\"%d\">\n", version);
+ std::printf("<AS id=\"AS0\" routing=\"Full\">\n");
+
+ // Hosts
+ dump_hosts();
+
+ // Routers
+ dump_routers();