From: Michał Kępień Date: Tue, 13 Mar 2018 13:06:10 +0000 (+0100) Subject: Move find_zone_keys() to lib/dns/zone_p.h X-Git-Tag: v9.13.0~28^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d7143986b1c43884d89383ef7a2e1127e8324d33;p=thirdparty%2Fbind9.git Move find_zone_keys() to lib/dns/zone_p.h Rename find_zone_keys() to dns__zone_findkeys() and move it to lib/dns/zone_p.h, so that it can be used in unit tests. Add a comment describing the purpose of this function. --- diff --git a/lib/dns/win32/libdns.def.in b/lib/dns/win32/libdns.def.in index 6e6086ba6bc..6c7fa841469 100644 --- a/lib/dns/win32/libdns.def.in +++ b/lib/dns/win32/libdns.def.in @@ -7,6 +7,7 @@ EXPORTS dns__rbt_checkproperties dns__rbt_getheight dns__rbtnode_getdistance +dns__zone_findkeys dns__zone_loadpending dns__zone_updatesigs diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 9c9fc5bef8a..568e4727f7d 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -5973,10 +5973,16 @@ was_dumping(dns_zone_t *zone) { return (dumping); } -static isc_result_t -find_zone_keys(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, - isc_stdtime_t now, isc_mem_t *mctx, unsigned int maxkeys, - dst_key_t **keys, unsigned int *nkeys) +/*% + * Find up to 'maxkeys' DNSSEC keys used for signing version 'ver' of database + * 'db' for zone 'zone' in its key directory, then load these keys into 'keys'. + * Only load the public part of a given key if it is not active at timestamp + * 'now'. Store the number of keys found in 'nkeys'. + */ +isc_result_t +dns__zone_findkeys(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, + isc_stdtime_t now, isc_mem_t *mctx, unsigned int maxkeys, + dst_key_t **keys, unsigned int *nkeys) { isc_result_t result; dns_dbnode_t *node = NULL; @@ -6443,11 +6449,11 @@ zone_resigninc(dns_zone_t *zone) { isc_stdtime_get(&now); - result = find_zone_keys(zone, db, version, now, zone->mctx, - DNS_MAXZONEKEYS, zone_keys, &nkeys); + result = dns__zone_findkeys(zone, db, version, now, zone->mctx, + DNS_MAXZONEKEYS, zone_keys, &nkeys); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, - "zone_resigninc:find_zone_keys -> %s", + "zone_resigninc:dns__zone_findkeys -> %s", dns_result_totext(result)); goto failure; } @@ -7434,11 +7440,11 @@ zone_nsec3chain(dns_zone_t *zone) { isc_stdtime_get(&now); - result = find_zone_keys(zone, db, version, now, zone->mctx, - DNS_MAXZONEKEYS, zone_keys, &nkeys); + result = dns__zone_findkeys(zone, db, version, now, zone->mctx, + DNS_MAXZONEKEYS, zone_keys, &nkeys); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, - "zone_nsec3chain:find_zone_keys -> %s", + "zone_nsec3chain:dns__zone_findkeys -> %s", dns_result_totext(result)); goto failure; } @@ -8318,11 +8324,11 @@ zone_sign(dns_zone_t *zone) { isc_stdtime_get(&now); - result = find_zone_keys(zone, db, version, now, zone->mctx, - DNS_MAXZONEKEYS, zone_keys, &nkeys); + result = dns__zone_findkeys(zone, db, version, now, zone->mctx, + DNS_MAXZONEKEYS, zone_keys, &nkeys); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, - "zone_sign:find_zone_keys -> %s", + "zone_sign:dns__zone_findkeys -> %s", dns_result_totext(result)); goto failure; } @@ -17529,11 +17535,11 @@ sign_apex(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, unsigned int nkeys = 0, i; dns_difftuple_t *tuple; - result = find_zone_keys(zone, db, ver, now, zone->mctx, - DNS_MAXZONEKEYS, zone_keys, &nkeys); + result = dns__zone_findkeys(zone, db, ver, now, zone->mctx, + DNS_MAXZONEKEYS, zone_keys, &nkeys); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, - "sign_apex:find_zone_keys -> %s", + "sign_apex:dns__zone_findkeys -> %s", dns_result_totext(result)); return (result); } diff --git a/lib/dns/zone_p.h b/lib/dns/zone_p.h index bcb6e7edc67..d652e5ab9f9 100644 --- a/lib/dns/zone_p.h +++ b/lib/dns/zone_p.h @@ -26,6 +26,11 @@ typedef struct { isc_boolean_t offline; } dns__zonediff_t; +isc_result_t +dns__zone_findkeys(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, + isc_stdtime_t now, isc_mem_t *mctx, unsigned int maxkeys, + dst_key_t **keys, unsigned int *nkeys); + isc_result_t dns__zone_updatesigs(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *version, dst_key_t *zone_keys[], unsigned int nkeys,