From efe6d8f0665b466052910e8efd4b031dc048f196 Mon Sep 17 00:00:00 2001 From: Bob Halley Date: Thu, 11 Mar 1999 06:00:22 +0000 Subject: [PATCH] add dns_db_allrdatasets --- lib/dns/db.c | 15 +++++++++++++++ lib/dns/include/dns/db.h | 39 +++++++++++++++++++++++++++++++++++---- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/lib/dns/db.c b/lib/dns/db.c index ecf7e5d0c4..53703e5e3c 100644 --- a/lib/dns/db.c +++ b/lib/dns/db.c @@ -327,6 +327,21 @@ dns_db_findrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, rdataset)); } +dns_result_t +dns_db_allrdatasets(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, + dns_rdatasetiter_t **iteratorp) +{ + /* + * Make '*iteratorp' an rdataset iteratator for all rdatasets at + * 'node' in version 'version' of 'db'. + */ + + REQUIRE(DNS_DB_VALID(db)); + REQUIRE(iteratorp != NULL && *iteratorp == NULL); + + return ((db->methods->allrdatasets)(db, node, version, iteratorp)); +} + dns_result_t dns_db_addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, dns_rdataset_t *rdataset) diff --git a/lib/dns/include/dns/db.h b/lib/dns/include/dns/db.h index 5a2857cc33..35509247cf 100644 --- a/lib/dns/include/dns/db.h +++ b/lib/dns/include/dns/db.h @@ -98,6 +98,9 @@ typedef struct dns_dbmethods { dns_dbversion_t *version, dns_rdatatype_t type, dns_rdataset_t *rdataset); + dns_result_t (*allrdatasets)(dns_db_t *db, dns_dbnode_t *node, + dns_dbversion_t *version, + dns_rdatasetiter_t **iteratorp); dns_result_t (*addrdataset)(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, dns_rdataset_t *rdataset); @@ -521,6 +524,38 @@ dns_db_findrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, * implementation used. */ +dns_result_t +dns_db_allrdatasets(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, + dns_rdatasetiter_t **iteratorp); +/* + * Make '*iteratorp' an rdataset iteratator for all rdatasets at 'node' in + * version 'version' of 'db'. + * + * Notes: + * + * If 'version' is NULL, then the current version will be used. + * + * Requires: + * + * 'db' is a valid database. + * + * 'node' is a valid node. + * + * iteratorp != NULL && *iteratorp == NULL + * + * Ensures: + * + * On success, '*iteratorp' is a valid rdataset iterator. + * + * Returns: + * + * DNS_R_SUCCESS + * DNS_R_NOTFOUND + * + * Other results are possible, depending upon the database + * implementation used. + */ + dns_result_t dns_db_addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, dns_rdataset_t *rdataset); @@ -592,10 +627,6 @@ dns_db_deleterdataset(dns_db_t *db, dns_dbnode_t *node, * implementation used. */ - /* - * XXX Need rdataset iterator for ANY queries. - */ - ISC_LANG_ENDDECLS #endif /* DNS_DB_H */