sd_pppoe *sd_pppoe_unref(sd_pppoe *ppp) {
        if (ppp && REFCNT_DEC(ppp->n_ref) <= 0) {
                pppoe_tags_clear(&ppp->tags);
                free(ppp->ifname);
                free(ppp->service_name);
                sd_pppoe_stop(ppp);
                sd_pppoe_detach_event(ppp);

                free(ppp);
        }

        return NULL;
}
Beispiel #2
0
sd_pppoe *sd_pppoe_unref(sd_pppoe *ppp) {

        if (!ppp)
                return NULL;

        assert(ppp->n_ref > 0);
        ppp->n_ref--;

        if (ppp->n_ref > 0)
                return NULL;

        pppoe_tags_clear(&ppp->tags);
        free(ppp->ifname);
        free(ppp->service_name);
        sd_pppoe_stop(ppp);
        sd_pppoe_detach_event(ppp);

        free(ppp);
        return NULL;
}