Ejemplo n.º 1
0
void sd_ipv4ll_free (sd_ipv4ll *ll) {
        if (!ll)
                return;

        sd_ipv4ll_stop(ll);
        sd_ipv4ll_detach_event(ll);

        free(ll);
}
Ejemplo n.º 2
0
sd_ipv4ll *sd_ipv4ll_unref(sd_ipv4ll *ll) {
        if (ll && REFCNT_DEC(ll->n_ref) == 0) {
                ll->receive_message =
                        sd_event_source_unref(ll->receive_message);
                ll->fd = safe_close(ll->fd);

                ll->timer = sd_event_source_unref(ll->timer);

                sd_ipv4ll_detach_event(ll);

                free(ll->random_data);
                free(ll->random_data_state);
                free(ll);

                return NULL;
        }

        return ll;
}
Ejemplo n.º 3
0
sd_ipv4ll *sd_ipv4ll_unref(sd_ipv4ll *ll) {

    if (!ll)
        return NULL;

    assert(ll->n_ref >= 1);
    ll->n_ref--;

    if (ll->n_ref > 0)
        return ll;

    ll->receive_message = sd_event_source_unref(ll->receive_message);
    ll->fd = safe_close(ll->fd);

    ll->timer = sd_event_source_unref(ll->timer);

    sd_ipv4ll_detach_event(ll);

    free(ll->random_data);
    free(ll->random_data_state);
    free(ll);

    return NULL;
}