CONF_IO_FRLD_ZONES },
{ C_ZSK_LIFETIME, YP_TINT, YP_VINT = { 0, UINT32_MAX, DAYS(30), YP_STIME },
CONF_IO_FRLD_ZONES },
+ { C_DELEG_ADT, YP_TBOOL, YP_VNONE },
{ C_DELETE_DELAY, YP_TINT, YP_VINT = { 0, UINT32_MAX, 0, YP_STIME } },
{ C_PROPAG_DELAY, YP_TINT, YP_VINT = { 0, INT32_MAX, HOURS(1), YP_STIME },
CONF_IO_FRLD_ZONES },
#define C_DBUS_INIT_DELAY "\x0F""dbus-init-delay"
#define C_DDNS_MASTER "\x0B""ddns-master"
#define C_DEFAULT_TTL "\x0B""default-ttl"
+#define C_DELEG_ADT "\x09""deleg-adt"
#define C_DENY "\x04""deny"
#define C_DNSKEY_MGMT "\x11""dnskey-management"
#define C_DNSKEY_SYNC "\x0B""dnskey-sync"
val = conf_id_get(conf, C_POLICY, C_KSK_LIFETIME, id);
policy->ksk_lifetime = conf_int(&val);
+ val = conf_id_get(conf, C_POLICY, C_DELEG_ADT, id);
+ policy->deleg_aware = conf_bool(&val);
+
val = conf_id_get(conf, C_POLICY, C_DELETE_DELAY, id);
policy->delete_delay = conf_int(&val);
resp.check_count(nsec_count, "NSEC", section="authority")
resp.check_count(0, "NS", section="authority")
+def check_adt(server, zone_name, expected):
+ resp = server.dig(zone_name, "DNSKEY")
+ adt_found = False
+ for dnskey_rr in resp.resp.answer[0].to_rdataset():
+ adt_found = adt_found or (dnskey_rr.flags & 2 != 0)
+ compare(adt_found, expected, "ADT bit%s set" % ("" if expected else " not"))
+
t = Test()
knot = t.server("knot")
knot.dnssec(parent).enable = True
t.start()
-knot.zone_wait(parent)
+parent_serial = knot.zone_wait(parent)
+
+check_adt(knot, parent[0].name, False)
+isset(knot.log_search("missing ADT"), "warning of missing ADT")
+
+knot.dnssec(parent).deleg_adt = True
+knot.gen_confile()
+knot.reload()
+t.sleep(2)
+check_adt(knot, parent[0].name, False)
+
+knot.ctl("zone-key-rollover %s zsk" % parent[0].name)
+parent_serial = knot.zone_wait(parent, parent_serial)
+check_adt(knot, parent[0].name, True)
for childs_running in [ False, True ]:
if childs_running and DELEGATIONS[0] not in knot.zones:
t.link(childs, knot)
knot.dnssec(childs).enable = True
+ knot.dnssec(childs).deleg_adt = True
knot.gen_confile()
knot.reload()
serials = knot.zones_wait(childs)
knot.ctl("zone-flush", wait=True)
-resp = knot.dig(parent[0].name, "DNSKEY")
-if resp.resp.answer[0].to_rdataset()[0].flags & 2 != 2:
- set_err("No ADT flag")
-resp = knot.dig(childs[0].name, "DNSKEY")
-if resp.resp.answer[0].to_rdataset()[0].flags & 2 != 0:
- set_err("Extra ADT flag")
-
t.end()