+/* returns an array of link_CM02_t */
+static const void **get_route(void *src, void *dst)
+{
+ network_card_CM02_t card_src = src;
+ network_card_CM02_t card_dst = dst;
+ return (const void **) ROUTE(card_src->id, card_dst->id);
+}
+
+static int get_route_size(void *src, void *dst)
+{
+ network_card_CM02_t card_src = src;
+ network_card_CM02_t card_dst = dst;
+ return ROUTE_SIZE(card_src->id, card_dst->id);
+}
+
+static const char *get_link_name(const void *link)
+{
+ return ((link_CM02_t) link)->name;
+}
+
+static double get_link_bandwidth(const void *link)
+{
+ return ((link_CM02_t) link)->bw_current;
+}
+
+static double get_link_latency(const void *link)
+{
+ return ((link_CM02_t) link)->lat_current;
+}
+
+static xbt_dict_t get_link_property_list(void *link)
+{
+ return ((link_CM02_t) link)->properties;
+}
+
+static void action_suspend(surf_action_t action)
+{
+ ((surf_action_network_CM02_t) action)->suspended = 1;
+ lmm_update_variable_weight(network_maxmin_system,
+ ((surf_action_network_CM02_t) action)->
+ variable, 0.0);
+}
+
+static void action_resume(surf_action_t action)
+{
+ if (((surf_action_network_CM02_t) action)->suspended) {
+ lmm_update_variable_weight(network_maxmin_system,
+ ((surf_action_network_CM02_t) action)->
+ variable,
+ ((surf_action_network_CM02_t) action)->
+ lat_current);
+ ((surf_action_network_CM02_t) action)->suspended = 0;
+ }
+}
+
+static int action_is_suspended(surf_action_t action)
+{
+ return ((surf_action_network_CM02_t) action)->suspended;
+}
+
+static void action_set_max_duration(surf_action_t action, double duration)
+{
+ action->max_duration = duration;
+}
+