double value,
InstrUserVariable what)
{
- xbt_dynar_t route = global_routing->get_route (src, dst);
+ xbt_dynar_t route = routing_get_route (src, dst);
unsigned int i;
void *link;
xbt_dynar_foreach (route, i, link) {
(child2->kind == INSTR_HOST || child2->kind == INSTR_ROUTER) &&
strcmp (child1_name, child2_name) != 0){
- xbt_dynar_t route = global_routing->get_route (child1_name, child2_name);
+ xbt_dynar_t route = routing_get_route (child1_name, child2_name);
if (TRACE_onelink_only()){
if (xbt_dynar_length (route) > 1) continue;
}
}
#ifdef HAVE_TRACING
if (TRACE_is_enabled()) {
- xbt_dynar_t route = global_routing->get_route(action->src_name,
- action->dst_name);
+ xbt_dynar_t route = routing_get_route(action->src_name, action->dst_name);
link_CM02_t link;
unsigned int i;
xbt_dynar_foreach(route, i, link) {
global_routing->get_route_latency(src_name, dst_name, &route, &latency, 0);
if (sg_network_fullduplex == 1) {
- back_route = global_routing->get_route(dst_name, src_name);
+ back_route = routing_get_route(dst_name, src_name);
}
/* LARGE PLATFORMS HACK:
static xbt_dynar_t net_get_route(const char *src, const char *dst)
{
- return global_routing->get_route(src, dst);
+ return routing_get_route(src, dst);
}
static double net_get_link_bandwidth(const void *link)
if (sg_network_fullduplex == 1) {
- back_route = global_routing->get_route(dst_name, src_name);
+ back_route = routing_get_route(dst_name, src_name);
}
/* LARGE PLATFORMS HACK:
static xbt_dynar_t im_net_get_route(const char *src, const char *dst)
{
- return global_routing->get_route(src, dst);
+ return routing_get_route(src, dst);
}
static double im_net_get_link_bandwidth(const void *link)
AS_t root;
void *loopback;
size_t size_of_link;
- xbt_dynar_t(*get_route) (const char *src, const char *dst);
xbt_dynar_t(*get_route_or_null) (const char *src, const char *dst);
xbt_dynar_t(*get_route_no_cleanup) (const char *src, const char *dst);
xbt_dynar_t(*get_onelink_routes) (void);
XBT_PUBLIC(void) routing_exit(void);
XBT_PUBLIC(void) routing_register_callbacks(void);
+XBT_PUBLIC(xbt_dynar_t) routing_get_route(const char *src, const char *dst);
+
/**
* Resource protected methods
*/
}
/**
- * \brief Generic method: find a route between hosts
+ * \brief Find a route between hosts
*
* \param src the source host name
* \param dst the destination host name
* by calling the differents "get_route" functions in each routing component.
* No need to free the returned dynar. It will be freed at the next call.
*/
-static xbt_dynar_t get_route(const char *src, const char *dst)
-{
+xbt_dynar_t routing_get_route(const char *src, const char *dst) {
xbt_dynar_t route = NULL;
get_route_latency(src, dst, &route, NULL, 1);
return route;
/* config the uniq global routing */
global_routing = xbt_new0(s_routing_global_t, 1);
global_routing->root = NULL;
- global_routing->get_route = get_route;
global_routing->get_route_or_null = get_route_or_null;
global_routing->get_latency = get_latency;
global_routing->get_route_no_cleanup = get_route_no_cleanup;
if (asg->hierarchy == SURF_ROUTING_RECURSIVE && v != dst_node_id
&& strcmp(gw_dst, prev_gw_src)) {
xbt_dynar_t e_route_as_to_as =
- (*(global_routing->get_route)) (gw_dst, prev_gw_src);
+ routing_get_route(gw_dst, prev_gw_src);
xbt_assert(e_route_as_to_as, "no route between \"%s\" and \"%s\"",
gw_dst, prev_gw_src);
links = e_route_as_to_as;
if (asg->hierarchy == SURF_ROUTING_RECURSIVE && !first
&& strcmp(gw_dst, prev_gw_src)) {
xbt_dynar_t e_route_as_to_as =
- (*(global_routing->get_route)) (gw_dst, prev_gw_src);
+ routing_get_route(gw_dst, prev_gw_src);
xbt_assert(e_route_as_to_as, "no route between \"%s\" and \"%s\"",
gw_dst, prev_gw_src);
links = e_route_as_to_as;
for (i = 0; i < workstation_nb; i++) {
for (j = 0; j < workstation_nb; j++) {
xbt_dynar_t route =
- global_routing->get_route(surf_resource_name
+ routing_get_route(surf_resource_name
(action->workstation_list[i]),
surf_resource_name(action->
workstation_list
for (j = 0; j < workstation_nb; j++) {
link_L07_t link;
xbt_dynar_t route =
- global_routing->get_route(surf_resource_name
+ routing_get_route(surf_resource_name
(workstation_list[i]),
surf_resource_name(workstation_list
[j]));
for (j = 0; j < workstation_nb; j++) {
link_L07_t link;
xbt_dynar_t route =
- global_routing->get_route(surf_resource_name
+ routing_get_route(surf_resource_name
(workstation_list[i]),
surf_resource_name(workstation_list
[j]));
return (surf_action_t) action;
}
-static xbt_dynar_t ptask_get_route(void *src, void *dst)
+static xbt_dynar_t ptask_get_route(void *src, void *dst) // FIXME: kill that callback kind?
{
- return global_routing->get_route(surf_resource_name(src),
+ return routing_get_route(surf_resource_name(src),
surf_resource_name(dst));
}
printf(" <route src=\"%s\" dst=\"%s\">\n "
,src
,dst);
- xbt_dynar_t route = global_routing->get_route(src,dst);
+ xbt_dynar_t route = routing_get_route(src,dst);
for(i=0;i<xbt_dynar_length(route) ;i++)
{
void *link = xbt_dynar_get_as(route,i,void *);
printf(" <route src=\"%s\" dst=\"%s\">\n "
,src
,dst);
- xbt_dynar_t route = global_routing->get_route(src,dst);
+ xbt_dynar_t route = routing_get_route(src,dst);
for(i=0;i<xbt_dynar_length(route) ;i++)
{
void *link = xbt_dynar_get_as(route,i,void *);
printf(" <route src=\"%s\" dst=\"%s\">\n "
,src
,dst);
- xbt_dynar_t route = global_routing->get_route(src,dst);
+ xbt_dynar_t route = routing_get_route(src,dst);
for(i=0;i<xbt_dynar_length(route) ;i++)
{
void *link = xbt_dynar_get_as(route,i,void *);
printf(" <route src=\"%s\" dst=\"%s\">\n "
,src
,dst);
- xbt_dynar_t route = global_routing->get_route(src,dst);
+ xbt_dynar_t route = routing_get_route(src,dst);
for(i=0;i<xbt_dynar_length(route) ;i++)
{
void *link = xbt_dynar_get_as(route,i,void *);