* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: dnssec-signzone.c,v 1.126.2.1 2001/01/09 22:31:34 bwelling Exp $ */
+/* $Id: dnssec-signzone.c,v 1.126.2.2 2001/01/12 23:44:02 gson Exp $ */
#include <config.h>
} else {
tuple = NULL;
result = dns_difftuple_create(mctx, DNS_DIFFOP_DEL,
- name, 0, &sigrdata,
- &tuple);
+ name, sigset.ttl,
+ &sigrdata, &tuple);
check_result(result, "dns_difftuple_create");
dns_diff_append(diff, &tuple);
INCSTAT(ndropped);
}
static void
-createnullkey(dns_db_t *db, dns_dbversion_t *version, dns_name_t *name) {
+createnullkey(dns_db_t *db, dns_dbversion_t *version, dns_name_t *name,
+ dns_ttl_t ttl)
+{
unsigned char keydata[4];
dns_rdata_t keyrdata = DNS_RDATA_INIT;
dns_rdata_key_t key;
dns_diff_init(mctx, &diff);
- result = dns_difftuple_create(mctx, DNS_DIFFOP_ADD, name, zonettl,
+ result = dns_difftuple_create(mctx, DNS_DIFFOP_ADD, name, ttl,
&keyrdata, &tuple);
check_result(result, "dns_difftuple_create");
*/
if (isdelegation) {
dns_rdataset_t keyset;
+ dns_ttl_t nullkeyttl;
childkey = haschildkey(name);
neednullkey = ISC_TRUE;
+ nullkeyttl = zonettl;
dns_rdataset_init(&keyset);
result = dns_db_findrdataset(gdb, node, gversion,
if (result == ISC_R_SUCCESS && childkey) {
char namestr[DNS_NAME_FORMATSIZE];
dns_name_format(name, namestr, sizeof namestr);
- fatal("%s has both a signedkey file and KEY "
- "records in the zone. Aborting.", namestr);
+ if (hasnullkey(&keyset)) {
+ fatal("%s has both a signedkey file and "
+ "null keys in the zone. Aborting.",
+ namestr);
+ }
+ vbprintf(2, "child key for %s found\n", namestr);
+ neednullkey = ISC_FALSE;
+ dns_rdataset_disassociate(&keyset);
}
else if (result == ISC_R_SUCCESS) {
if (hasnullkey(&keyset))
neednullkey = ISC_FALSE;
+ nullkeyttl = keyset.ttl;
dns_rdataset_disassociate(&keyset);
} else if (childkey) {
char namestr[DNS_NAME_FORMATSIZE];
}
if (neednullkey)
- createnullkey(gdb, gversion, name);
+ createnullkey(gdb, gversion, name, nullkeyttl);
}
/*
if (result != ISC_R_SUCCESS) {
char namestr[DNS_NAME_FORMATSIZE];
dns_name_format(name, namestr, sizeof namestr);
- fatal("failed to add SIGs at node %s", namestr);
+ fatal("failed to add SIGs at node '%s': %s",
+ namestr, isc_result_totext(result));
}
dns_diff_clear(&diff);
}