It were declared as a field of global_routing, and of each and every
routing model. That's a bit much for a simple little function.
12 files changed:
SURF_NETWORK_ELEMENT_AS, /* AS type */
} e_surf_network_element_type_t;
SURF_NETWORK_ELEMENT_AS, /* AS type */
} e_surf_network_element_type_t;
-XBT_PUBLIC(e_surf_network_element_type_t) get_network_element_type(const char
- *name);
+XBT_PUBLIC(e_surf_network_element_type_t)
+ routing_get_network_element_type(const char *name);
/** @Brief Specify that we use that action */
XBT_PUBLIC(void) surf_action_ref(surf_action_t action);
/** @Brief Specify that we use that action */
XBT_PUBLIC(void) surf_action_ref(surf_action_t action);
array = xbt_new0(void *, host_lib->count);
xbt_lib_foreach(host_lib, cursor, key, data) {
array = xbt_new0(void *, host_lib->count);
xbt_lib_foreach(host_lib, cursor, key, data) {
- if(get_network_element_type(key) == SURF_NETWORK_ELEMENT_HOST)
+ if(routing_get_network_element_type(key) == SURF_NETWORK_ELEMENT_HOST)
array[i++] = data[MSG_HOST_LEVEL];
}
array[i++] = data[MSG_HOST_LEVEL];
}
double(*get_latency) (AS_t as, const char *src,
const char *dst, route_extended_t e_route);
xbt_dynar_t(*get_onelink_routes) (AS_t as);
double(*get_latency) (AS_t as, const char *src,
const char *dst, route_extended_t e_route);
xbt_dynar_t(*get_onelink_routes) (AS_t as);
- e_surf_network_element_type_t(*get_network_element_type) (const char *name);
route_extended_t(*get_bypass_route) (AS_t as,
const char *src, const char *dst);
void (*finalize) (AS_t as);
route_extended_t(*get_bypass_route) (AS_t as,
const char *src, const char *dst);
void (*finalize) (AS_t as);
xbt_dynar_t(*get_onelink_routes) (void);
void (*get_route_latency)(const char *src, const char *dst,
xbt_dynar_t *route, double *latency, int cleanup);
xbt_dynar_t(*get_onelink_routes) (void);
void (*get_route_latency)(const char *src, const char *dst,
xbt_dynar_t *route, double *latency, int cleanup);
- e_surf_network_element_type_t(*get_network_element_type) (const char *name);
- xbt_dynar_t last_route;
};
XBT_PUBLIC(void) routing_model_create(size_t size_of_link, void *loopback);
};
XBT_PUBLIC(void) routing_model_create(size_t size_of_link, void *loopback);
static void get_route_latency(const char *src, const char *dst,
xbt_dynar_t * route, double *latency, int cleanup)
{
static void get_route_latency(const char *src, const char *dst,
xbt_dynar_t * route, double *latency, int cleanup)
{
+ static xbt_dynar_t last_route = NULL;
+
_get_route_latency(src, dst, route, latency);
xbt_assert(!route || *route, "no route between \"%s\" and \"%s\"", src, dst);
xbt_assert(!latency || *latency >= 0.0,
"latency error on route between \"%s\" and \"%s\"", src, dst);
if (route) {
_get_route_latency(src, dst, route, latency);
xbt_assert(!route || *route, "no route between \"%s\" and \"%s\"", src, dst);
xbt_assert(!latency || *latency >= 0.0,
"latency error on route between \"%s\" and \"%s\"", src, dst);
if (route) {
- xbt_dynar_free(&global_routing->last_route);
- global_routing->last_route = cleanup ? *route : NULL;
+ xbt_dynar_free(&last_route);
+ last_route = cleanup ? *route : NULL;
return recursive_get_onelink_routes(global_routing->root);
}
return recursive_get_onelink_routes(global_routing->root);
}
-e_surf_network_element_type_t get_network_element_type(const char *name)
+e_surf_network_element_type_t routing_get_network_element_type(const char *name)
{
network_element_info_t rc = NULL;
{
network_element_info_t rc = NULL;
global_routing->get_route_no_cleanup = get_route_no_cleanup;
global_routing->get_onelink_routes = get_onelink_routes;
global_routing->get_route_latency = get_route_latency;
global_routing->get_route_no_cleanup = get_route_no_cleanup;
global_routing->get_onelink_routes = get_onelink_routes;
global_routing->get_route_latency = get_route_latency;
- global_routing->get_network_element_type = get_network_element_type;
global_routing->loopback = loopback;
global_routing->size_of_link = size_of_links;
global_routing->loopback = loopback;
global_routing->size_of_link = size_of_links;
- global_routing->last_route = NULL;
/* no current routing at moment */
current_routing = NULL;
}
/* no current routing at moment */
current_routing = NULL;
}
if (!global_routing)
return;
finalize_rec(global_routing->root);
if (!global_routing)
return;
finalize_rec(global_routing->root);
- xbt_dynar_free(&global_routing->last_route);
xbt_free(global_routing);
}
xbt_free(global_routing);
}
else{
XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", src,
route->src_gateway, dst, route->dst_gateway);
else{
XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", src,
route->src_gateway, dst, route->dst_gateway);
- if(global_routing->get_network_element_type((const char*)route->dst_gateway) == SURF_NETWORK_ELEMENT_NULL)
+ if(routing_get_network_element_type((const char*)route->dst_gateway) == SURF_NETWORK_ELEMENT_NULL)
xbt_die("The dst_gateway '%s' does not exist!",route->dst_gateway);
xbt_die("The dst_gateway '%s' does not exist!",route->dst_gateway);
- if(global_routing->get_network_element_type((const char*)route->src_gateway) == SURF_NETWORK_ELEMENT_NULL)
+ if(routing_get_network_element_type((const char*)route->src_gateway) == SURF_NETWORK_ELEMENT_NULL)
xbt_die("The src_gateway '%s' does not exist!",route->src_gateway);
}
xbt_die("The src_gateway '%s' does not exist!",route->src_gateway);
}
else{
XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", src,
route->src_gateway, dst, route->dst_gateway);
else{
XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", src,
route->src_gateway, dst, route->dst_gateway);
- if(global_routing->get_network_element_type((const char*)route->dst_gateway) == SURF_NETWORK_ELEMENT_NULL)
+ if(routing_get_network_element_type((const char*)route->dst_gateway) == SURF_NETWORK_ELEMENT_NULL)
xbt_die("The dst_gateway '%s' does not exist!",route->dst_gateway);
xbt_die("The dst_gateway '%s' does not exist!",route->dst_gateway);
- if(global_routing->get_network_element_type((const char*)route->src_gateway) == SURF_NETWORK_ELEMENT_NULL)
+ if(routing_get_network_element_type((const char*)route->src_gateway) == SURF_NETWORK_ELEMENT_NULL)
xbt_die("The src_gateway '%s' does not exist!",route->src_gateway);
}
TO_FLOYD_LINK(*src_id, *dst_id) =
xbt_die("The src_gateway '%s' does not exist!",route->src_gateway);
}
TO_FLOYD_LINK(*src_id, *dst_id) =
else{
XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", src,
route->src_gateway, dst, route->dst_gateway);
else{
XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", src,
route->src_gateway, dst, route->dst_gateway);
- if(global_routing->get_network_element_type((const char*)route->dst_gateway) == SURF_NETWORK_ELEMENT_NULL)
+ if(routing_get_network_element_type((const char*)route->dst_gateway) == SURF_NETWORK_ELEMENT_NULL)
xbt_die("The dst_gateway '%s' does not exist!",route->dst_gateway);
xbt_die("The dst_gateway '%s' does not exist!",route->dst_gateway);
- if(global_routing->get_network_element_type((const char*)route->src_gateway) == SURF_NETWORK_ELEMENT_NULL)
+ if(routing_get_network_element_type((const char*)route->src_gateway) == SURF_NETWORK_ELEMENT_NULL)
xbt_die("The src_gateway '%s' does not exist!",route->src_gateway);
}
TO_ROUTE_FULL(*src_id, *dst_id) = generic_new_extended_route(rc->hierarchy,route,1);
xbt_die("The src_gateway '%s' does not exist!",route->src_gateway);
}
TO_ROUTE_FULL(*src_id, *dst_id) = generic_new_extended_route(rc->hierarchy,route,1);
new_component->finalize = NULL;
new_component->to_index = xbt_dict_new();
new_component->bypassRoutes = xbt_dict_new();
new_component->finalize = NULL;
new_component->to_index = xbt_dict_new();
new_component->bypassRoutes = xbt_dict_new();
- new_component->get_network_element_type = get_network_element_type;
//find router
char *router = NULL;
xbt_dict_foreach(routing->dict_processing_units, c1, k1, d1) {
//find router
char *router = NULL;
xbt_dict_foreach(routing->dict_processing_units, c1, k1, d1) {
- if (rc->get_network_element_type(k1) == SURF_NETWORK_ELEMENT_ROUTER){
+ if (routing_get_network_element_type(k1) == SURF_NETWORK_ELEMENT_ROUTER){
static double vivaldi_get_link_latency (AS_t rc,const char *src, const char *dst, route_extended_t e_route)
{
static double vivaldi_get_link_latency (AS_t rc,const char *src, const char *dst, route_extended_t e_route)
{
- if(get_network_element_type(src) == SURF_NETWORK_ELEMENT_AS) {
+ if(routing_get_network_element_type(src) == SURF_NETWORK_ELEMENT_AS) {
int need_to_clean = e_route?0:1;
double latency;
e_route = e_route?e_route:(*(rc->get_route)) (rc, src, dst);
int need_to_clean = e_route?0:1;
double latency;
e_route = e_route?e_route:(*(rc->get_route)) (rc, src, dst);
}
xbt_lib_foreach(as_router_lib, cursor_dst, dst, value) //to router
{
}
xbt_lib_foreach(as_router_lib, cursor_dst, dst, value) //to router
{
- if(get_network_element_type(dst) == SURF_NETWORK_ELEMENT_ROUTER){
+ if(routing_get_network_element_type(dst) == SURF_NETWORK_ELEMENT_ROUTER){
printf(" <route src=\"%s\" dst=\"%s\">\n "
,src
,dst);
printf(" <route src=\"%s\" dst=\"%s\">\n "
,src
,dst);
xbt_lib_foreach(as_router_lib, cursor_src, src, value) // Routes from router
{
xbt_lib_foreach(as_router_lib, cursor_src, src, value) // Routes from router
{
- if(get_network_element_type(src) == SURF_NETWORK_ELEMENT_ROUTER){
+ if(routing_get_network_element_type(src) == SURF_NETWORK_ELEMENT_ROUTER){
xbt_lib_foreach(as_router_lib, cursor_dst, dst, value) //to router
{
xbt_lib_foreach(as_router_lib, cursor_dst, dst, value) //to router
{
- if(get_network_element_type(dst) == SURF_NETWORK_ELEMENT_ROUTER){
+ if(routing_get_network_element_type(dst) == SURF_NETWORK_ELEMENT_ROUTER){
printf(" <route src=\"%s\" dst=\"%s\">\n "
,src
,dst);
printf(" <route src=\"%s\" dst=\"%s\">\n "
,src
,dst);
xbt_lib_foreach(host_lib, cursor, key, data) {
printf(" - Seen: \"%s\" is type : %d\n", key,
xbt_lib_foreach(host_lib, cursor, key, data) {
printf(" - Seen: \"%s\" is type : %d\n", key,
- (int) global_routing->get_network_element_type(key));
+ (int) routing_get_network_element_type(key));
}
xbt_lib_foreach(as_router_lib, cursor, key, data) {
printf(" - Seen: \"%s\" is type : %d\n", key,
}
xbt_lib_foreach(as_router_lib, cursor, key, data) {
printf(" - Seen: \"%s\" is type : %d\n", key,
- (int) global_routing->get_network_element_type(key));
+ (int) routing_get_network_element_type(key));