bind9/tests
Colin Vidal 1b5f757084 Introduce a delegation database
Add `dns_delegdb_t`, a qpmulti-based database enabling to lookup a
delegation set (`dns_delegset_t`) from a zonecut name (`dns_name_t`). A
delegation set object essentially contains an expiration time and a list
of delegation (`dns_deleg_t`). Finally, a delegation can be either:

- A list of IP addresses (`isc_netaddrlist_t`), for NS-based delegation
  providing glues or DELEG-based delegation using `server-ipv4=` or
  `server-ipv6=`;
- Or a list of nameserver names, for NS-based delegation without glues,
  or DELEG-based delegation using `server-name=`;
- Or a list of nameserver names, for DELEG-based delegation using
  `include-delegparam=`.

The delegation database API provides lookup by closest zonecut,
delegation and delegation set builders as well as insertion of those
newly built delegation set, dumping to a `FILE *`, conversion from an NS
rdataset to a delegation set, deletion of a specific zonecut or all the
sub-tree of a given zonecut.

A memory context is internally used inside the delegation database and
can be constraint to a maximum size. Once it gets close to its maximum
size and a new delegation set is inserted into the database, a
reclamation flow is run internally removing the least recently used
entries.

The delegation set and delegation objects are, once they been inserted
into the database, read-only object. Thus, the caller can use them
without concurrency or locking concerns, and must detached them once its
done with it.
2026-03-30 20:41:13 +02:00
..
bench Enforce NSEC3 record consistency 2026-02-24 14:57:22 +01:00
dns Introduce a delegation database 2026-03-30 20:41:13 +02:00
include/tests ISC_RUN_TEST_IMPL should use a static declaration 2026-01-28 07:26:04 +11:00
isc Add low contention stats counter 2026-03-26 10:19:25 +01:00
isccfg Support compilation with cmocka 2.0.0+ 2026-01-07 10:38:45 +01:00
libtest Set unit test group name in CMocka tests 2025-12-19 18:26:22 +00:00
ns Move ns_highwater_recursclients to highwater stats 2026-03-26 10:19:25 +01:00
.gitignore Move all the unit tests to /tests/<libname>/ 2022-05-28 14:53:02 -07:00
meson.build replace the build system with meson 2025-06-11 10:30:12 +03:00