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; }
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; }