/* Global vars */
extern routing_global_t global_routing;
-extern routing_component_t current_routing;
-extern model_type_t current_routing_model;
+extern AS_t current_routing;
+extern routing_model_description_t current_routing_model;
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route_full, surf, "Routing part of surf");
/* Routing model structure */
-typedef struct {
- s_routing_component_t generic_routing;
+typedef struct s_routing_component_full {
+ s_as_t generic_routing;
route_extended_t *routing_table;
} s_routing_component_full_t, *routing_component_full_t;
/* Business methods */
-static xbt_dynar_t full_get_onelink_routes(routing_component_t rc)
+static xbt_dynar_t full_get_onelink_routes(AS_t rc)
{
xbt_dynar_t ret = xbt_dynar_new(sizeof(onelink_t), xbt_free);
return ret;
}
-static route_extended_t full_get_route(routing_component_t rc,
+static route_extended_t full_get_route(AS_t rc,
const char *src, const char *dst)
{
xbt_assert(rc && src
return new_e_route;
}
-static void full_finalize(routing_component_t rc)
+static void full_finalize(AS_t rc)
{
routing_component_full_t routing = (routing_component_full_t) rc;
size_t table_size = xbt_dict_length(routing->generic_routing.to_index);
/* Creation routing model functions */
-void *model_full_create(void)
+AS_t model_full_create(void)
{
- routing_component_full_t new_component =
- xbt_new0(s_routing_component_full_t, 1);
- new_component->generic_routing.set_processing_unit =
- generic_set_processing_unit;
- new_component->generic_routing.set_autonomous_system =
- generic_set_autonomous_system;
- new_component->generic_routing.set_route = model_full_set_route;
- new_component->generic_routing.set_ASroute = model_full_set_route;
- new_component->generic_routing.set_bypassroute = generic_set_bypassroute;
+ routing_component_full_t new_component = (routing_component_full_t)
+ routmod_generic_create(sizeof(s_routing_component_full_t));
+
+ 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_latency = generic_get_link_latency;
new_component->generic_routing.get_onelink_routes =
full_get_onelink_routes;
- new_component->generic_routing.get_bypass_route =
- generic_get_bypassroute;
new_component->generic_routing.finalize = full_finalize;
- new_component->generic_routing.to_index = xbt_dict_new();
- new_component->generic_routing.bypassRoutes = xbt_dict_new();
- new_component->generic_routing.get_network_element_type = get_network_element_type;
- return new_component;
-}
-
-void model_full_load(void)
-{
- /* use "surfxml_add_callback" to add a parse function call */
-}
-void model_full_unload(void)
-{
- /* use "surfxml_del_callback" to remove a parse function call */
+ return (AS_t) new_component;
}
void model_full_end(void)
}
}
-void model_full_set_route(routing_component_t rc, const char *src,
- const char *dst, name_route_extended_t route)
+static int surf_pointer_resource_cmp(const void *a, const void *b) {
+ return a != b;
+}
+
+void model_full_set_route(AS_t rc, const char *src,
+ const char *dst, route_extended_t route)
{
int *src_id, *dst_id;
src_id = xbt_dict_get_or_null(rc->to_index, src);