return;
}
- cleanup_names(adb, now);
- cleanup_entries(adb, now);
dump_adb(adb, f, false, now);
rcu_read_unlock();
*/
dns_adbname_t *adbname = NULL;
cds_lfht_for_each_entry(adb->names_ht, &iter, adbname, ht_node) {
+ dns_adbname_ref(adbname);
LOCK(&adbname->lock);
+
+ /*
+ * Lazily expire stale name hooks and names while dumping.
+ */
+ maybe_expire_namehooks(adbname, now);
+ if (maybe_expire_name(adbname, now)) {
+ UNLOCK(&adbname->lock);
+ dns_adbname_detach(&adbname);
+ continue;
+ }
+
/*
* Dump the names
*/
print_find_list(f, adbname);
}
UNLOCK(&adbname->lock);
+ dns_adbname_detach(&adbname);
}
dns_adbentry_t *adbentry = NULL;
fprintf(f, ";\n; Unassociated entries\n;\n");
cds_lfht_for_each_entry(adb->entries_ht, &iter, adbentry, ht_node) {
+ dns_adbentry_ref(adbentry);
LOCK(&adbentry->lock);
+ if (maybe_expire_entry(adbentry, now)) {
+ UNLOCK(&adbentry->lock);
+ dns_adbentry_detach(&adbentry);
+ continue;
+ }
if (ISC_LIST_EMPTY(adbentry->nhs)) {
dump_entry(f, adb, adbentry, debug, now);
}
UNLOCK(&adbentry->lock);
+ dns_adbentry_detach(&adbentry);
}
}