1 void wdns_clear_rr(wdns_rr_t * rr)2wdns_clear_rr(wdns_rr_t *rr) 3 { 4 my_free(rr->name.data); 5 my_free(rr->rdata); 6 } 7 8 void wdns_clear_rrset(wdns_rrset_t * rrset)9wdns_clear_rrset(wdns_rrset_t *rrset) 10 { 11 for (unsigned i = 0; i < rrset->n_rdatas; i++) 12 my_free(rrset->rdatas[i]); 13 my_free(rrset->name.data); 14 my_free(rrset->rdatas); 15 rrset->n_rdatas = 0; 16 } 17 18 void wdns_clear_rrset_array(wdns_rrset_array_t * a)19wdns_clear_rrset_array(wdns_rrset_array_t *a) 20 { 21 for (unsigned i = 0; i < a->n_rrs; i++) 22 wdns_clear_rr(&a->rrs[i]); 23 my_free(a->rrs); 24 a->n_rrs = 0; 25 26 for (unsigned i = 0; i < a->n_rrsets; i++) 27 wdns_clear_rrset(&a->rrsets[i]); 28 my_free(a->rrsets); 29 a->n_rrsets = 0; 30 } 31 32 void wdns_clear_message(wdns_message_t * m)33wdns_clear_message(wdns_message_t *m) 34 { 35 my_free(m->edns.options); 36 m->edns.present = false; 37 for (unsigned i = 0; i < WDNS_MSG_SEC_MAX; i++) 38 wdns_clear_rrset_array(&m->sections[i]); 39 } 40