Add a test for not caching large number of RRsets

Send a recursive query for a large number of RRsets, which should
fail when using the default max-types-per-name setting of 100, but
succeed when the cap is disabled.
This commit is contained in:
Ondřej Surý 2024-05-28 15:23:24 +02:00 committed by Nicki Křížek
parent 52b3d86ef0
commit 86aa4674ab
No known key found for this signature in database
GPG key ID: 01623B9B652A20A7
5 changed files with 335 additions and 0 deletions

View file

@ -2513,3 +2513,259 @@ biganswer.big. 60 IN A 10.10.50.47
biganswer.big. 60 IN A 10.10.50.48
biganswer.big. 60 IN A 10.10.50.49
biganswer.big. 60 IN A 10.10.50.50
manytypes.big. IN TYPE65280 \# 0
manytypes.big. IN TYPE65281 \# 0
manytypes.big. IN TYPE65282 \# 0
manytypes.big. IN TYPE65283 \# 0
manytypes.big. IN TYPE65284 \# 0
manytypes.big. IN TYPE65285 \# 0
manytypes.big. IN TYPE65286 \# 0
manytypes.big. IN TYPE65287 \# 0
manytypes.big. IN TYPE65288 \# 0
manytypes.big. IN TYPE65289 \# 0
manytypes.big. IN TYPE65290 \# 0
manytypes.big. IN TYPE65291 \# 0
manytypes.big. IN TYPE65292 \# 0
manytypes.big. IN TYPE65293 \# 0
manytypes.big. IN TYPE65294 \# 0
manytypes.big. IN TYPE65295 \# 0
manytypes.big. IN TYPE65296 \# 0
manytypes.big. IN TYPE65297 \# 0
manytypes.big. IN TYPE65298 \# 0
manytypes.big. IN TYPE65299 \# 0
manytypes.big. IN TYPE65300 \# 0
manytypes.big. IN TYPE65301 \# 0
manytypes.big. IN TYPE65302 \# 0
manytypes.big. IN TYPE65303 \# 0
manytypes.big. IN TYPE65304 \# 0
manytypes.big. IN TYPE65305 \# 0
manytypes.big. IN TYPE65306 \# 0
manytypes.big. IN TYPE65307 \# 0
manytypes.big. IN TYPE65308 \# 0
manytypes.big. IN TYPE65309 \# 0
manytypes.big. IN TYPE65310 \# 0
manytypes.big. IN TYPE65311 \# 0
manytypes.big. IN TYPE65312 \# 0
manytypes.big. IN TYPE65313 \# 0
manytypes.big. IN TYPE65314 \# 0
manytypes.big. IN TYPE65315 \# 0
manytypes.big. IN TYPE65316 \# 0
manytypes.big. IN TYPE65317 \# 0
manytypes.big. IN TYPE65318 \# 0
manytypes.big. IN TYPE65319 \# 0
manytypes.big. IN TYPE65320 \# 0
manytypes.big. IN TYPE65321 \# 0
manytypes.big. IN TYPE65322 \# 0
manytypes.big. IN TYPE65323 \# 0
manytypes.big. IN TYPE65324 \# 0
manytypes.big. IN TYPE65325 \# 0
manytypes.big. IN TYPE65326 \# 0
manytypes.big. IN TYPE65327 \# 0
manytypes.big. IN TYPE65328 \# 0
manytypes.big. IN TYPE65329 \# 0
manytypes.big. IN TYPE65330 \# 0
manytypes.big. IN TYPE65331 \# 0
manytypes.big. IN TYPE65332 \# 0
manytypes.big. IN TYPE65333 \# 0
manytypes.big. IN TYPE65334 \# 0
manytypes.big. IN TYPE65335 \# 0
manytypes.big. IN TYPE65336 \# 0
manytypes.big. IN TYPE65337 \# 0
manytypes.big. IN TYPE65338 \# 0
manytypes.big. IN TYPE65339 \# 0
manytypes.big. IN TYPE65340 \# 0
manytypes.big. IN TYPE65341 \# 0
manytypes.big. IN TYPE65342 \# 0
manytypes.big. IN TYPE65343 \# 0
manytypes.big. IN TYPE65344 \# 0
manytypes.big. IN TYPE65345 \# 0
manytypes.big. IN TYPE65346 \# 0
manytypes.big. IN TYPE65347 \# 0
manytypes.big. IN TYPE65348 \# 0
manytypes.big. IN TYPE65349 \# 0
manytypes.big. IN TYPE65350 \# 0
manytypes.big. IN TYPE65351 \# 0
manytypes.big. IN TYPE65352 \# 0
manytypes.big. IN TYPE65353 \# 0
manytypes.big. IN TYPE65354 \# 0
manytypes.big. IN TYPE65355 \# 0
manytypes.big. IN TYPE65356 \# 0
manytypes.big. IN TYPE65357 \# 0
manytypes.big. IN TYPE65358 \# 0
manytypes.big. IN TYPE65359 \# 0
manytypes.big. IN TYPE65360 \# 0
manytypes.big. IN TYPE65361 \# 0
manytypes.big. IN TYPE65362 \# 0
manytypes.big. IN TYPE65363 \# 0
manytypes.big. IN TYPE65364 \# 0
manytypes.big. IN TYPE65365 \# 0
manytypes.big. IN TYPE65366 \# 0
manytypes.big. IN TYPE65367 \# 0
manytypes.big. IN TYPE65368 \# 0
manytypes.big. IN TYPE65369 \# 0
manytypes.big. IN TYPE65370 \# 0
manytypes.big. IN TYPE65371 \# 0
manytypes.big. IN TYPE65372 \# 0
manytypes.big. IN TYPE65373 \# 0
manytypes.big. IN TYPE65374 \# 0
manytypes.big. IN TYPE65375 \# 0
manytypes.big. IN TYPE65376 \# 0
manytypes.big. IN TYPE65377 \# 0
manytypes.big. IN TYPE65378 \# 0
manytypes.big. IN TYPE65379 \# 0
manytypes.big. IN TYPE65380 \# 0
manytypes.big. IN TYPE65381 \# 0
manytypes.big. IN TYPE65382 \# 0
manytypes.big. IN TYPE65383 \# 0
manytypes.big. IN TYPE65384 \# 0
manytypes.big. IN TYPE65385 \# 0
manytypes.big. IN TYPE65386 \# 0
manytypes.big. IN TYPE65387 \# 0
manytypes.big. IN TYPE65388 \# 0
manytypes.big. IN TYPE65389 \# 0
manytypes.big. IN TYPE65390 \# 0
manytypes.big. IN TYPE65391 \# 0
manytypes.big. IN TYPE65392 \# 0
manytypes.big. IN TYPE65393 \# 0
manytypes.big. IN TYPE65394 \# 0
manytypes.big. IN TYPE65395 \# 0
manytypes.big. IN TYPE65396 \# 0
manytypes.big. IN TYPE65397 \# 0
manytypes.big. IN TYPE65398 \# 0
manytypes.big. IN TYPE65399 \# 0
manytypes.big. IN TYPE65400 \# 0
manytypes.big. IN TYPE65401 \# 0
manytypes.big. IN TYPE65402 \# 0
manytypes.big. IN TYPE65403 \# 0
manytypes.big. IN TYPE65404 \# 0
manytypes.big. IN TYPE65405 \# 0
manytypes.big. IN TYPE65406 \# 0
manytypes.big. IN TYPE65407 \# 0
manytypes.big. IN TYPE65408 \# 0
manytypes.big. IN TYPE65409 \# 0
manytypes.big. IN TYPE65410 \# 0
manytypes.big. IN TYPE65411 \# 0
manytypes.big. IN TYPE65412 \# 0
manytypes.big. IN TYPE65413 \# 0
manytypes.big. IN TYPE65414 \# 0
manytypes.big. IN TYPE65415 \# 0
manytypes.big. IN TYPE65416 \# 0
manytypes.big. IN TYPE65417 \# 0
manytypes.big. IN TYPE65418 \# 0
manytypes.big. IN TYPE65419 \# 0
manytypes.big. IN TYPE65420 \# 0
manytypes.big. IN TYPE65421 \# 0
manytypes.big. IN TYPE65422 \# 0
manytypes.big. IN TYPE65423 \# 0
manytypes.big. IN TYPE65424 \# 0
manytypes.big. IN TYPE65425 \# 0
manytypes.big. IN TYPE65426 \# 0
manytypes.big. IN TYPE65427 \# 0
manytypes.big. IN TYPE65428 \# 0
manytypes.big. IN TYPE65429 \# 0
manytypes.big. IN TYPE65430 \# 0
manytypes.big. IN TYPE65431 \# 0
manytypes.big. IN TYPE65432 \# 0
manytypes.big. IN TYPE65433 \# 0
manytypes.big. IN TYPE65434 \# 0
manytypes.big. IN TYPE65435 \# 0
manytypes.big. IN TYPE65436 \# 0
manytypes.big. IN TYPE65437 \# 0
manytypes.big. IN TYPE65438 \# 0
manytypes.big. IN TYPE65439 \# 0
manytypes.big. IN TYPE65440 \# 0
manytypes.big. IN TYPE65441 \# 0
manytypes.big. IN TYPE65442 \# 0
manytypes.big. IN TYPE65443 \# 0
manytypes.big. IN TYPE65444 \# 0
manytypes.big. IN TYPE65445 \# 0
manytypes.big. IN TYPE65446 \# 0
manytypes.big. IN TYPE65447 \# 0
manytypes.big. IN TYPE65448 \# 0
manytypes.big. IN TYPE65449 \# 0
manytypes.big. IN TYPE65450 \# 0
manytypes.big. IN TYPE65451 \# 0
manytypes.big. IN TYPE65452 \# 0
manytypes.big. IN TYPE65453 \# 0
manytypes.big. IN TYPE65454 \# 0
manytypes.big. IN TYPE65455 \# 0
manytypes.big. IN TYPE65456 \# 0
manytypes.big. IN TYPE65457 \# 0
manytypes.big. IN TYPE65458 \# 0
manytypes.big. IN TYPE65459 \# 0
manytypes.big. IN TYPE65460 \# 0
manytypes.big. IN TYPE65461 \# 0
manytypes.big. IN TYPE65462 \# 0
manytypes.big. IN TYPE65463 \# 0
manytypes.big. IN TYPE65464 \# 0
manytypes.big. IN TYPE65465 \# 0
manytypes.big. IN TYPE65466 \# 0
manytypes.big. IN TYPE65467 \# 0
manytypes.big. IN TYPE65468 \# 0
manytypes.big. IN TYPE65469 \# 0
manytypes.big. IN TYPE65470 \# 0
manytypes.big. IN TYPE65471 \# 0
manytypes.big. IN TYPE65472 \# 0
manytypes.big. IN TYPE65473 \# 0
manytypes.big. IN TYPE65474 \# 0
manytypes.big. IN TYPE65475 \# 0
manytypes.big. IN TYPE65476 \# 0
manytypes.big. IN TYPE65477 \# 0
manytypes.big. IN TYPE65478 \# 0
manytypes.big. IN TYPE65479 \# 0
manytypes.big. IN TYPE65480 \# 0
manytypes.big. IN TYPE65481 \# 0
manytypes.big. IN TYPE65482 \# 0
manytypes.big. IN TYPE65483 \# 0
manytypes.big. IN TYPE65484 \# 0
manytypes.big. IN TYPE65485 \# 0
manytypes.big. IN TYPE65486 \# 0
manytypes.big. IN TYPE65487 \# 0
manytypes.big. IN TYPE65488 \# 0
manytypes.big. IN TYPE65489 \# 0
manytypes.big. IN TYPE65490 \# 0
manytypes.big. IN TYPE65491 \# 0
manytypes.big. IN TYPE65492 \# 0
manytypes.big. IN TYPE65493 \# 0
manytypes.big. IN TYPE65494 \# 0
manytypes.big. IN TYPE65495 \# 0
manytypes.big. IN TYPE65496 \# 0
manytypes.big. IN TYPE65497 \# 0
manytypes.big. IN TYPE65498 \# 0
manytypes.big. IN TYPE65499 \# 0
manytypes.big. IN TYPE65500 \# 0
manytypes.big. IN TYPE65501 \# 0
manytypes.big. IN TYPE65502 \# 0
manytypes.big. IN TYPE65503 \# 0
manytypes.big. IN TYPE65504 \# 0
manytypes.big. IN TYPE65505 \# 0
manytypes.big. IN TYPE65506 \# 0
manytypes.big. IN TYPE65507 \# 0
manytypes.big. IN TYPE65508 \# 0
manytypes.big. IN TYPE65509 \# 0
manytypes.big. IN TYPE65510 \# 0
manytypes.big. IN TYPE65511 \# 0
manytypes.big. IN TYPE65512 \# 0
manytypes.big. IN TYPE65513 \# 0
manytypes.big. IN TYPE65514 \# 0
manytypes.big. IN TYPE65515 \# 0
manytypes.big. IN TYPE65516 \# 0
manytypes.big. IN TYPE65517 \# 0
manytypes.big. IN TYPE65518 \# 0
manytypes.big. IN TYPE65519 \# 0
manytypes.big. IN TYPE65520 \# 0
manytypes.big. IN TYPE65521 \# 0
manytypes.big. IN TYPE65522 \# 0
manytypes.big. IN TYPE65523 \# 0
manytypes.big. IN TYPE65524 \# 0
manytypes.big. IN TYPE65525 \# 0
manytypes.big. IN TYPE65526 \# 0
manytypes.big. IN TYPE65527 \# 0
manytypes.big. IN TYPE65528 \# 0
manytypes.big. IN TYPE65529 \# 0
manytypes.big. IN TYPE65530 \# 0
manytypes.big. IN TYPE65531 \# 0
manytypes.big. IN TYPE65532 \# 0
manytypes.big. IN TYPE65533 \# 0
manytypes.big. IN TYPE65534 \# 0

View file

@ -23,6 +23,7 @@ options {
recursion no;
dnssec-validation no;
max-records-per-type 0;
max-types-per-name 0;
};
zone "." { type primary; file "root.db"; };

View file

@ -26,6 +26,7 @@ options {
recursion yes;
dnssec-validation yes;
max-records-per-type 0;
max-types-per-name 10;
};
trust-anchors { };

View file

@ -0,0 +1,43 @@
/*
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* SPDX-License-Identifier: MPL-2.0
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*/
options {
directory ".";
query-source address 10.53.0.3;
notify-source 10.53.0.3;
transfer-source 10.53.0.3;
port @PORT@;
pid-file "named.pid";
listen-on { 10.53.0.3; };
listen-on-v6 { none; };
servfail-ttl 0;
qname-minimization disabled;
max-recursion-depth 12;
recursion yes;
dnssec-validation yes;
max-records-per-type 0;
max-types-per-name 0;
};
trust-anchors { };
key rndc_key {
secret "1234abcd8765";
algorithm @DEFAULT_HMAC@;
};
controls {
inet 10.53.0.3 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
};
zone "." { type hint; file "hints.db"; };

View file

@ -233,5 +233,39 @@ grep 'status: NOERROR' dig.out.2.test$n >/dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=$((status + ret))
check_manytypes() (
i=$1
type=$2
expected=$3
$DIG $DIGOPTS @10.53.0.3 IN $type manytypes.big >dig.out.$i.$type.test$n || exit 1
grep 'status: '"${expected}"'' dig.out.$i.$type.test$n >/dev/null || exit 1
exit 0
)
n=$((n + 1))
echo_i "checking name that exceeds max-types-per-name ($n)"
ret=0
# Limited to 10 types - these should be fine
for ntype in $(seq 65280 65289); do
check_manytypes 1 "TYPE${ntype}" NOERROR || ret=1
done
# Everything on top of that should SERVFAIL
for ntype in $(seq 65290 65534); do
check_manytypes 1 "TYPE${ntype}" SERVFAIL || ret=1
done
# Lift the limit
ns3_reset ns3/named6.conf.in
for ntype in $(seq 65280 65534); do
check_manytypes 2 "TYPE${ntype}" NOERROR || ret=1
done
if [ $ret != 0 ]; then echo_i "failed"; fi
status=$((status + ret))
echo_i "exit status: $status"
[ $status -eq 0 ] || exit 1