void rng_clean(void) {
    void *i;
    for (i = (void *)1; i < hash_index; i++) {
      rng_t *rng = (rng_t *) hadas_get(rngs, i);
        gsl_rng_free(rng->r);
        free(rng);
    }
    hadas_destroy(rngs);
    return;
}
Esempio n. 2
0
void rng_clean(void) {
    /* edit by Fabrice Theoleyre <*****@*****.**> */
    void *i = NULL;
    for (i = (char*)i + 1; i < hash_index; i = (char*)i + 1) {
    /* end of edition */
    
        rng_t *rng = (rng_t *) hadas_get(rngs, i);
        gsl_rng_free(rng->r);
        free(rng);
    }
    hadas_destroy(rngs);
    return;
}
int unsetnode(call_t *c) {
    struct nodedata *nodedata = get_node_private_data(c);
    struct route *route;
    int i = get_node_count();
    while (i--) {
        if ((route = (struct route *) hadas_get(nodedata->routes, (void *) ((unsigned long) i))) != NULL) {
            free(route);
        }
    }
    hadas_destroy(nodedata->routes);    
    free(nodedata);
    return 0;
}
/* ************************************************** */
int set_header(call_t *c, packet_t *packet, destination_t *dst) {
    struct nodedata *nodedata = get_node_private_data(c);
    struct route *route = hadas_get(nodedata->routes, (void *) ((unsigned long) (dst->id)));
    struct routing_header *header = (struct routing_header *) (packet->data + nodedata->overhead);
    call_t c0 = {get_entity_bindings_down(c)->elts[0], c->node, c->entity};
    destination_t n_hop;

    if (route == NULL) {
        return -1;
    }
    header->dst = dst->id;
    header->src = c->node;
    
    n_hop.id = route->n_hop;
    return SET_HEADER(&c0, packet, &n_hop);
}
/* ************************************************** */
void forward(call_t *c, packet_t *packet) {
    struct nodedata *nodedata = get_node_private_data(c);
    call_t c0 = {get_entity_bindings_down(c)->elts[0], c->node, c->entity};
    struct routing_header *header = (struct routing_header *) (packet->data + nodedata->overhead);
    struct route *route = hadas_get(nodedata->routes, (void *) ((unsigned long) (header->dst)));
    destination_t destination;

    if (route == NULL) {
        packet_dealloc(packet);
        return;
    }

    destination.id = route->n_hop;
    if (SET_HEADER(&c0, packet, (void *) &destination) == -1) {
        packet_dealloc(packet);
        return;
    }
    TX(&c0, packet);
}
Esempio n. 6
0
/**
 * get RNG from ID
 **/
gsl_rng *get_rng_by_id(void *rng_id){
    rng_t *rng = (rng_t *)hadas_get(rngs, rng_id);
    gsl_rng *r = (gsl_rng *) rng->r;
    return r;
}
Esempio n. 7
0
void destroy_rng(void *rng_id) {
    rng_t *rng = (rng_t *) hadas_get(rngs, rng_id);
    gsl_rng_free(rng->r);
    hadas_delete(rngs, rng_id);
}