/** destroy locks in tree and delete autotrust anchors */ static void anchors_delfunc(rbnode_t* elem, void* ATTR_UNUSED(arg)) { struct trust_anchor* ta = (struct trust_anchor*)elem; if(ta->autr) { autr_point_delete(ta); } else { lock_basic_destroy(&ta->lock); } }
/** destroy locks in tree and delete autotrust anchors */ static void anchors_delfunc(rbnode_t* elem, void* ATTR_UNUSED(arg)) { struct trust_anchor* ta = (struct trust_anchor*)elem; if(!ta) return; if(ta->autr) { autr_point_delete(ta); } else { struct ta_key* p, *np; lock_basic_destroy(&ta->lock); free(ta->name); p = ta->keylist; while(p) { np = p->next; free(p->data); free(p); p = np; } assembled_rrset_delete(ta->ds_rrset); assembled_rrset_delete(ta->dnskey_rrset); free(ta); } }