Lines Matching refs:rrset
197 struct rrsetinfo *rrset = NULL; in getrrsetbyname() local
269 rrset = calloc(1, sizeof(struct rrsetinfo)); in getrrsetbyname()
270 if (rrset == NULL) { in getrrsetbyname()
274 rrset->rri_rdclass = response->query->class; in getrrsetbyname()
275 rrset->rri_rdtype = response->query->type; in getrrsetbyname()
276 rrset->rri_ttl = response->answer->ttl; in getrrsetbyname()
277 rrset->rri_nrdatas = response->header.ancount; in getrrsetbyname()
282 rrset->rri_flags |= RRSET_VALIDATED; in getrrsetbyname()
286 rrset->rri_name = strdup(response->answer->name); in getrrsetbyname()
287 if (rrset->rri_name == NULL) { in getrrsetbyname()
293 rrset->rri_nrdatas = count_dns_rr(response->answer, rrset->rri_rdclass, in getrrsetbyname()
294 rrset->rri_rdtype); in getrrsetbyname()
295 rrset->rri_nsigs = count_dns_rr(response->answer, rrset->rri_rdclass, in getrrsetbyname()
299 rrset->rri_rdatas = calloc(rrset->rri_nrdatas, in getrrsetbyname()
301 if (rrset->rri_rdatas == NULL) { in getrrsetbyname()
307 if (rrset->rri_nsigs > 0) { in getrrsetbyname()
308 rrset->rri_sigs = calloc(rrset->rri_nsigs, sizeof(struct rdatainfo)); in getrrsetbyname()
309 if (rrset->rri_sigs == NULL) { in getrrsetbyname()
321 if (rr->class == rrset->rri_rdclass && in getrrsetbyname()
322 rr->type == rrset->rri_rdtype) in getrrsetbyname()
323 rdata = &rrset->rri_rdatas[index_ans++]; in getrrsetbyname()
325 if (rr->class == rrset->rri_rdclass && in getrrsetbyname()
327 rdata = &rrset->rri_sigs[index_sig++]; in getrrsetbyname()
343 *res = rrset; in getrrsetbyname()
347 if (rrset != NULL) in getrrsetbyname()
348 freerrset(rrset); in getrrsetbyname()
355 freerrset(struct rrsetinfo *rrset) in freerrset() argument
359 if (rrset == NULL) in freerrset()
362 if (rrset->rri_rdatas) { in freerrset()
363 for (i = 0; i < rrset->rri_nrdatas; i++) { in freerrset()
364 if (rrset->rri_rdatas[i].rdi_data == NULL) in freerrset()
366 free(rrset->rri_rdatas[i].rdi_data); in freerrset()
368 free(rrset->rri_rdatas); in freerrset()
371 if (rrset->rri_sigs) { in freerrset()
372 for (i = 0; i < rrset->rri_nsigs; i++) { in freerrset()
373 if (rrset->rri_sigs[i].rdi_data == NULL) in freerrset()
375 free(rrset->rri_sigs[i].rdi_data); in freerrset()
377 free(rrset->rri_sigs); in freerrset()
380 if (rrset->rri_name) in freerrset()
381 free(rrset->rri_name); in freerrset()
382 free(rrset); in freerrset()