route_extended_t(*get_bypass_route) (routing_component_t rc,
const char *src, const char *dst);
void (*finalize) (routing_component_t rc);
- void (*set_processing_unit) (routing_component_t rc, const char *name);
- void (*set_autonomous_system) (routing_component_t rc, const char *name);
- void (*set_route) (routing_component_t rc, const char *src,
+ /* The parser calls the following functions to inform the routing models
+ * that a new element is added to the AS currently built.
+ *
+ * Of course, only the routing model of this AS is informed, not every ones */
+ void (*parse_PU) (routing_component_t rc, const char *name); /* A host or a router, whatever */
+ void (*parse_AS) (routing_component_t rc, const char *name);
+ void (*parse_route) (routing_component_t rc, const char *src,
const char *dst, name_route_extended_t route);
- void (*set_ASroute) (routing_component_t rc, const char *src,
+ void (*parse_ASroute) (routing_component_t rc, const char *src,
const char *dst, name_route_extended_t route);
- void (*set_bypassroute) (routing_component_t rc, const char *src,
+ void (*parse_bypassroute) (routing_component_t rc, const char *src,
const char *dst, route_extended_t e_route);
} s_routing_component_t;
xbt_assert(!xbt_lib_get_or_null(host_lib, host->id, ROUTING_HOST_LEVEL),
"Reading a host, processing unit \"%s\" already exists", host->id);
- (*(current_routing->set_processing_unit)) (current_routing, host->id);
+ (*(current_routing->parse_PU)) (current_routing, host->id);
info = xbt_new0(s_network_element_info_t, 1);
info->rc_component = current_routing;
info->rc_type = SURF_NETWORK_ELEMENT_HOST;
"Reading a router, processing unit \"%s\" already exists",
router->id);
- (*(current_routing->set_processing_unit)) (current_routing, router->id);
+ (*(current_routing->parse_PU)) (current_routing, router->id);
info = xbt_new0(s_network_element_info_t, 1);
info->rc_component = current_routing;
info->rc_type = SURF_NETWORK_ELEMENT_ROUTER;
{
name_route_extended_t route = xbt_new0(s_name_route_extended_t, 1);
route->generic_route.link_list = link_list;
- xbt_assert(current_routing->set_route,
+ xbt_assert(current_routing->parse_route,
"no defined method \"set_route\" in \"%s\"",
current_routing->name);
- (*(current_routing->set_route)) (current_routing, src, dst, route);
+ (*(current_routing->parse_route)) (current_routing, src, dst, route);
link_list = NULL;
src = NULL;
dst = NULL;
e_route->generic_route.link_list = link_list;
e_route->src_gateway = xbt_strdup(gw_src);
e_route->dst_gateway = xbt_strdup(gw_dst);
- xbt_assert(current_routing->set_ASroute,
+ xbt_assert(current_routing->parse_ASroute,
"no defined method \"set_ASroute\" in \"%s\"",
current_routing->name);
- (*(current_routing->set_ASroute)) (current_routing, src, dst, e_route);
+ (*(current_routing->parse_ASroute)) (current_routing, src, dst, e_route);
link_list = NULL;
src = NULL;
dst = NULL;
e_route->generic_route.link_list = link_list;
e_route->src_gateway = xbt_strdup(gw_src);
e_route->dst_gateway = xbt_strdup(gw_dst);
- xbt_assert(current_routing->set_bypassroute,
+ xbt_assert(current_routing->parse_bypassroute,
"Bypassing mechanism not implemented by routing '%s'",
current_routing->name);
- (*(current_routing->set_bypassroute)) (current_routing, src, dst, e_route);
+ (*(current_routing->parse_bypassroute)) (current_routing, src, dst, e_route);
link_list = NULL;
src = NULL;
dst = NULL;
xbt_dict_set(current_routing->routing_sons, AS_id,
(void *) new_routing, NULL);
/* add to the father element list */
- (*(current_routing->set_autonomous_system)) (current_routing, AS_id);
+ (*(current_routing->parse_AS)) (current_routing, AS_id);
/* unload the prev parse rules */
if (current_routing->routing->unload)
(*(current_routing->routing->unload)) ();
routing_component_dijkstra_t new_component = (routing_component_dijkstra_t)
routmod_generic_create(sizeof(s_routing_component_dijkstra_t));
- new_component->generic_routing.set_route = model_dijkstra_both_set_route;
- new_component->generic_routing.set_ASroute = model_dijkstra_both_set_route;
+ new_component->generic_routing.parse_route = model_dijkstra_both_parse_route;
+ new_component->generic_routing.parse_ASroute = model_dijkstra_both_parse_route;
new_component->generic_routing.get_route = dijkstra_get_route;
new_component->generic_routing.get_onelink_routes =
dijkstra_get_onelink_routes;
}
}
-void model_dijkstra_both_set_route (routing_component_t rc, const char *src,
+void model_dijkstra_both_parse_route (routing_component_t rc, const char *src,
const char *dst, name_route_extended_t route)
{
routing_component_dijkstra_t routing = (routing_component_dijkstra_t) rc;
routing_component_t model_floyd_create(void)
{
routing_component_floyd_t new_component = (routing_component_floyd_t)routmod_generic_create(sizeof(s_routing_component_floyd_t));
- new_component->generic_routing.set_route = model_floyd_set_route;
- new_component->generic_routing.set_ASroute = model_floyd_set_route;
+ new_component->generic_routing.parse_route = model_floyd_parse_route;
+ new_component->generic_routing.parse_ASroute = model_floyd_parse_route;
new_component->generic_routing.get_route = floyd_get_route;
new_component->generic_routing.get_onelink_routes =
floyd_get_onelink_routes;
//FIXME: kill dupplicates in next function with full routing
-void model_floyd_set_route(routing_component_t rc, const char *src,
+void model_floyd_parse_route(routing_component_t rc, const char *src,
const char *dst, name_route_extended_t route)
{
routing_component_floyd_t routing = (routing_component_floyd_t) rc;
routing_component_full_t new_component = (routing_component_full_t)
routmod_generic_create(sizeof(s_routing_component_full_t));
- new_component->generic_routing.set_route = model_full_set_route;
- new_component->generic_routing.set_ASroute = model_full_set_route;
+ new_component->generic_routing.parse_route = model_full_set_route;
+ new_component->generic_routing.parse_ASroute = model_full_set_route;
new_component->generic_routing.get_route = full_get_route;
new_component->generic_routing.get_onelink_routes =
full_get_onelink_routes;
routing_component_t routmod_generic_create(size_t childsize) {
routing_component_t new_component = xbt_malloc0(childsize);
- new_component->set_processing_unit = generic_set_processing_unit;
- new_component->set_autonomous_system = generic_set_autonomous_system;
- new_component->set_route = NULL;
- new_component->set_ASroute = NULL;
- new_component->set_bypassroute = generic_set_bypassroute;
+ new_component->parse_PU = generic_parse_PU;
+ new_component->parse_AS = generic_parse_AS;
+ new_component->parse_route = NULL;
+ new_component->parse_ASroute = NULL;
+ new_component->parse_bypassroute = generic_parse_bypassroute;
new_component->get_route = NULL;
new_component->get_latency = generic_get_link_latency;
new_component->get_onelink_routes = NULL;
}
-void generic_set_processing_unit(routing_component_t rc, const char *name)
+void generic_parse_PU(routing_component_t rc, const char *name)
{
XBT_DEBUG("Load process unit \"%s\"", name);
int *id = xbt_new0(int, 1);
xbt_dict_set(_to_index, name, id, xbt_free);
}
-void generic_set_autonomous_system(routing_component_t rc, const char *name)
+void generic_parse_AS(routing_component_t rc, const char *name)
{
XBT_DEBUG("Load Autonomous system \"%s\"", name);
int *id = xbt_new0(int, 1);
xbt_dict_set(_to_index, name, id, xbt_free);
}
-void generic_set_bypassroute(routing_component_t rc,
+void generic_parse_bypassroute(routing_component_t rc,
const char *src, const char *dst,
route_extended_t e_route)
{
xbt_free(rc);
}
-static void none_set_processing_unit(routing_component_t rc,
+static void none_parse_PU(routing_component_t rc,
const char *name)
{
}
-static void none_set_autonomous_system(routing_component_t rc,
+static void none_parse_AS(routing_component_t rc,
const char *name)
{
}
routing_component_t model_none_create(void)
{
routing_component_t new_component = xbt_new(s_routing_component_t, 1);
- new_component->set_processing_unit = none_set_processing_unit;
- new_component->set_autonomous_system = none_set_autonomous_system;
- new_component->set_route = NULL;
- new_component->set_ASroute = NULL;
- new_component->set_bypassroute = NULL;
+ new_component->parse_PU = none_parse_PU;
+ new_component->parse_AS = none_parse_AS;
+ new_component->parse_route = NULL;
+ new_component->parse_ASroute = NULL;
+ new_component->parse_bypassroute = NULL;
new_component->get_route = none_get_route;
new_component->get_onelink_routes = none_get_onelink_routes;
new_component->get_bypass_route = none_get_bypass_route;
/* ***************** GENERIC PARSE FUNCTIONS (declarations) ***************** */
routing_component_t routmod_generic_create(size_t childsize);
-void generic_set_processing_unit(routing_component_t rc,
+void generic_parse_PU(routing_component_t rc,
const char *name);
-void generic_set_autonomous_system(routing_component_t rc,
+void generic_parse_AS(routing_component_t rc,
const char *name);
-void generic_set_bypassroute(routing_component_t rc,
+void generic_parse_bypassroute(routing_component_t rc,
const char *src, const char *dst,
route_extended_t e_route);
/* *************************** FLOYD ROUTING ******************************** */
routing_component_t model_floyd_create(void); /* create structures for floyd routing model */
void model_floyd_end(void); /* finalize the creation of floyd routing model */
-void model_floyd_set_route(routing_component_t rc, const char *src,
+void model_floyd_parse_route(routing_component_t rc, const char *src,
const char *dst, name_route_extended_t route);
/* ************************************************** */
routing_component_t model_dijkstra_create(void); /* create structures for dijkstra routing model */
routing_component_t model_dijkstracache_create(void); /* create structures for dijkstracache routing model */
void model_dijkstra_both_end(void); /* finalize the creation of dijkstra routing model */
-void model_dijkstra_both_set_route (routing_component_t rc, const char *src,
+void model_dijkstra_both_parse_route (routing_component_t rc, const char *src,
const char *dst, name_route_extended_t route);
/* ************************************************************************** */
/* Parse routing model functions */
-static void model_rulebased_set_processing_unit(routing_component_t rc,
+static void model_rulebased_parse_PU(routing_component_t rc,
const char *name)
{
routing_component_rulebased_t routing =
xbt_dict_set(routing->dict_processing_units, name, (void *) (-1), NULL);
}
-static void model_rulebased_set_autonomous_system(routing_component_t rc,
+static void model_rulebased_parse_AS(routing_component_t rc,
const char *name)
{
routing_component_rulebased_t routing =
NULL);
}
-static void model_rulebased_set_route(routing_component_t rc,
+static void model_rulebased_parse_route(routing_component_t rc,
const char *src, const char *dst,
name_route_extended_t route)
{
xbt_free(route);
}
-static void model_rulebased_set_ASroute(routing_component_t rc,
+static void model_rulebased_parse_ASroute(routing_component_t rc,
const char *src, const char *dst,
name_route_extended_t route)
{
xbt_free(route);
}
-static void model_rulebased_set_bypassroute(routing_component_t rc,
+static void model_rulebased_parse_bypassroute(routing_component_t rc,
const char *src,
const char *dst,
route_extended_t e_route)
routing_component_rulebased_t new_component = (routing_component_rulebased_t)
routmod_generic_create(sizeof(s_routing_component_rulebased_t));
- new_component->generic_routing.set_processing_unit =
- model_rulebased_set_processing_unit;
- new_component->generic_routing.set_autonomous_system =
- model_rulebased_set_autonomous_system;
- new_component->generic_routing.set_route = model_rulebased_set_route;
- new_component->generic_routing.set_ASroute = model_rulebased_set_ASroute;
- new_component->generic_routing.set_bypassroute = model_rulebased_set_bypassroute;
+ new_component->generic_routing.parse_PU = model_rulebased_parse_PU;
+ new_component->generic_routing.parse_AS = model_rulebased_parse_AS;
+ new_component->generic_routing.parse_route = model_rulebased_parse_route;
+ new_component->generic_routing.parse_ASroute = model_rulebased_parse_ASroute;
+ new_component->generic_routing.parse_bypassroute = model_rulebased_parse_bypassroute;
new_component->generic_routing.get_onelink_routes = rulebased_get_onelink_routes;
new_component->generic_routing.get_route = rulebased_get_route;
new_component->generic_routing.get_bypass_route = rulebased_get_bypass_route;