+ SIMIX_unregister_action_to_condition(comm->act, comm->cond);
+}
+
+/**
+ * \brief Copy the communication data from the sender's buffer to the receiver's one
+ * \param comm The communication
+ */
+void SIMIX_network_copy_data(smx_comm_t comm)
+{
+ size_t src_buff_size = comm->src_buff_size;
+ size_t dst_buff_size = *comm->dst_buff_size;
+
+ /* Copy at most dst_buff_size bytes of the message to receiver's buffer */
+ dst_buff_size = MIN(dst_buff_size, src_buff_size);
+
+ /* Update the receiver's buffer size to the copied amount */
+ *comm->dst_buff_size = dst_buff_size;
+
+ memcpy(comm->dst_buff, comm->src_buff, dst_buff_size);
+
+ DEBUG4("Copying comm %p data from %s -> %s (%zu bytes)",
+ comm, comm->src_host->name, comm->dst_host->name, dst_buff_size);
+}
+
+/* FIXME: move to some other place */
+int comm_filter_get(smx_comm_t comm, void *arg)
+{
+ if(comm->type == comm_send){
+ if(arg && comm->src_host != (smx_host_t)arg)
+ return FALSE;
+ else
+ return TRUE;
+ }else{
+ return FALSE;
+ }
+}
+
+int comm_filter_put(smx_comm_t comm, void *arg)
+{
+ return comm->type == comm_recv ? TRUE : FALSE;