Lines Matching refs:rrset
195 struct rrsetinfo *rrset = NULL; in getrrsetbyname() local
273 rrset = calloc(1, sizeof(struct rrsetinfo)); in getrrsetbyname()
274 if (rrset == NULL) { in getrrsetbyname()
278 rrset->rri_rdclass = response->query->class; in getrrsetbyname()
279 rrset->rri_rdtype = response->query->type; in getrrsetbyname()
280 rrset->rri_ttl = response->answer->ttl; in getrrsetbyname()
281 rrset->rri_nrdatas = response->header.ancount; in getrrsetbyname()
286 rrset->rri_flags |= RRSET_VALIDATED; in getrrsetbyname()
290 rrset->rri_name = strdup(response->answer->name); in getrrsetbyname()
291 if (rrset->rri_name == NULL) { in getrrsetbyname()
297 rrset->rri_nrdatas = count_dns_rr(response->answer, rrset->rri_rdclass, in getrrsetbyname()
298 rrset->rri_rdtype); in getrrsetbyname()
299 rrset->rri_nsigs = count_dns_rr(response->answer, rrset->rri_rdclass, in getrrsetbyname()
303 rrset->rri_rdatas = calloc(rrset->rri_nrdatas, in getrrsetbyname()
305 if (rrset->rri_rdatas == NULL) { in getrrsetbyname()
311 rrset->rri_sigs = calloc(rrset->rri_nsigs, sizeof(struct rdatainfo)); in getrrsetbyname()
312 if (rrset->rri_sigs == NULL) { in getrrsetbyname()
323 if (rr->class == rrset->rri_rdclass && in getrrsetbyname()
324 rr->type == rrset->rri_rdtype) in getrrsetbyname()
325 rdata = &rrset->rri_rdatas[index_ans++]; in getrrsetbyname()
327 if (rr->class == rrset->rri_rdclass && in getrrsetbyname()
329 rdata = &rrset->rri_sigs[index_sig++]; in getrrsetbyname()
344 *res = rrset; in getrrsetbyname()
356 if (rrset != NULL) in getrrsetbyname()
357 freerrset(rrset); in getrrsetbyname()
364 freerrset(struct rrsetinfo *rrset) in freerrset() argument
368 if (rrset == NULL) in freerrset()
371 if (rrset->rri_rdatas) { in freerrset()
372 for (i = 0; i < rrset->rri_nrdatas; i++) { in freerrset()
373 if (rrset->rri_rdatas[i].rdi_data == NULL) in freerrset()
375 free(rrset->rri_rdatas[i].rdi_data); in freerrset()
377 free(rrset->rri_rdatas); in freerrset()
380 if (rrset->rri_sigs) { in freerrset()
381 for (i = 0; i < rrset->rri_nsigs; i++) { in freerrset()
382 if (rrset->rri_sigs[i].rdi_data == NULL) in freerrset()
384 free(rrset->rri_sigs[i].rdi_data); in freerrset()
386 free(rrset->rri_sigs); in freerrset()
389 if (rrset->rri_name) in freerrset()
390 free(rrset->rri_name); in freerrset()
391 free(rrset); in freerrset()