]> 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>
Wed, 23 Sep 2020 14:09:26 +0000 (16:09 +0200)
When calling 'rndc dumpdb -expired', also print when the RRset expired.

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

index d4a88ab396f7a04a6ebd73a9995bc23fd7696511..b787c816abab2fe952bb35d67b167036ec556bc8 100755 (executable)
@@ -1245,7 +1245,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))
 
@@ -1261,13 +1261,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 e23bab0b392cb6a36b7551c52c5dad4a344d22ee..3867e96ddce014b50a5c4eb7d3a8b010950f7463 100644 (file)
@@ -3146,7 +3146,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;
        }