]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
rndc dumpdb -expired: print when RRsets expired
authorMatthijs Mekking <matthijs@isc.org>
Tue, 22 Sep 2020 14:09:44 +0000 (16:09 +0200)
committerMatthijs Mekking <matthijs@isc.org>
Fri, 25 Sep 2020 06:21:24 +0000 (08:21 +0200)
When calling 'rndc dumpdb -expired', also print when the RRset expired.

(cherry picked from commit d14c2d0d7362da2898452d22fcd9779e2f6f70b0)

bin/tests/system/serve-stale/tests.sh
lib/dns/masterdump.c
lib/dns/rbtdb.c

index e11876ad77aa62ea602d9b54a8a88725a1cc578c..5bd27f5fec3e99cd0d1d799a3ddf2f07629211ed 100755 (executable)
@@ -1246,7 +1246,7 @@ if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))
 # Check that expired records are not dumped.
 ret=0
-grep "; expired (awaiting cleanup)" ns5/named_dump.db.test$n && ret=1
+grep "; expired since .* (awaiting cleanup)" ns5/named_dump.db.test$n && ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))
 
@@ -1262,13 +1262,13 @@ status=$((status+ret))
 echo_i "check rndc dump expired data.example ($n)"
 ret=0
 awk '/; expired/ { x=$0; getline; print x, $0}' ns5/named_dump.db.test$n |
-    grep "; expired (awaiting cleanup) data\.example\..*A text record with a 2 second ttl" > /dev/null 2>&1 || ret=1
+    grep "; expired since .* (awaiting cleanup) data\.example\..*A text record with a 2 second ttl" > /dev/null 2>&1 || ret=1
 awk '/; expired/ { x=$0; getline; print x, $0}' ns5/named_dump.db.test$n |
-    grep "; expired (awaiting cleanup) nodata\.example\." > /dev/null 2>&1 || ret=1
+    grep "; expired since .* (awaiting cleanup) nodata\.example\." > /dev/null 2>&1 || ret=1
 awk '/; expired/ { x=$0; getline; print x, $0}' ns5/named_dump.db.test$n |
-    grep "; expired (awaiting cleanup) nxdomain\.example\." > /dev/null 2>&1 || ret=1
+    grep "; expired since .* (awaiting cleanup) nxdomain\.example\." > /dev/null 2>&1 || ret=1
 awk '/; expired/ { x=$0; getline; print x, $0}' ns5/named_dump.db.test$n |
-    grep "; expired (awaiting cleanup) othertype\.example\." > /dev/null 2>&1 || ret=1
+    grep "; expired since .* (awaiting cleanup) othertype\.example\." > /dev/null 2>&1 || ret=1
 # Also make sure the not expired data does not have an expired comment.
 awk '/; answer/ { x=$0; getline; print x, $0}' ns5/named_dump.db.test$n |
     grep "; answer longttl\.example.*A text record with a 600 second ttl" > /dev/null 2>&1 || ret=1
index 27da0d5cb67d32423b664843541c7bf5773fae57..edd4fcaaa00a817131dc7d0e0bae91d79bb7e5ff 100644 (file)
@@ -1114,7 +1114,15 @@ again:
                                        (rds->stale_ttl -
                                         ctx->serve_stale_ttl));
                        } else if (ANCIENT(rds)) {
-                               fprintf(f, "; expired (awaiting cleanup)\n");
+                               isc_buffer_t b;
+                               char buf[sizeof("YYYYMMDDHHMMSS")];
+                               memset(buf, 0, sizeof(buf));
+                               isc_buffer_init(&b, buf, sizeof(buf) - 1);
+                               dns_time64_totext((uint64_t)rds->stale_ttl, &b);
+                               fprintf(f,
+                                       "; expired since %s "
+                                       "(awaiting cleanup)\n",
+                                       buf);
                        }
                        result = dump_rdataset(mctx, name, rds, ctx, buffer, f);
                        if (result != ISC_R_SUCCESS) {
index cb714409bb4cc133555d85066ddcfa15aaff97c1..aca23c6f48cf5333817d60bd53c0ba39113d9f81 100644 (file)
@@ -3147,7 +3147,7 @@ bind_rdataset(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node, rdatasetheader_t *header,
                rdataset->ttl = 0;
        } else if (header->rdh_ttl < now) {
                rdataset->attributes |= DNS_RDATASETATTR_ANCIENT;
-               rdataset->stale_ttl = 0;
+               rdataset->stale_ttl = header->rdh_ttl;
                rdataset->ttl = 0;
        }