Add a limit to the number of RR types for single name

Previously, the number of RR types for a single owner name was limited
only by the maximum number of the types (64k).  As the data structure
that holds the RR types for the database node is just a linked list, and
there are places where we just walk through the whole list (again and
again), adding a large number of RR types for a single owner named with
would slow down processing of such name (database node).

Add a configurable limit to cap the number of the RR types for a single
owner.  This is enforced at the database (rbtdb, qpzone, qpcache) level
and configured with new max-types-per-name configuration option that
can be configured globally, per-view and per-zone.

(cherry picked from commit 00d16211d6368b99f070c1182d8c76b3798ca1db)
This commit is contained in:
Ondřej Surý
2024-05-25 11:46:56 +02:00
committed by Nicki Křížek
parent 197b08009d
commit 39d3e2a8ec
25 changed files with 163 additions and 6 deletions

View File

@@ -612,7 +612,8 @@ static dns_dbmethods_t sampledb_methods = {
NULL, /* setservestalerefresh */
NULL, /* getservestalerefresh */
NULL, /* setgluecachestats */
NULL /* setmaxrrperset */
NULL, /* setmaxrrperset */
NULL /* setmaxtypepername */
};
/* Auxiliary driver functions. */