Lines Matching defs:rdataset

1 /*	$NetBSD: rdataset.c,v 1.9 2025/01/26 16:25:24 christos Exp $	*/
33 #include <dns/rdataset.h>
52 dns_rdataset_init(dns_rdataset_t *rdataset) {
54 * Make 'rdataset' a valid, disassociated rdataset.
57 REQUIRE(rdataset != NULL);
59 *rdataset = (dns_rdataset_t){
67 dns_rdataset_invalidate(dns_rdataset_t *rdataset) {
69 * Invalidate 'rdataset'.
72 REQUIRE(DNS_RDATASET_VALID(rdataset));
73 REQUIRE(rdataset->methods == NULL);
75 *rdataset = (dns_rdataset_t){
83 dns__rdataset_disassociate(dns_rdataset_t *rdataset DNS__DB_FLARG) {
85 * Disassociate 'rdataset' from its rdata, allowing it to be reused.
88 REQUIRE(DNS_RDATASET_VALID(rdataset));
89 REQUIRE(rdataset->methods != NULL);
91 if (rdataset->methods->disassociate != NULL) {
92 (rdataset->methods->disassociate)(rdataset DNS__DB_FLARG_PASS);
94 *rdataset = (dns_rdataset_t){
102 dns_rdataset_isassociated(dns_rdataset_t *rdataset) {
104 * Is 'rdataset' associated?
107 REQUIRE(DNS_RDATASET_VALID(rdataset));
109 if (rdataset->methods != NULL) {
117 question_cursor(dns_rdataset_t *rdataset ISC_ATTR_UNUSED) {
133 dns_rdataset_makequestion(dns_rdataset_t *rdataset, dns_rdataclass_t rdclass,
136 * Make 'rdataset' a valid, associated, question rdataset, with a
140 REQUIRE(DNS_RDATASET_VALID(rdataset));
141 REQUIRE(rdataset->methods == NULL);
143 rdataset->methods = &question_methods;
144 rdataset->rdclass = rdclass;
145 rdataset->type = type;
146 rdataset->attributes |= DNS_RDATASETATTR_QUESTION;
150 dns_rdataset_count(dns_rdataset_t *rdataset) {
152 * Return the number of records in 'rdataset'.
155 REQUIRE(DNS_RDATASET_VALID(rdataset));
156 REQUIRE(rdataset->methods != NULL);
157 REQUIRE(rdataset->methods->count != NULL);
159 return (rdataset->methods->count)(rdataset);
166 * Make 'target' refer to the same rdataset as 'source'.
178 dns_rdataset_first(dns_rdataset_t *rdataset) {
180 * Move the rdata cursor to the first rdata in the rdataset (if any).
183 REQUIRE(DNS_RDATASET_VALID(rdataset));
184 REQUIRE(rdataset->methods != NULL);
185 REQUIRE(rdataset->methods->first != NULL);
187 return (rdataset->methods->first)(rdataset);
191 dns_rdataset_next(dns_rdataset_t *rdataset) {
193 * Move the rdata cursor to the next rdata in the rdataset (if any).
196 REQUIRE(DNS_RDATASET_VALID(rdataset));
197 REQUIRE(rdataset->methods != NULL);
198 REQUIRE(rdataset->methods->next != NULL);
200 return (rdataset->methods->next)(rdataset);
204 dns_rdataset_current(dns_rdataset_t *rdataset, dns_rdata_t *rdata) {
209 REQUIRE(DNS_RDATASET_VALID(rdataset));
210 REQUIRE(rdataset->methods != NULL);
211 REQUIRE(rdataset->methods->current != NULL);
213 (rdataset->methods->current)(rdataset, rdata);
241 towiresorted(dns_rdataset_t *rdataset, const dns_name_t *owner_name,
263 * Convert 'rdataset' to wire format, compressing names as specified
267 REQUIRE(DNS_RDATASET_VALID(rdataset));
268 REQUIRE(rdataset->methods != NULL);
272 want_random = WANT_RANDOM(rdataset);
273 want_cyclic = WANT_CYCLIC(rdataset);
275 if ((rdataset->attributes & DNS_RDATASETATTR_QUESTION) != 0) {
278 result = dns_rdataset_first(rdataset);
280 } else if ((rdataset->attributes & DNS_RDATASETATTR_NEGATIVE) != 0) {
282 * This is a negative caching rdataset.
288 return dns_ncache_towire(rdataset, cctx, target, ncache_opts,
291 count = dns_rdataset_count(rdataset);
292 result = dns_rdataset_first(rdataset);
304 if (!question && count > 1 && rdataset->type != dns_rdatatype_rrsig) {
334 dns_rdataset_current(rdataset, &in[i]);
336 result = dns_rdataset_next(rdataset);
348 (rdataset->count != DNS_RDATASET_COUNT_UNDEFINED))
350 j = rdataset->count % count;
378 dns_rdataset_getownercase(rdataset, name);
404 isc_buffer_putuint16(target, rdataset->type);
405 isc_buffer_putuint16(target, rdataset->rdclass);
409 isc_buffer_putuint32(target, rdataset->ttl);
424 dns_rdataset_current(rdataset, &rdata);
446 result = dns_rdataset_next(rdataset);
481 dns_rdataset_towiresorted(dns_rdataset_t *rdataset,
486 return towiresorted(rdataset, owner_name, cctx, target, order,
491 dns_rdataset_towirepartial(dns_rdataset_t *rdataset,
497 return towiresorted(rdataset, owner_name, cctx, target, order,
502 dns_rdataset_towire(dns_rdataset_t *rdataset, const dns_name_t *owner_name,
505 return towiresorted(rdataset, owner_name, cctx, target, NULL, NULL,
510 dns_rdataset_additionaldata(dns_rdataset_t *rdataset,
517 * For each rdata in rdataset, call 'add' for each name and type in the
521 REQUIRE(DNS_RDATASET_VALID(rdataset));
522 REQUIRE((rdataset->attributes & DNS_RDATASETATTR_QUESTION) == 0);
524 result = dns_rdataset_first(rdataset);
530 dns_rdataset_current(rdataset, &rdata);
533 result = dns_rdataset_next(rdataset);
546 dns_rdataset_addnoqname(dns_rdataset_t *rdataset, dns_name_t *name) {
547 REQUIRE(DNS_RDATASET_VALID(rdataset));
548 REQUIRE(rdataset->methods != NULL);
549 if (rdataset->methods->addnoqname == NULL) {
552 return (rdataset->methods->addnoqname)(rdataset, name);
556 dns__rdataset_getnoqname(dns_rdataset_t *rdataset, dns_name_t *name,
559 REQUIRE(DNS_RDATASET_VALID(rdataset));
560 REQUIRE(rdataset->methods != NULL);
562 if (rdataset->methods->getnoqname == NULL) {
565 return (rdataset->methods->getnoqname)(rdataset, name, neg,
570 dns_rdataset_addclosest(dns_rdataset_t *rdataset, const dns_name_t *name) {
571 REQUIRE(DNS_RDATASET_VALID(rdataset));
572 REQUIRE(rdataset->methods != NULL);
573 if (rdataset->methods->addclosest == NULL) {
576 return (rdataset->methods->addclosest)(rdataset, name);
580 dns__rdataset_getclosest(dns_rdataset_t *rdataset, dns_name_t *name,
583 REQUIRE(DNS_RDATASET_VALID(rdataset));
584 REQUIRE(rdataset->methods != NULL);
586 if (rdataset->methods->getclosest == NULL) {
589 return (rdataset->methods->getclosest)(rdataset, name, neg,
594 dns_rdataset_settrust(dns_rdataset_t *rdataset, dns_trust_t trust) {
595 REQUIRE(DNS_RDATASET_VALID(rdataset));
596 REQUIRE(rdataset->methods != NULL);
598 if (rdataset->methods->settrust != NULL) {
599 (rdataset->methods->settrust)(rdataset, trust);
601 rdataset->trust = trust;
606 dns__rdataset_expire(dns_rdataset_t *rdataset DNS__DB_FLARG) {
607 REQUIRE(DNS_RDATASET_VALID(rdataset));
608 REQUIRE(rdataset->methods != NULL);
610 if (rdataset->methods->expire != NULL) {
611 (rdataset->methods->expire)(rdataset DNS__DB_FLARG_PASS);
616 dns_rdataset_clearprefetch(dns_rdataset_t *rdataset) {
617 REQUIRE(DNS_RDATASET_VALID(rdataset));
618 REQUIRE(rdataset->methods != NULL);
620 if (rdataset->methods->clearprefetch != NULL) {
621 (rdataset->methods->clearprefetch)(rdataset);
626 dns_rdataset_setownercase(dns_rdataset_t *rdataset, const dns_name_t *name) {
627 REQUIRE(DNS_RDATASET_VALID(rdataset));
628 REQUIRE(rdataset->methods != NULL);
630 if (rdataset->methods->setownercase != NULL &&
631 (rdataset->attributes & DNS_RDATASETATTR_KEEPCASE) == 0)
633 (rdataset->methods->setownercase)(rdataset, name);
638 dns_rdataset_getownercase(const dns_rdataset_t *rdataset, dns_name_t *name) {
639 REQUIRE(DNS_RDATASET_VALID(rdataset));
640 REQUIRE(rdataset->methods != NULL);
642 if (rdataset->methods->getownercase != NULL &&
643 (rdataset->attributes & DNS_RDATASETATTR_KEEPCASE) == 0)
645 (rdataset->methods->getownercase)(rdataset, name);
650 dns_rdataset_trimttl(dns_rdataset_t *rdataset, dns_rdataset_t *sigrdataset,
655 REQUIRE(DNS_RDATASET_VALID(rdataset));
671 ttl = ISC_MIN(ISC_MIN(rdataset->ttl, sigrdataset->ttl),
673 rdataset->ttl = ttl;