char *graphvizFile = NULL;
unsigned int i;
- xbt_dict_cursor_t cursor_src = NULL;
- xbt_dict_cursor_t cursor_dst = NULL;
char *src;
char *dst;
- char *data;
xbt_ex_t e;
+ xbt_lib_cursor_t cursor,cursor_src,cursor_dst;
+ char * key;
+ char **data;
SD_init(&argc, argv);
xbt_graph_t graph = xbt_graph_new_graph (0, NULL);
//adding hosts
- xbt_dict_foreach(global_routing->where_network_elements, cursor_src, src, data) {
- xbt_graph_new_node (graph, xbt_strdup(src));
+ xbt_lib_foreach(host_lib,cursor,key,data){
+ if(get_network_element_type(key) == SURF_NETWORK_ELEMENT_HOST ||
+ get_network_element_type(key) == SURF_NETWORK_ELEMENT_ROUTER )
+ xbt_graph_new_node (graph, xbt_strdup(key));
}
//adding links
xbt_graph_new_node (graph, xbt_strdup (SD_link_get_name(links[i])));
}
- xbt_dict_foreach(global_routing->where_network_elements, cursor_src, src, data) {
- xbt_dict_foreach(global_routing->where_network_elements, cursor_dst, dst, data) {
- if (strcmp(src,"loopback")==0 || strcmp(dst,"loopback")==0) continue;
+
+ xbt_lib_foreach(host_lib,cursor_src,src,data){
+ xbt_lib_foreach(host_lib,cursor_dst,dst,data){
xbt_node_t src_node = xbt_graph_search_node (graph, src, strcmp);
xbt_node_t dst_node = xbt_graph_search_node (graph, dst, strcmp);
- TRY {
+ if(get_network_element_type(src) != SURF_NETWORK_ELEMENT_AS &&
+ get_network_element_type(dst) != SURF_NETWORK_ELEMENT_AS ){
xbt_dynar_t route = global_routing->get_route(src,dst);
xbt_node_t previous = src_node;
for(i=0;i<xbt_dynar_length(route) ;i++)
{
void *link = xbt_dynar_get_as(route,i,void *);
- char *link_name = bprintf("%s",((surf_resource_t) link)->name);
+ char *link_name = xbt_strdup(((surf_resource_t)link)->name);
if (strcmp(link_name, "loopback")==0 || strcmp(link_name, "__loopback__")==0) continue;
xbt_node_t link_node = xbt_graph_search_node (graph, link_name, strcmp);
if (!link_node){
xbt_graph_new_edge (graph, previous, link_node, NULL);
}
previous = link_node;
+ free(link_name);
}
xbt_edge_t edge = xbt_graph_search_edge (graph, previous, dst_node);
if (!edge){
XBT_DEBUG("\%s %s", (char*)xbt_graph_node_get_data(previous), (char*)xbt_graph_node_get_data(dst_node));
xbt_graph_new_edge (graph, previous, dst_node, NULL);
}
- } CATCH(e) {}
}
+ }
}
xbt_graph_export_graphviz (graph, graphvizFile, node_name, edge_name);
xbt_graph_free_graph (graph, NULL, NULL, NULL);