Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP5:GA
bind
bind-9.16-CVE-2024-1737.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bind-9.16-CVE-2024-1737.patch of Package bind
commit 10a3ad10f5c237106826e9b1f1916269478d5655 Author: Nicki Křížek <nicki@isc.org> Date: Wed Jul 24 10:09:58 2024 +0000 [9.16] [CVE-2024-1737] Previously, the number of RRs in the RRSets were internally unlimited. As the data structure that holds the RRs is just a linked list, and there are places where we just walk through all of the RRs, adding an RRSet with huge number of RRs inside would slow down processing of said RRSets. Add a configurable limit to cap the number of the RRs in a single RRSet. This is enforced at the database (rbtdb, qpzone, qpcache) level and configured with new max-records-per-rrset configuration option that can be configured globally, per-view and per-zone. (cherry picked from commit c5c4d00c38530390c9e1ae4c98b65fbbadfe9e5e) Not a backport, closes https://gitlab.isc.org/isc-projects/bind9/-/issues/3405 for 9.16 Merge branch '3405-limit-the-number-of-resource-records-in-rrset-9.16' into 'bind-9.16' See merge request isc-projects/bind9!9170 [9.16][CVE-2024-1737 (part 2)] Be smarter about refusing to add many RR types to the database Add HTTPS, SVCB, SRV, PTR, NAPTR, DNSKEY and TXT records to the list of the priority types that are put at the beginning of the slabheader list for faster access and to avoid eviction when there are more types than the max-types-per-name limit. (cherry picked from commit b27c6bcce894786a8e082eafd59eccbf6f2731cb) --- Backport of MR https://gitlab.isc.org/isc-private/bind9/-/merge_requests/712 Related https://gitlab.isc.org/isc-projects/bind9/-/issues/3405 Merge branch '3405-limit-the-number-of-resource-records-in-rrset-nxdomain-9.16' into 'bind-9.16' See merge request isc-projects/bind9!9172 [9.16] chg: usr: Backport max-records-per-type to BIND 9.16 This aligns the fix for large number of RRs in RRSet with 9.18 and up by backporting to `max-records-per-type` configuration option to BIND 9.16. Merge branch 'ondrej/max-records-per-type-backport-9.16' into 'bind-9.16' See merge request isc-projects/bind9!9177 [9.16] chg: usr: Backport max-types-per-name to BIND 9.16 This aligns the fix for large number of RRs in RRSet with 9.18 and up by backporting to `max-records-per-type` configuration option to BIND 9.16. Merge branch 'ondrej/max-types-per-rr-backport-9.16' into 'bind-9.16' See merge request isc-projects/bind9!9178 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 06b17c3038..b626bb3eed 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -442,14 +442,10 @@ misc: <<: *precheck_job script: - sh util/check-ans-prereq.sh - - sh util/checklibs.sh > checklibs.out - xmllint --noout --nonet `git ls-files '*.xml' '*.docbook'` - - sh util/check-win32util-configure - sh util/check-categories.sh - sh util/xmllint-html.sh artifacts: - paths: - - checklibs.out when: on_failure changes: @@ -733,7 +729,7 @@ gcc:oraclelinux9:amd64: variables: CC: gcc CFLAGS: "${CFLAGS_COMMON}" - EXTRA_CONFIGURE: "--with-libidn2 --disable-developer" + EXTRA_CONFIGURE: "--with-libidn2" <<: *oraclelinux_9_amd64_image <<: *build_job diff --git a/bin/named/config.c b/bin/named/config.c index 522798a882..ec48840e4b 100644 --- a/bin/named/config.c +++ b/bin/named/config.c @@ -226,8 +226,10 @@ options {\n\ ixfr-from-differences false;\n\ max-journal-size default;\n\ max-records 0;\n\ + max-records-per-type 100;\n\ max-refresh-time 2419200; /* 4 weeks */\n\ max-retry-time 1209600; /* 2 weeks */\n\ + max-types-per-name 100;\n\ max-transfer-idle-in 60;\n\ max-transfer-idle-out 60;\n\ max-transfer-time-in 120;\n\ diff --git a/bin/named/server.c b/bin/named/server.c index 098e21d0ac..c68b8d1a04 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -5452,6 +5452,24 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config, dns_resolver_setclientsperquery(view->resolver, cfg_obj_asuint32(obj), max_clients_per_query); + /* + * This is used for the cache and also as a default value + * for zone databases. + */ + obj = NULL; + result = named_config_get(maps, "max-records-per-type", &obj); + INSIST(result == ISC_R_SUCCESS); + dns_view_setmaxrrperset(view, cfg_obj_asuint32(obj)); + + /* + * This is used for the cache and also as a default value + * for zone databases. + */ + obj = NULL; + result = named_config_get(maps, "max-types-per-name", &obj); + INSIST(result == ISC_R_SUCCESS); + dns_view_setmaxtypepername(view, cfg_obj_asuint32(obj)); + obj = NULL; result = named_config_get(maps, "max-recursion-depth", &obj); INSIST(result == ISC_R_SUCCESS); diff --git a/bin/named/zoneconf.c b/bin/named/zoneconf.c index 2e614aa6db..821e6a1e45 100644 --- a/bin/named/zoneconf.c +++ b/bin/named/zoneconf.c @@ -1072,6 +1072,22 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig, dns_zone_setmaxrecords(zone, 0); } + obj = NULL; + result = named_config_get(maps, "max-records-per-type", &obj); + INSIST(result == ISC_R_SUCCESS && obj != NULL); + dns_zone_setmaxrrperset(mayberaw, cfg_obj_asuint32(obj)); + if (zone != mayberaw) { + dns_zone_setmaxrrperset(zone, 0); + } + + obj = NULL; + result = named_config_get(maps, "max-types-per-name", &obj); + INSIST(result == ISC_R_SUCCESS && obj != NULL); + dns_zone_setmaxtypepername(mayberaw, cfg_obj_asuint32(obj)); + if (zone != mayberaw) { + dns_zone_setmaxtypepername(zone, 0); + } + if (raw != NULL && filename != NULL) { #define SIGNED ".signed" size_t signedlen = strlen(filename) + sizeof(SIGNED); diff --git a/bin/tests/system/dyndb/driver/db.c b/bin/tests/system/dyndb/driver/db.c index 5f01185dd8..398589a521 100644 --- a/bin/tests/system/dyndb/driver/db.c +++ b/bin/tests/system/dyndb/driver/db.c @@ -622,7 +622,9 @@ static dns_dbmethods_t sampledb_methods = { NULL, /* setservestalerefresh */ NULL, /* getservestalerefresh */ NULL, /* setgluecachestats */ - NULL /* adjusthashsize */ + NULL, /* adjusthashsize */ + NULL, /* setmaxrrperset */ + NULL /* setmaxtypepername */ }; /* Auxiliary driver functions. */ diff --git a/bin/tests/system/limits/ns1/named.conf.in b/bin/tests/system/limits/ns1/named.conf.in index 118fdbd9b1..cf0aa783b1 100644 --- a/bin/tests/system/limits/ns1/named.conf.in +++ b/bin/tests/system/limits/ns1/named.conf.in @@ -22,6 +22,7 @@ options { recursion no; notify yes; minimal-responses no; + max-records-per-type 0; }; zone "." { diff --git a/bin/tests/system/masterformat/clean.sh b/bin/tests/system/masterformat/clean.sh index c53c7ab4bc..2b93c2bbdb 100755 --- a/bin/tests/system/masterformat/clean.sh +++ b/bin/tests/system/masterformat/clean.sh @@ -16,6 +16,13 @@ rm -f ./ns1/example.db.compat rm -f ./ns1/example.db.serial.raw rm -f ./ns1/large.db ./ns1/large.db.raw rm -f ./ns1/example.db.map ./ns1/signed.db.map +rm -f ./ns1/huge.db ./ns1/huge.db.raw +rm -f ./ns1/uber.db ./ns1/uber.db.raw +rm -f ./ns1/255types.db ./ns1/255types.db.raw +rm -f ./ns1/on-limit.db ./ns1/on-limit.db.raw +rm -f ./ns1/over-limit.db ./ns1/over-limit.db.raw +rm -f ./ns1/under-limit.db ./ns1/under-limit.db.raw +rm -f ./ns2/under-limit.bk rm -f ./ns1/session.key rm -f ./dig.out.* rm -f ./dig.out diff --git a/bin/tests/system/masterformat/ns1/compile.sh b/bin/tests/system/masterformat/ns1/compile.sh index ad24bb3201..7eee7cc804 100755 --- a/bin/tests/system/masterformat/ns1/compile.sh +++ b/bin/tests/system/masterformat/ns1/compile.sh @@ -26,9 +26,12 @@ $CHECKZONE -D -F raw=0 -o example.db.compat example-compat \ example.db >/dev/null 2>&1 $CHECKZONE -D -F raw -L 3333 -o example.db.serial.raw example \ example.db >/dev/null 2>&1 -$CHECKZONE -D -F raw -o large.db.raw large large.db >/dev/null 2>&1 +$CHECKZONE -D -F raw -o under-limit.db.raw under-limit under-limit.db >/dev/null 2>&1 $CHECKZONE -D -F map -o example.db.map example-map \ example.db >/dev/null 2>&1 +$CHECKZONE -D -F raw -o on-limit.db.raw on-limit on-limit.db >/dev/null 2>&1 +$CHECKZONE -D -F raw -o over-limit.db.raw over-limit over-limit.db >/dev/null 2>&1 +$CHECKZONE -D -F raw -o 255types.db.raw 255types 255types.db >/dev/null 2>&1 $KEYGEN -q -a "$DEFAULT_ALGORITHM" -b "$DEFAULT_BITS" -f KSK signed >/dev/null 2>&1 $KEYGEN -q -a "$DEFAULT_ALGORITHM" -b "$DEFAULT_BITS" signed >/dev/null 2>&1 diff --git a/bin/tests/system/masterformat/ns1/large.db.in b/bin/tests/system/masterformat/ns1/empty.db.in similarity index 100% rename from bin/tests/system/masterformat/ns1/large.db.in rename to bin/tests/system/masterformat/ns1/empty.db.in diff --git a/bin/tests/system/masterformat/ns1/named.conf.in b/bin/tests/system/masterformat/ns1/named.conf.in index cc95655691..85642a9af6 100644 --- a/bin/tests/system/masterformat/ns1/named.conf.in +++ b/bin/tests/system/masterformat/ns1/named.conf.in @@ -22,6 +22,8 @@ options { notify no; session-keyfile "session.key"; servfail-ttl 0; + max-records-per-type 2050; + max-types-per-name 500; }; key rndc_key { @@ -70,9 +72,31 @@ zone "transfer4" { }; -zone "large" { +zone "under-limit" { type primary; - file "large.db.raw"; + file "under-limit.db.raw"; + masterfile-format raw; + allow-transfer { any; }; +}; + +zone "on-limit" { + type primary; + file "on-limit.db.raw"; + masterfile-format raw; + allow-transfer { any; }; +}; + + +zone "over-limit" { + type primary; + file "over-limit.db.raw"; + masterfile-format raw; + allow-transfer { any; }; +}; + +zone "255types" { + type primary; + file "255types.db.raw"; masterfile-format raw; allow-transfer { any; }; }; diff --git a/bin/tests/system/masterformat/ns2/named.conf.in b/bin/tests/system/masterformat/ns2/named.conf.in index c0f2987318..d4b2bb7b54 100644 --- a/bin/tests/system/masterformat/ns2/named.conf.in +++ b/bin/tests/system/masterformat/ns2/named.conf.in @@ -21,6 +21,8 @@ options { recursion no; notify no; servfail-ttl 0; + max-records-per-type 2000; + max-types-per-name 200; }; zone "example" { @@ -55,9 +57,23 @@ zone "transfer4" { file "transfer.db.full"; }; -zone "large" { +zone "under-limit" { type secondary; primaries { 10.53.0.1; }; masterfile-format raw; - file "large.bk"; + file "under-limit.bk"; +}; + +zone "on-limit" { + type secondary; + primaries { 10.53.0.1; }; + masterfile-format raw; + file "on-limit.bk"; +}; + +zone "255types" { + type secondary; + primaries { 10.53.0.1; }; + masterfile-format raw; + file "255types.bk"; }; diff --git a/bin/tests/system/masterformat/setup.sh b/bin/tests/system/masterformat/setup.sh index f3042428bd..223ca0bd47 100755 --- a/bin/tests/system/masterformat/setup.sh +++ b/bin/tests/system/masterformat/setup.sh @@ -22,10 +22,34 @@ copy_setports ns3/named.conf.in ns3/named.conf cp ns1/example.db ns2/ cp ns2/formerly-text.db.in ns2/formerly-text.db -cp ns1/large.db.in ns1/large.db +cp ns1/empty.db.in ns1/under-limit.db + +# counts are set with respect to these limits in named.conf: +# max-records-per-type 2050; +# max-types-per-name 500; +awk 'END { + for (i = 0; i < 500; i++ ) { print "500-txt TXT", i; } + for (i = 0; i < 1000; i++ ) { print "1000-txt TXT", i; } + for (i = 0; i < 2000; i++ ) { print "2000-txt TXT", i; } +}' </dev/null >>ns1/under-limit.db +cp ns1/empty.db.in ns1/on-limit.db +awk 'END { + for (i = 0; i < 500; i++ ) { print "500-txt TXT", i; } + for (i = 0; i < 1000; i++ ) { print "1000-txt TXT", i; } + for (i = 0; i < 2000; i++ ) { print "2000-txt TXT", i; } + for (i = 0; i < 2050; i++ ) { print "2050-txt TXT", i; } +}' </dev/null >>ns1/on-limit.db +cp ns1/empty.db.in ns1/over-limit.db awk 'END { - for (i = 0; i < 512; i++ ) { print "a TXT", i; } - for (i = 0; i < 1024; i++ ) { print "b TXT", i; } - for (i = 0; i < 2000; i++ ) { print "c TXT", i; } -}' </dev/null >>ns1/large.db + for (i = 0; i < 500; i++ ) { print "500-txt TXT", i; } + for (i = 0; i < 1000; i++ ) { print "1000-txt TXT", i; } + for (i = 0; i < 2000; i++ ) { print "2000-txt TXT", i; } + for (i = 0; i < 2050; i++ ) { print "2050-txt TXT", i; } + for (i = 0; i < 2100; i++ ) { print "2100-txt TXT", i; } +}' </dev/null >>ns1/over-limit.db +cp ns1/empty.db.in ns1/255types.db +for ntype in $(seq 65280 65534); do + echo "m TYPE${ntype} \# 0" +done >>ns1/255types.db +echo "m TXT bunny" >>ns1/255types.db cd ns1 && $SHELL compile.sh diff --git a/bin/tests/system/masterformat/tests.sh b/bin/tests/system/masterformat/tests.sh index 3a4eb3e116..029bf6251c 100755 --- a/bin/tests/system/masterformat/tests.sh +++ b/bin/tests/system/masterformat/tests.sh @@ -145,7 +145,7 @@ n=$((n + 1)) status=$((status + ret)) echo_i "waiting for transfers to complete" -for i in 0 1 2 3 4 5 6 7 8 9; do +for _attempt in 0 1 2 3 4 5 6 7 8 9; do test -f ns2/transfer.db.raw -a -f ns2/transfer.db.txt && break sleep 1 done @@ -173,7 +173,7 @@ n=$((n + 1)) status=$((status + ret)) echo_i "checking that secondary formerly in text format is now raw ($n)" -for i in 0 1 2 3 4 5 6 7 8 9; do +for _attempt in 0 1 2 3 4 5 6 7 8 9; do ret=0 israw ns2/formerly-text.db >/dev/null 2>&1 || ret=1 [ "$(rawversion ns2/formerly-text.db)" -eq 1 ] || ret=1 @@ -184,12 +184,12 @@ n=$((n + 1)) [ $ret -eq 0 ] || echo_i "failed" status=$((status + ret)) -echo_i "checking that large rdatasets loaded ($n)" -for i in 0 1 2 3 4 5 6 7 8 9; do +echo_i "checking that under-limit rdatasets loaded ($n)" +for _attempt in 0 1 2 3 4 5 6 7 8 9; do ret=0 - for a in a b c; do - $DIG +tcp txt "${a}.large" @10.53.0.2 -p "${PORT}" >"dig.out.ns2.test$n" - grep "status: NOERROR" "dig.out.ns2.test$n" >/dev/null || ret=1 + for rrcount in 500-txt 1000-txt 2000-txt; do + $DIG +tcp txt "${rrcount}.under-limit" @10.53.0.1 -p "${PORT}" >"dig.out.ns1.$rrcount.test$n" + grep "status: NOERROR" "dig.out.ns1.$rrcount.test$n" >/dev/null || ret=1 done [ $ret -eq 0 ] && break sleep 1 @@ -198,6 +198,85 @@ n=$((n + 1)) [ $ret -eq 0 ] || echo_i "failed" status=$((status + ret)) +echo_i "checking that under-limit rdatasets transfered ($n)" +for _attempt in 0 1 2 3 4 5 6 7 8 9; do + ret=0 + for rrcount in 500-txt 1000-txt 2000-txt; do + $DIG +tcp txt "${rrcount}.under-limit" @10.53.0.2 -p "${PORT}" >"dig.out.ns2.$rrcount.test$n" + grep "status: NOERROR" "dig.out.ns2.$rrcount.test$n" >/dev/null || ret=1 + done + [ $ret -eq 0 ] && break + sleep 1 +done +n=$((n + 1)) +[ $ret -eq 0 ] || echo_i "failed" +status=$((status + ret)) + +echo_i "checking that on-limit rdatasets loaded ($n)" +for _attempt in 0 1 2 3 4 5 6 7 8 9; do + ret=0 + for rrcount in 500-txt 1000-txt 2000-txt 2050-txt; do + $DIG +tcp txt "${rrcount}.on-limit" @10.53.0.1 -p "${PORT}" >"dig.out.ns1.$rrcount.test$n" + grep "status: NOERROR" "dig.out.ns1.$rrcount.test$n" >/dev/null || ret=1 + done + [ $ret -eq 0 ] && break + sleep 1 +done +n=$((n + 1)) +[ $ret -eq 0 ] || echo_i "failed" +status=$((status + ret)) + +echo_i "checking that on-limit rdatasets not transfered ($n)" +for _attempt in 0 1 2 3 4 5 6 7 8 9; do + ret=0 + for rrcount in 500-txt 1000-txt 2000-txt 2050-txt; do + $DIG +tcp txt "${rrcount}.on-limit" @10.53.0.2 -p "${PORT}" >"dig.out.ns2.$rrcount.test$n" + grep "status: SERVFAIL" "dig.out.ns2.$rrcount.test$n" >/dev/null || ret=1 + done + [ $ret -eq 0 ] && break + sleep 1 +done +n=$((n + 1)) +[ $ret -eq 0 ] || echo_i "failed" +status=$((status + ret)) + +echo_i "checking that over-limit rdatasets not loaded ($n)" +for _attempt in 0 1 2 3 4 5 6 7 8 9; do + ret=0 + for rrcount in 500-txt 1000-txt 2000-txt 2050-txt 2100-txt; do + $DIG +tcp txt "${rrcount}.over-limit" @10.53.0.1 -p "${PORT}" >"dig.out.ns1.$rrcount.test$n" + grep "status: SERVFAIL" "dig.out.ns1.$rrcount.test$n" >/dev/null || ret=1 + done + [ $ret -eq 0 ] && break + sleep 1 +done +n=$((n + 1)) +[ $ret -eq 0 ] || echo_i "failed" +status=$((status + ret)) + +echo_i "checking that 255 types are loaded ($n)" +for _attempt in 0 1 2 3 4 5 6 7 8 9; do + ret=0 + $DIG +tcp TXT "m.255types" @10.53.0.1 -p "${PORT}" >"dig.out.ns1.test$n" + grep "status: NOERROR" "dig.out.ns1.test$n" >/dev/null || ret=1 + [ $ret -eq 0 ] && break + sleep 1 +done +n=$((n + 1)) +[ $ret -eq 0 ] || echo_i "failed" +status=$((status + ret)) + +echo_i "checking that 255 types types are not transfered ($n)" +for _attempt in 0 1 2 3 4 5 6 7 8 9; do + $DIG +tcp TXT "m.255types" @10.53.0.2 -p "${PORT}" >"dig.out.ns2.test$n" + grep "status: SERVFAIL" "dig.out.ns2.test$n" >/dev/null || ret=1 + [ $ret -eq 0 ] && break + sleep 1 +done +n=$((n + 1)) +[ $ret -eq 0 ] || echo_i "failed" +status=$((status + ret)) + echo_i "checking format transitions: text->raw->map->text ($n)" ret=0 $CHECKZONE -D -f text -F text -o baseline.txt example.nil ns1/example.db >/dev/null @@ -262,7 +341,7 @@ stop_server --use-rndc --port ${CONTROLPORT} ns3 rm ns3/*.jnl restart #shellcheck disable=SC2034 -for i in 0 1 2 3 4 5 6 7 8 9; do +for _attempt in 0 1 2 3 4 5 6 7 8 9; do lret=0 dig_with_opts +comm @10.53.0.3 moretext.dynamic txt >"dig.out.dynamic2.ns3.test$n" grep "more text" "dig.out.dynamic2.ns3.test$n" >/dev/null 2>&1 || lret=1 diff --git a/bin/tests/system/reclimit/clean.sh b/bin/tests/system/reclimit/clean.sh index 0a92f90c3e..b63dc6141c 100644 --- a/bin/tests/system/reclimit/clean.sh +++ b/bin/tests/system/reclimit/clean.sh @@ -11,12 +11,16 @@ # See the COPYRIGHT file distributed with this work for additional # information regarding copyright ownership. -rm -f dig.out* -rm -f ans?/ans.run -rm -f ans2/ans.limit -rm -f ans4/ans.limit -rm -f ns?/named.memstats -rm -f ns?/named.run -rm -f ns*/named.conf -rm -f ns*/named.lock -rm -f ns*/managed-keys.bind* +rm -f ./dig.out* +rm -f ./dsset-signed. +rm -f ./ans?/ans.run +rm -f ./ans2/ans.limit +rm -f ./ans4/ans.limit +rm -f ./ns?/named.memstats +rm -f ./ns?/named.run +rm -f ./ns*/named.conf +rm -f ./ns*/named.lock +rm -f ./ns*/managed-keys.bind* +rm -f ./ns*/signed.db* +rm -f ./ns*/*.db.signed +rm -f ./ns*/Ksigned.*.key ./ns*/Ksigned.*.private diff --git a/bin/tests/system/reclimit/ns1/big.db b/bin/tests/system/reclimit/ns1/big.db new file mode 100644 index 0000000000..cefe8458f7 --- /dev/null +++ b/bin/tests/system/reclimit/ns1/big.db @@ -0,0 +1,2774 @@ +; 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. + +$TTL 60 + +big. IN SOA ns.big. hostmaster.ns.big. 1 0 0 0 60 +big. IN NS ns.big. +ns.big. IN A 10.53.0.1 + +biganswer.big. IN A 10.10.1.1 +biganswer.big. IN A 10.10.1.2 +biganswer.big. IN A 10.10.1.3 +biganswer.big. IN A 10.10.1.4 +biganswer.big. IN A 10.10.1.5 +biganswer.big. IN A 10.10.1.6 +biganswer.big. IN A 10.10.1.7 +biganswer.big. IN A 10.10.1.8 +biganswer.big. IN A 10.10.1.9 +biganswer.big. IN A 10.10.1.10 +biganswer.big. IN A 10.10.1.11 +biganswer.big. IN A 10.10.1.12 +biganswer.big. IN A 10.10.1.13 +biganswer.big. IN A 10.10.1.14 +biganswer.big. IN A 10.10.1.15 +biganswer.big. IN A 10.10.1.16 +biganswer.big. IN A 10.10.1.17 +biganswer.big. IN A 10.10.1.18 +biganswer.big. IN A 10.10.1.19 +biganswer.big. IN A 10.10.1.20 +biganswer.big. IN A 10.10.1.21 +biganswer.big. IN A 10.10.1.22 +biganswer.big. IN A 10.10.1.23 +biganswer.big. IN A 10.10.1.24 +biganswer.big. IN A 10.10.1.25 +biganswer.big. IN A 10.10.1.26 +biganswer.big. IN A 10.10.1.27 +biganswer.big. IN A 10.10.1.28 +biganswer.big. IN A 10.10.1.29 +biganswer.big. IN A 10.10.1.30 +biganswer.big. IN A 10.10.1.31 +biganswer.big. IN A 10.10.1.32 +biganswer.big. IN A 10.10.1.33 +biganswer.big. IN A 10.10.1.34 +biganswer.big. IN A 10.10.1.35 +biganswer.big. IN A 10.10.1.36 +biganswer.big. IN A 10.10.1.37 +biganswer.big. IN A 10.10.1.38 +biganswer.big. IN A 10.10.1.39 +biganswer.big. IN A 10.10.1.40 +biganswer.big. IN A 10.10.1.41 +biganswer.big. IN A 10.10.1.42 +biganswer.big. IN A 10.10.1.43 +biganswer.big. IN A 10.10.1.44 +biganswer.big. IN A 10.10.1.45 +biganswer.big. IN A 10.10.1.46 +biganswer.big. IN A 10.10.1.47 +biganswer.big. IN A 10.10.1.48 +biganswer.big. IN A 10.10.1.49 +biganswer.big. IN A 10.10.1.50 +biganswer.big. IN A 10.10.2.1 +biganswer.big. IN A 10.10.2.2 +biganswer.big. IN A 10.10.2.3 +biganswer.big. IN A 10.10.2.4 +biganswer.big. IN A 10.10.2.5 +biganswer.big. IN A 10.10.2.6 +biganswer.big. IN A 10.10.2.7 +biganswer.big. IN A 10.10.2.8 +biganswer.big. IN A 10.10.2.9 +biganswer.big. IN A 10.10.2.10 +biganswer.big. IN A 10.10.2.11 +biganswer.big. IN A 10.10.2.12 +biganswer.big. IN A 10.10.2.13 +biganswer.big. IN A 10.10.2.14 +biganswer.big. IN A 10.10.2.15 +biganswer.big. IN A 10.10.2.16 +biganswer.big. IN A 10.10.2.17 +biganswer.big. IN A 10.10.2.18 +biganswer.big. IN A 10.10.2.19 +biganswer.big. IN A 10.10.2.20 +biganswer.big. IN A 10.10.2.21 +biganswer.big. IN A 10.10.2.22 +biganswer.big. IN A 10.10.2.23 +biganswer.big. IN A 10.10.2.24 +biganswer.big. IN A 10.10.2.25 +biganswer.big. IN A 10.10.2.26 +biganswer.big. IN A 10.10.2.27 +biganswer.big. IN A 10.10.2.28 +biganswer.big. IN A 10.10.2.29 +biganswer.big. IN A 10.10.2.30 +biganswer.big. IN A 10.10.2.31 +biganswer.big. IN A 10.10.2.32 +biganswer.big. IN A 10.10.2.33 +biganswer.big. IN A 10.10.2.34 +biganswer.big. IN A 10.10.2.35 +biganswer.big. IN A 10.10.2.36 +biganswer.big. IN A 10.10.2.37 +biganswer.big. IN A 10.10.2.38 +biganswer.big. IN A 10.10.2.39 +biganswer.big. IN A 10.10.2.40 +biganswer.big. IN A 10.10.2.41 +biganswer.big. IN A 10.10.2.42 +biganswer.big. IN A 10.10.2.43 +biganswer.big. IN A 10.10.2.44 +biganswer.big. IN A 10.10.2.45 +biganswer.big. IN A 10.10.2.46 +biganswer.big. IN A 10.10.2.47 +biganswer.big. IN A 10.10.2.48 +biganswer.big. IN A 10.10.2.49 +biganswer.big. IN A 10.10.2.50 +biganswer.big. IN A 10.10.3.1 +biganswer.big. IN A 10.10.3.2 +biganswer.big. IN A 10.10.3.3 +biganswer.big. IN A 10.10.3.4 +biganswer.big. IN A 10.10.3.5 +biganswer.big. IN A 10.10.3.6 +biganswer.big. IN A 10.10.3.7 +biganswer.big. IN A 10.10.3.8 +biganswer.big. IN A 10.10.3.9 +biganswer.big. IN A 10.10.3.10 +biganswer.big. IN A 10.10.3.11 +biganswer.big. IN A 10.10.3.12 +biganswer.big. IN A 10.10.3.13 +biganswer.big. IN A 10.10.3.14 +biganswer.big. IN A 10.10.3.15 +biganswer.big. IN A 10.10.3.16 +biganswer.big. IN A 10.10.3.17 +biganswer.big. IN A 10.10.3.18 +biganswer.big. IN A 10.10.3.19 +biganswer.big. IN A 10.10.3.20 +biganswer.big. IN A 10.10.3.21 +biganswer.big. IN A 10.10.3.22 +biganswer.big. IN A 10.10.3.23 +biganswer.big. IN A 10.10.3.24 +biganswer.big. IN A 10.10.3.25 +biganswer.big. IN A 10.10.3.26 +biganswer.big. IN A 10.10.3.27 +biganswer.big. IN A 10.10.3.28 +biganswer.big. IN A 10.10.3.29 +biganswer.big. IN A 10.10.3.30 +biganswer.big. IN A 10.10.3.31 +biganswer.big. IN A 10.10.3.32 +biganswer.big. IN A 10.10.3.33 +biganswer.big. IN A 10.10.3.34 +biganswer.big. IN A 10.10.3.35 +biganswer.big. IN A 10.10.3.36 +biganswer.big. IN A 10.10.3.37 +biganswer.big. IN A 10.10.3.38 +biganswer.big. IN A 10.10.3.39 +biganswer.big. IN A 10.10.3.40 +biganswer.big. IN A 10.10.3.41 +biganswer.big. IN A 10.10.3.42 +biganswer.big. IN A 10.10.3.43 +biganswer.big. IN A 10.10.3.44 +biganswer.big. IN A 10.10.3.45 +biganswer.big. IN A 10.10.3.46 +biganswer.big. IN A 10.10.3.47 +biganswer.big. IN A 10.10.3.48 +biganswer.big. IN A 10.10.3.49 +biganswer.big. IN A 10.10.3.50 +biganswer.big. IN A 10.10.4.1 +biganswer.big. IN A 10.10.4.2 +biganswer.big. IN A 10.10.4.3 +biganswer.big. IN A 10.10.4.4 +biganswer.big. IN A 10.10.4.5 +biganswer.big. IN A 10.10.4.6 +biganswer.big. IN A 10.10.4.7 +biganswer.big. IN A 10.10.4.8 +biganswer.big. IN A 10.10.4.9 +biganswer.big. IN A 10.10.4.10 +biganswer.big. IN A 10.10.4.11 +biganswer.big. IN A 10.10.4.12 +biganswer.big. IN A 10.10.4.13 +biganswer.big. IN A 10.10.4.14 +biganswer.big. IN A 10.10.4.15 +biganswer.big. IN A 10.10.4.16 +biganswer.big. IN A 10.10.4.17 +biganswer.big. IN A 10.10.4.18 +biganswer.big. IN A 10.10.4.19 +biganswer.big. IN A 10.10.4.20 +biganswer.big. IN A 10.10.4.21 +biganswer.big. IN A 10.10.4.22 +biganswer.big. IN A 10.10.4.23 +biganswer.big. IN A 10.10.4.24 +biganswer.big. IN A 10.10.4.25 +biganswer.big. IN A 10.10.4.26 +biganswer.big. IN A 10.10.4.27 +biganswer.big. IN A 10.10.4.28 +biganswer.big. IN A 10.10.4.29 +biganswer.big. IN A 10.10.4.30 +biganswer.big. IN A 10.10.4.31 +biganswer.big. IN A 10.10.4.32 +biganswer.big. IN A 10.10.4.33 +biganswer.big. IN A 10.10.4.34 +biganswer.big. IN A 10.10.4.35 +biganswer.big. IN A 10.10.4.36 +biganswer.big. IN A 10.10.4.37 +biganswer.big. IN A 10.10.4.38 +biganswer.big. IN A 10.10.4.39 +biganswer.big. IN A 10.10.4.40 +biganswer.big. IN A 10.10.4.41 +biganswer.big. IN A 10.10.4.42 +biganswer.big. IN A 10.10.4.43 +biganswer.big. IN A 10.10.4.44 +biganswer.big. IN A 10.10.4.45 +biganswer.big. IN A 10.10.4.46 +biganswer.big. IN A 10.10.4.47 +biganswer.big. IN A 10.10.4.48 +biganswer.big. IN A 10.10.4.49 +biganswer.big. IN A 10.10.4.50 +biganswer.big. IN A 10.10.5.1 +biganswer.big. IN A 10.10.5.2 +biganswer.big. IN A 10.10.5.3 +biganswer.big. IN A 10.10.5.4 +biganswer.big. IN A 10.10.5.5 +biganswer.big. IN A 10.10.5.6 +biganswer.big. IN A 10.10.5.7 +biganswer.big. IN A 10.10.5.8 +biganswer.big. IN A 10.10.5.9 +biganswer.big. IN A 10.10.5.10 +biganswer.big. IN A 10.10.5.11 +biganswer.big. IN A 10.10.5.12 +biganswer.big. IN A 10.10.5.13 +biganswer.big. IN A 10.10.5.14 +biganswer.big. IN A 10.10.5.15 +biganswer.big. IN A 10.10.5.16 +biganswer.big. IN A 10.10.5.17 +biganswer.big. IN A 10.10.5.18 +biganswer.big. IN A 10.10.5.19 +biganswer.big. IN A 10.10.5.20 +biganswer.big. IN A 10.10.5.21 +biganswer.big. IN A 10.10.5.22 +biganswer.big. IN A 10.10.5.23 +biganswer.big. IN A 10.10.5.24 +biganswer.big. IN A 10.10.5.25 +biganswer.big. IN A 10.10.5.26 +biganswer.big. IN A 10.10.5.27 +biganswer.big. IN A 10.10.5.28 +biganswer.big. IN A 10.10.5.29 +biganswer.big. IN A 10.10.5.30 +biganswer.big. IN A 10.10.5.31 +biganswer.big. IN A 10.10.5.32 +biganswer.big. IN A 10.10.5.33 +biganswer.big. IN A 10.10.5.34 +biganswer.big. IN A 10.10.5.35 +biganswer.big. IN A 10.10.5.36 +biganswer.big. IN A 10.10.5.37 +biganswer.big. IN A 10.10.5.38 +biganswer.big. IN A 10.10.5.39 +biganswer.big. IN A 10.10.5.40 +biganswer.big. IN A 10.10.5.41 +biganswer.big. IN A 10.10.5.42 +biganswer.big. IN A 10.10.5.43 +biganswer.big. IN A 10.10.5.44 +biganswer.big. IN A 10.10.5.45 +biganswer.big. IN A 10.10.5.46 +biganswer.big. IN A 10.10.5.47 +biganswer.big. IN A 10.10.5.48 +biganswer.big. IN A 10.10.5.49 +biganswer.big. IN A 10.10.5.50 +biganswer.big. IN A 10.10.6.1 +biganswer.big. IN A 10.10.6.2 +biganswer.big. IN A 10.10.6.3 +biganswer.big. IN A 10.10.6.4 +biganswer.big. IN A 10.10.6.5 +biganswer.big. IN A 10.10.6.6 +biganswer.big. IN A 10.10.6.7 +biganswer.big. IN A 10.10.6.8 +biganswer.big. IN A 10.10.6.9 +biganswer.big. IN A 10.10.6.10 +biganswer.big. IN A 10.10.6.11 +biganswer.big. IN A 10.10.6.12 +biganswer.big. IN A 10.10.6.13 +biganswer.big. IN A 10.10.6.14 +biganswer.big. IN A 10.10.6.15 +biganswer.big. IN A 10.10.6.16 +biganswer.big. IN A 10.10.6.17 +biganswer.big. IN A 10.10.6.18 +biganswer.big. IN A 10.10.6.19 +biganswer.big. IN A 10.10.6.20 +biganswer.big. IN A 10.10.6.21 +biganswer.big. IN A 10.10.6.22 +biganswer.big. IN A 10.10.6.23 +biganswer.big. IN A 10.10.6.24 +biganswer.big. IN A 10.10.6.25 +biganswer.big. IN A 10.10.6.26 +biganswer.big. IN A 10.10.6.27 +biganswer.big. IN A 10.10.6.28 +biganswer.big. IN A 10.10.6.29 +biganswer.big. IN A 10.10.6.30 +biganswer.big. IN A 10.10.6.31 +biganswer.big. IN A 10.10.6.32 +biganswer.big. IN A 10.10.6.33 +biganswer.big. IN A 10.10.6.34 +biganswer.big. IN A 10.10.6.35 +biganswer.big. IN A 10.10.6.36 +biganswer.big. IN A 10.10.6.37 +biganswer.big. IN A 10.10.6.38 +biganswer.big. IN A 10.10.6.39 +biganswer.big. IN A 10.10.6.40 +biganswer.big. IN A 10.10.6.41 +biganswer.big. IN A 10.10.6.42 +biganswer.big. IN A 10.10.6.43 +biganswer.big. IN A 10.10.6.44 +biganswer.big. IN A 10.10.6.45 +biganswer.big. IN A 10.10.6.46 +biganswer.big. IN A 10.10.6.47 +biganswer.big. IN A 10.10.6.48 +biganswer.big. IN A 10.10.6.49 +biganswer.big. IN A 10.10.6.50 +biganswer.big. IN A 10.10.7.1 +biganswer.big. IN A 10.10.7.2 +biganswer.big. IN A 10.10.7.3 +biganswer.big. IN A 10.10.7.4 +biganswer.big. IN A 10.10.7.5 +biganswer.big. IN A 10.10.7.6 +biganswer.big. IN A 10.10.7.7 +biganswer.big. IN A 10.10.7.8 +biganswer.big. IN A 10.10.7.9 +biganswer.big. IN A 10.10.7.10 +biganswer.big. IN A 10.10.7.11 +biganswer.big. IN A 10.10.7.12 +biganswer.big. IN A 10.10.7.13 +biganswer.big. IN A 10.10.7.14 +biganswer.big. IN A 10.10.7.15 +biganswer.big. IN A 10.10.7.16 +biganswer.big. IN A 10.10.7.17 +biganswer.big. IN A 10.10.7.18 +biganswer.big. IN A 10.10.7.19 +biganswer.big. IN A 10.10.7.20 +biganswer.big. IN A 10.10.7.21 +biganswer.big. IN A 10.10.7.22 +biganswer.big. IN A 10.10.7.23 +biganswer.big. IN A 10.10.7.24 +biganswer.big. IN A 10.10.7.25 +biganswer.big. IN A 10.10.7.26 +biganswer.big. IN A 10.10.7.27 +biganswer.big. IN A 10.10.7.28 +biganswer.big. IN A 10.10.7.29 +biganswer.big. IN A 10.10.7.30 +biganswer.big. IN A 10.10.7.31 +biganswer.big. IN A 10.10.7.32 +biganswer.big. IN A 10.10.7.33 +biganswer.big. IN A 10.10.7.34 +biganswer.big. IN A 10.10.7.35 +biganswer.big. IN A 10.10.7.36 +biganswer.big. IN A 10.10.7.37 +biganswer.big. IN A 10.10.7.38 +biganswer.big. IN A 10.10.7.39 +biganswer.big. IN A 10.10.7.40 +biganswer.big. IN A 10.10.7.41 +biganswer.big. IN A 10.10.7.42 +biganswer.big. IN A 10.10.7.43 +biganswer.big. IN A 10.10.7.44 +biganswer.big. IN A 10.10.7.45 +biganswer.big. IN A 10.10.7.46 +biganswer.big. IN A 10.10.7.47 +biganswer.big. IN A 10.10.7.48 +biganswer.big. IN A 10.10.7.49 +biganswer.big. IN A 10.10.7.50 +biganswer.big. IN A 10.10.8.1 +biganswer.big. IN A 10.10.8.2 +biganswer.big. IN A 10.10.8.3 +biganswer.big. IN A 10.10.8.4 +biganswer.big. IN A 10.10.8.5 +biganswer.big. IN A 10.10.8.6 +biganswer.big. IN A 10.10.8.7 +biganswer.big. IN A 10.10.8.8 +biganswer.big. IN A 10.10.8.9 +biganswer.big. IN A 10.10.8.10 +biganswer.big. IN A 10.10.8.11 +biganswer.big. IN A 10.10.8.12 +biganswer.big. IN A 10.10.8.13 +biganswer.big. IN A 10.10.8.14 +biganswer.big. IN A 10.10.8.15 +biganswer.big. IN A 10.10.8.16 +biganswer.big. IN A 10.10.8.17 +biganswer.big. IN A 10.10.8.18 +biganswer.big. IN A 10.10.8.19 +biganswer.big. IN A 10.10.8.20 +biganswer.big. IN A 10.10.8.21 +biganswer.big. IN A 10.10.8.22 +biganswer.big. IN A 10.10.8.23 +biganswer.big. IN A 10.10.8.24 +biganswer.big. IN A 10.10.8.25 +biganswer.big. IN A 10.10.8.26 +biganswer.big. IN A 10.10.8.27 +biganswer.big. IN A 10.10.8.28 +biganswer.big. IN A 10.10.8.29 +biganswer.big. IN A 10.10.8.30 +biganswer.big. IN A 10.10.8.31 +biganswer.big. IN A 10.10.8.32 +biganswer.big. IN A 10.10.8.33 +biganswer.big. IN A 10.10.8.34 +biganswer.big. IN A 10.10.8.35 +biganswer.big. IN A 10.10.8.36 +biganswer.big. IN A 10.10.8.37 +biganswer.big. IN A 10.10.8.38 +biganswer.big. IN A 10.10.8.39 +biganswer.big. IN A 10.10.8.40 +biganswer.big. IN A 10.10.8.41 +biganswer.big. IN A 10.10.8.42 +biganswer.big. IN A 10.10.8.43 +biganswer.big. IN A 10.10.8.44 +biganswer.big. IN A 10.10.8.45 +biganswer.big. IN A 10.10.8.46 +biganswer.big. IN A 10.10.8.47 +biganswer.big. IN A 10.10.8.48 +biganswer.big. IN A 10.10.8.49 +biganswer.big. IN A 10.10.8.50 +biganswer.big. IN A 10.10.9.1 +biganswer.big. IN A 10.10.9.2 +biganswer.big. IN A 10.10.9.3 +biganswer.big. IN A 10.10.9.4 +biganswer.big. IN A 10.10.9.5 +biganswer.big. IN A 10.10.9.6 +biganswer.big. IN A 10.10.9.7 +biganswer.big. IN A 10.10.9.8 +biganswer.big. IN A 10.10.9.9 +biganswer.big. IN A 10.10.9.10 +biganswer.big. IN A 10.10.9.11 +biganswer.big. IN A 10.10.9.12 +biganswer.big. IN A 10.10.9.13 +biganswer.big. IN A 10.10.9.14 +biganswer.big. IN A 10.10.9.15 +biganswer.big. IN A 10.10.9.16 +biganswer.big. IN A 10.10.9.17 +biganswer.big. IN A 10.10.9.18 +biganswer.big. IN A 10.10.9.19 +biganswer.big. IN A 10.10.9.20 +biganswer.big. IN A 10.10.9.21 +biganswer.big. IN A 10.10.9.22 +biganswer.big. IN A 10.10.9.23 +biganswer.big. IN A 10.10.9.24 +biganswer.big. IN A 10.10.9.25 +biganswer.big. IN A 10.10.9.26 +biganswer.big. IN A 10.10.9.27 +biganswer.big. IN A 10.10.9.28 +biganswer.big. IN A 10.10.9.29 +biganswer.big. IN A 10.10.9.30 +biganswer.big. IN A 10.10.9.31 +biganswer.big. IN A 10.10.9.32 +biganswer.big. IN A 10.10.9.33 +biganswer.big. IN A 10.10.9.34 +biganswer.big. IN A 10.10.9.35 +biganswer.big. IN A 10.10.9.36 +biganswer.big. IN A 10.10.9.37 +biganswer.big. IN A 10.10.9.38 +biganswer.big. IN A 10.10.9.39 +biganswer.big. IN A 10.10.9.40 +biganswer.big. IN A 10.10.9.41 +biganswer.big. IN A 10.10.9.42 +biganswer.big. IN A 10.10.9.43 +biganswer.big. IN A 10.10.9.44 +biganswer.big. IN A 10.10.9.45 +biganswer.big. IN A 10.10.9.46 +biganswer.big. IN A 10.10.9.47 +biganswer.big. IN A 10.10.9.48 +biganswer.big. IN A 10.10.9.49 +biganswer.big. IN A 10.10.9.50 +biganswer.big. IN A 10.10.10.1 +biganswer.big. IN A 10.10.10.2 +biganswer.big. IN A 10.10.10.3 +biganswer.big. IN A 10.10.10.4 +biganswer.big. IN A 10.10.10.5 +biganswer.big. IN A 10.10.10.6 +biganswer.big. IN A 10.10.10.7 +biganswer.big. IN A 10.10.10.8 +biganswer.big. IN A 10.10.10.9 +biganswer.big. IN A 10.10.10.10 +biganswer.big. IN A 10.10.10.11 +biganswer.big. IN A 10.10.10.12 +biganswer.big. IN A 10.10.10.13 +biganswer.big. IN A 10.10.10.14 +biganswer.big. IN A 10.10.10.15 +biganswer.big. IN A 10.10.10.16 +biganswer.big. IN A 10.10.10.17 +biganswer.big. IN A 10.10.10.18 +biganswer.big. IN A 10.10.10.19 +biganswer.big. IN A 10.10.10.20 +biganswer.big. IN A 10.10.10.21 +biganswer.big. IN A 10.10.10.22 +biganswer.big. IN A 10.10.10.23 +biganswer.big. IN A 10.10.10.24 +biganswer.big. IN A 10.10.10.25 +biganswer.big. IN A 10.10.10.26 +biganswer.big. IN A 10.10.10.27 +biganswer.big. IN A 10.10.10.28 +biganswer.big. IN A 10.10.10.29 +biganswer.big. IN A 10.10.10.30 +biganswer.big. IN A 10.10.10.31 +biganswer.big. IN A 10.10.10.32 +biganswer.big. IN A 10.10.10.33 +biganswer.big. IN A 10.10.10.34 +biganswer.big. IN A 10.10.10.35 +biganswer.big. IN A 10.10.10.36 +biganswer.big. IN A 10.10.10.37 +biganswer.big. IN A 10.10.10.38 +biganswer.big. IN A 10.10.10.39 +biganswer.big. IN A 10.10.10.40 +biganswer.big. IN A 10.10.10.41 +biganswer.big. IN A 10.10.10.42 +biganswer.big. IN A 10.10.10.43 +biganswer.big. IN A 10.10.10.44 +biganswer.big. IN A 10.10.10.45 +biganswer.big. IN A 10.10.10.46 +biganswer.big. IN A 10.10.10.47 +biganswer.big. IN A 10.10.10.48 +biganswer.big. IN A 10.10.10.49 +biganswer.big. IN A 10.10.10.50 +biganswer.big. IN A 10.10.11.1 +biganswer.big. IN A 10.10.11.2 +biganswer.big. IN A 10.10.11.3 +biganswer.big. IN A 10.10.11.4 +biganswer.big. IN A 10.10.11.5 +biganswer.big. IN A 10.10.11.6 +biganswer.big. IN A 10.10.11.7 +biganswer.big. IN A 10.10.11.8 +biganswer.big. IN A 10.10.11.9 +biganswer.big. IN A 10.10.11.10 +biganswer.big. IN A 10.10.11.11 +biganswer.big. IN A 10.10.11.12 +biganswer.big. IN A 10.10.11.13 +biganswer.big. IN A 10.10.11.14 +biganswer.big. IN A 10.10.11.15 +biganswer.big. IN A 10.10.11.16 +biganswer.big. IN A 10.10.11.17 +biganswer.big. IN A 10.10.11.18 +biganswer.big. IN A 10.10.11.19 +biganswer.big. IN A 10.10.11.20 +biganswer.big. IN A 10.10.11.21 +biganswer.big. IN A 10.10.11.22 +biganswer.big. IN A 10.10.11.23 +biganswer.big. IN A 10.10.11.24 +biganswer.big. IN A 10.10.11.25 +biganswer.big. IN A 10.10.11.26 +biganswer.big. IN A 10.10.11.27 +biganswer.big. IN A 10.10.11.28 +biganswer.big. IN A 10.10.11.29 +biganswer.big. IN A 10.10.11.30 +biganswer.big. IN A 10.10.11.31 +biganswer.big. IN A 10.10.11.32 +biganswer.big. IN A 10.10.11.33 +biganswer.big. IN A 10.10.11.34 +biganswer.big. IN A 10.10.11.35 +biganswer.big. IN A 10.10.11.36 +biganswer.big. IN A 10.10.11.37 +biganswer.big. IN A 10.10.11.38 +biganswer.big. IN A 10.10.11.39 +biganswer.big. IN A 10.10.11.40 +biganswer.big. IN A 10.10.11.41 +biganswer.big. IN A 10.10.11.42 +biganswer.big. IN A 10.10.11.43 +biganswer.big. IN A 10.10.11.44 +biganswer.big. IN A 10.10.11.45 +biganswer.big. IN A 10.10.11.46 +biganswer.big. IN A 10.10.11.47 +biganswer.big. IN A 10.10.11.48 +biganswer.big. IN A 10.10.11.49 +biganswer.big. IN A 10.10.11.50 +biganswer.big. IN A 10.10.12.1 +biganswer.big. IN A 10.10.12.2 +biganswer.big. IN A 10.10.12.3 +biganswer.big. IN A 10.10.12.4 +biganswer.big. IN A 10.10.12.5 +biganswer.big. IN A 10.10.12.6 +biganswer.big. IN A 10.10.12.7 +biganswer.big. IN A 10.10.12.8 +biganswer.big. IN A 10.10.12.9 +biganswer.big. IN A 10.10.12.10 +biganswer.big. IN A 10.10.12.11 +biganswer.big. IN A 10.10.12.12 +biganswer.big. IN A 10.10.12.13 +biganswer.big. IN A 10.10.12.14 +biganswer.big. IN A 10.10.12.15 +biganswer.big. IN A 10.10.12.16 +biganswer.big. IN A 10.10.12.17 +biganswer.big. IN A 10.10.12.18 +biganswer.big. IN A 10.10.12.19 +biganswer.big. IN A 10.10.12.20 +biganswer.big. IN A 10.10.12.21 +biganswer.big. IN A 10.10.12.22 +biganswer.big. IN A 10.10.12.23 +biganswer.big. IN A 10.10.12.24 +biganswer.big. IN A 10.10.12.25 +biganswer.big. IN A 10.10.12.26 +biganswer.big. IN A 10.10.12.27 +biganswer.big. IN A 10.10.12.28 +biganswer.big. IN A 10.10.12.29 +biganswer.big. IN A 10.10.12.30 +biganswer.big. IN A 10.10.12.31 +biganswer.big. IN A 10.10.12.32 +biganswer.big. IN A 10.10.12.33 +biganswer.big. IN A 10.10.12.34 +biganswer.big. IN A 10.10.12.35 +biganswer.big. IN A 10.10.12.36 +biganswer.big. IN A 10.10.12.37 +biganswer.big. IN A 10.10.12.38 +biganswer.big. IN A 10.10.12.39 +biganswer.big. IN A 10.10.12.40 +biganswer.big. IN A 10.10.12.41 +biganswer.big. IN A 10.10.12.42 +biganswer.big. IN A 10.10.12.43 +biganswer.big. IN A 10.10.12.44 +biganswer.big. IN A 10.10.12.45 +biganswer.big. IN A 10.10.12.46 +biganswer.big. IN A 10.10.12.47 +biganswer.big. IN A 10.10.12.48 +biganswer.big. IN A 10.10.12.49 +biganswer.big. IN A 10.10.12.50 +biganswer.big. IN A 10.10.13.1 +biganswer.big. IN A 10.10.13.2 +biganswer.big. IN A 10.10.13.3 +biganswer.big. IN A 10.10.13.4 +biganswer.big. IN A 10.10.13.5 +biganswer.big. IN A 10.10.13.6 +biganswer.big. IN A 10.10.13.7 +biganswer.big. IN A 10.10.13.8 +biganswer.big. IN A 10.10.13.9 +biganswer.big. IN A 10.10.13.10 +biganswer.big. IN A 10.10.13.11 +biganswer.big. IN A 10.10.13.12 +biganswer.big. IN A 10.10.13.13 +biganswer.big. IN A 10.10.13.14 +biganswer.big. IN A 10.10.13.15 +biganswer.big. IN A 10.10.13.16 +biganswer.big. IN A 10.10.13.17 +biganswer.big. IN A 10.10.13.18 +biganswer.big. IN A 10.10.13.19 +biganswer.big. IN A 10.10.13.20 +biganswer.big. IN A 10.10.13.21 +biganswer.big. IN A 10.10.13.22 +biganswer.big. IN A 10.10.13.23 +biganswer.big. IN A 10.10.13.24 +biganswer.big. IN A 10.10.13.25 +biganswer.big. IN A 10.10.13.26 +biganswer.big. IN A 10.10.13.27 +biganswer.big. IN A 10.10.13.28 +biganswer.big. IN A 10.10.13.29 +biganswer.big. IN A 10.10.13.30 +biganswer.big. IN A 10.10.13.31 +biganswer.big. IN A 10.10.13.32 +biganswer.big. IN A 10.10.13.33 +biganswer.big. IN A 10.10.13.34 +biganswer.big. IN A 10.10.13.35 +biganswer.big. IN A 10.10.13.36 +biganswer.big. IN A 10.10.13.37 +biganswer.big. IN A 10.10.13.38 +biganswer.big. IN A 10.10.13.39 +biganswer.big. IN A 10.10.13.40 +biganswer.big. IN A 10.10.13.41 +biganswer.big. IN A 10.10.13.42 +biganswer.big. IN A 10.10.13.43 +biganswer.big. IN A 10.10.13.44 +biganswer.big. IN A 10.10.13.45 +biganswer.big. IN A 10.10.13.46 +biganswer.big. IN A 10.10.13.47 +biganswer.big. IN A 10.10.13.48 +biganswer.big. IN A 10.10.13.49 +biganswer.big. IN A 10.10.13.50 +biganswer.big. IN A 10.10.14.1 +biganswer.big. IN A 10.10.14.2 +biganswer.big. IN A 10.10.14.3 +biganswer.big. IN A 10.10.14.4 +biganswer.big. IN A 10.10.14.5 +biganswer.big. IN A 10.10.14.6 +biganswer.big. IN A 10.10.14.7 +biganswer.big. IN A 10.10.14.8 +biganswer.big. IN A 10.10.14.9 +biganswer.big. IN A 10.10.14.10 +biganswer.big. IN A 10.10.14.11 +biganswer.big. IN A 10.10.14.12 +biganswer.big. IN A 10.10.14.13 +biganswer.big. IN A 10.10.14.14 +biganswer.big. IN A 10.10.14.15 +biganswer.big. IN A 10.10.14.16 +biganswer.big. IN A 10.10.14.17 +biganswer.big. IN A 10.10.14.18 +biganswer.big. IN A 10.10.14.19 +biganswer.big. IN A 10.10.14.20 +biganswer.big. IN A 10.10.14.21 +biganswer.big. IN A 10.10.14.22 +biganswer.big. IN A 10.10.14.23 +biganswer.big. IN A 10.10.14.24 +biganswer.big. IN A 10.10.14.25 +biganswer.big. IN A 10.10.14.26 +biganswer.big. IN A 10.10.14.27 +biganswer.big. IN A 10.10.14.28 +biganswer.big. IN A 10.10.14.29 +biganswer.big. IN A 10.10.14.30 +biganswer.big. IN A 10.10.14.31 +biganswer.big. IN A 10.10.14.32 +biganswer.big. IN A 10.10.14.33 +biganswer.big. IN A 10.10.14.34 +biganswer.big. IN A 10.10.14.35 +biganswer.big. IN A 10.10.14.36 +biganswer.big. IN A 10.10.14.37 +biganswer.big. IN A 10.10.14.38 +biganswer.big. IN A 10.10.14.39 +biganswer.big. IN A 10.10.14.40 +biganswer.big. IN A 10.10.14.41 +biganswer.big. IN A 10.10.14.42 +biganswer.big. IN A 10.10.14.43 +biganswer.big. IN A 10.10.14.44 +biganswer.big. IN A 10.10.14.45 +biganswer.big. IN A 10.10.14.46 +biganswer.big. IN A 10.10.14.47 +biganswer.big. IN A 10.10.14.48 +biganswer.big. IN A 10.10.14.49 +biganswer.big. IN A 10.10.14.50 +biganswer.big. IN A 10.10.15.1 +biganswer.big. IN A 10.10.15.2 +biganswer.big. IN A 10.10.15.3 +biganswer.big. IN A 10.10.15.4 +biganswer.big. IN A 10.10.15.5 +biganswer.big. IN A 10.10.15.6 +biganswer.big. IN A 10.10.15.7 +biganswer.big. IN A 10.10.15.8 +biganswer.big. IN A 10.10.15.9 +biganswer.big. IN A 10.10.15.10 +biganswer.big. IN A 10.10.15.11 +biganswer.big. IN A 10.10.15.12 +biganswer.big. IN A 10.10.15.13 +biganswer.big. IN A 10.10.15.14 +biganswer.big. IN A 10.10.15.15 +biganswer.big. IN A 10.10.15.16 +biganswer.big. IN A 10.10.15.17 +biganswer.big. IN A 10.10.15.18 +biganswer.big. IN A 10.10.15.19 +biganswer.big. IN A 10.10.15.20 +biganswer.big. IN A 10.10.15.21 +biganswer.big. IN A 10.10.15.22 +biganswer.big. IN A 10.10.15.23 +biganswer.big. IN A 10.10.15.24 +biganswer.big. IN A 10.10.15.25 +biganswer.big. IN A 10.10.15.26 +biganswer.big. IN A 10.10.15.27 +biganswer.big. IN A 10.10.15.28 +biganswer.big. IN A 10.10.15.29 +biganswer.big. IN A 10.10.15.30 +biganswer.big. IN A 10.10.15.31 +biganswer.big. IN A 10.10.15.32 +biganswer.big. IN A 10.10.15.33 +biganswer.big. IN A 10.10.15.34 +biganswer.big. IN A 10.10.15.35 +biganswer.big. IN A 10.10.15.36 +biganswer.big. IN A 10.10.15.37 +biganswer.big. IN A 10.10.15.38 +biganswer.big. IN A 10.10.15.39 +biganswer.big. IN A 10.10.15.40 +biganswer.big. IN A 10.10.15.41 +biganswer.big. IN A 10.10.15.42 +biganswer.big. IN A 10.10.15.43 +biganswer.big. IN A 10.10.15.44 +biganswer.big. IN A 10.10.15.45 +biganswer.big. IN A 10.10.15.46 +biganswer.big. IN A 10.10.15.47 +biganswer.big. IN A 10.10.15.48 +biganswer.big. IN A 10.10.15.49 +biganswer.big. IN A 10.10.15.50 +biganswer.big. IN A 10.10.16.1 +biganswer.big. IN A 10.10.16.2 +biganswer.big. IN A 10.10.16.3 +biganswer.big. IN A 10.10.16.4 +biganswer.big. IN A 10.10.16.5 +biganswer.big. IN A 10.10.16.6 +biganswer.big. IN A 10.10.16.7 +biganswer.big. IN A 10.10.16.8 +biganswer.big. IN A 10.10.16.9 +biganswer.big. IN A 10.10.16.10 +biganswer.big. IN A 10.10.16.11 +biganswer.big. IN A 10.10.16.12 +biganswer.big. IN A 10.10.16.13 +biganswer.big. IN A 10.10.16.14 +biganswer.big. IN A 10.10.16.15 +biganswer.big. IN A 10.10.16.16 +biganswer.big. IN A 10.10.16.17 +biganswer.big. IN A 10.10.16.18 +biganswer.big. IN A 10.10.16.19 +biganswer.big. IN A 10.10.16.20 +biganswer.big. IN A 10.10.16.21 +biganswer.big. IN A 10.10.16.22 +biganswer.big. IN A 10.10.16.23 +biganswer.big. IN A 10.10.16.24 +biganswer.big. IN A 10.10.16.25 +biganswer.big. IN A 10.10.16.26 +biganswer.big. IN A 10.10.16.27 +biganswer.big. IN A 10.10.16.28 +biganswer.big. IN A 10.10.16.29 +biganswer.big. IN A 10.10.16.30 +biganswer.big. IN A 10.10.16.31 +biganswer.big. IN A 10.10.16.32 +biganswer.big. IN A 10.10.16.33 +biganswer.big. IN A 10.10.16.34 +biganswer.big. IN A 10.10.16.35 +biganswer.big. IN A 10.10.16.36 +biganswer.big. IN A 10.10.16.37 +biganswer.big. IN A 10.10.16.38 +biganswer.big. IN A 10.10.16.39 +biganswer.big. IN A 10.10.16.40 +biganswer.big. IN A 10.10.16.41 +biganswer.big. IN A 10.10.16.42 +biganswer.big. IN A 10.10.16.43 +biganswer.big. IN A 10.10.16.44 +biganswer.big. IN A 10.10.16.45 +biganswer.big. IN A 10.10.16.46 +biganswer.big. IN A 10.10.16.47 +biganswer.big. IN A 10.10.16.48 +biganswer.big. IN A 10.10.16.49 +biganswer.big. IN A 10.10.16.50 +biganswer.big. IN A 10.10.17.1 +biganswer.big. IN A 10.10.17.2 +biganswer.big. IN A 10.10.17.3 +biganswer.big. IN A 10.10.17.4 +biganswer.big. IN A 10.10.17.5 +biganswer.big. IN A 10.10.17.6 +biganswer.big. IN A 10.10.17.7 +biganswer.big. IN A 10.10.17.8 +biganswer.big. IN A 10.10.17.9 +biganswer.big. IN A 10.10.17.10 +biganswer.big. IN A 10.10.17.11 +biganswer.big. IN A 10.10.17.12 +biganswer.big. IN A 10.10.17.13 +biganswer.big. IN A 10.10.17.14 +biganswer.big. IN A 10.10.17.15 +biganswer.big. IN A 10.10.17.16 +biganswer.big. IN A 10.10.17.17 +biganswer.big. IN A 10.10.17.18 +biganswer.big. IN A 10.10.17.19 +biganswer.big. IN A 10.10.17.20 +biganswer.big. IN A 10.10.17.21 +biganswer.big. IN A 10.10.17.22 +biganswer.big. IN A 10.10.17.23 +biganswer.big. IN A 10.10.17.24 +biganswer.big. IN A 10.10.17.25 +biganswer.big. IN A 10.10.17.26 +biganswer.big. IN A 10.10.17.27 +biganswer.big. IN A 10.10.17.28 +biganswer.big. IN A 10.10.17.29 +biganswer.big. IN A 10.10.17.30 +biganswer.big. IN A 10.10.17.31 +biganswer.big. IN A 10.10.17.32 +biganswer.big. IN A 10.10.17.33 +biganswer.big. IN A 10.10.17.34 +biganswer.big. IN A 10.10.17.35 +biganswer.big. IN A 10.10.17.36 +biganswer.big. IN A 10.10.17.37 +biganswer.big. IN A 10.10.17.38 +biganswer.big. IN A 10.10.17.39 +biganswer.big. IN A 10.10.17.40 +biganswer.big. IN A 10.10.17.41 +biganswer.big. IN A 10.10.17.42 +biganswer.big. IN A 10.10.17.43 +biganswer.big. IN A 10.10.17.44 +biganswer.big. IN A 10.10.17.45 +biganswer.big. IN A 10.10.17.46 +biganswer.big. IN A 10.10.17.47 +biganswer.big. IN A 10.10.17.48 +biganswer.big. IN A 10.10.17.49 +biganswer.big. IN A 10.10.17.50 +biganswer.big. IN A 10.10.18.1 +biganswer.big. IN A 10.10.18.2 +biganswer.big. IN A 10.10.18.3 +biganswer.big. IN A 10.10.18.4 +biganswer.big. IN A 10.10.18.5 +biganswer.big. IN A 10.10.18.6 +biganswer.big. IN A 10.10.18.7 +biganswer.big. IN A 10.10.18.8 +biganswer.big. IN A 10.10.18.9 +biganswer.big. IN A 10.10.18.10 +biganswer.big. IN A 10.10.18.11 +biganswer.big. IN A 10.10.18.12 +biganswer.big. IN A 10.10.18.13 +biganswer.big. IN A 10.10.18.14 +biganswer.big. IN A 10.10.18.15 +biganswer.big. IN A 10.10.18.16 +biganswer.big. IN A 10.10.18.17 +biganswer.big. IN A 10.10.18.18 +biganswer.big. IN A 10.10.18.19 +biganswer.big. IN A 10.10.18.20 +biganswer.big. IN A 10.10.18.21 +biganswer.big. IN A 10.10.18.22 +biganswer.big. IN A 10.10.18.23 +biganswer.big. IN A 10.10.18.24 +biganswer.big. IN A 10.10.18.25 +biganswer.big. IN A 10.10.18.26 +biganswer.big. IN A 10.10.18.27 +biganswer.big. IN A 10.10.18.28 +biganswer.big. IN A 10.10.18.29 +biganswer.big. IN A 10.10.18.30 +biganswer.big. IN A 10.10.18.31 +biganswer.big. IN A 10.10.18.32 +biganswer.big. IN A 10.10.18.33 +biganswer.big. IN A 10.10.18.34 +biganswer.big. IN A 10.10.18.35 +biganswer.big. IN A 10.10.18.36 +biganswer.big. IN A 10.10.18.37 +biganswer.big. IN A 10.10.18.38 +biganswer.big. IN A 10.10.18.39 +biganswer.big. IN A 10.10.18.40 +biganswer.big. IN A 10.10.18.41 +biganswer.big. IN A 10.10.18.42 +biganswer.big. IN A 10.10.18.43 +biganswer.big. IN A 10.10.18.44 +biganswer.big. IN A 10.10.18.45 +biganswer.big. IN A 10.10.18.46 +biganswer.big. IN A 10.10.18.47 +biganswer.big. IN A 10.10.18.48 +biganswer.big. IN A 10.10.18.49 +biganswer.big. IN A 10.10.18.50 +biganswer.big. IN A 10.10.19.1 +biganswer.big. IN A 10.10.19.2 +biganswer.big. IN A 10.10.19.3 +biganswer.big. IN A 10.10.19.4 +biganswer.big. IN A 10.10.19.5 +biganswer.big. IN A 10.10.19.6 +biganswer.big. IN A 10.10.19.7 +biganswer.big. IN A 10.10.19.8 +biganswer.big. IN A 10.10.19.9 +biganswer.big. IN A 10.10.19.10 +biganswer.big. IN A 10.10.19.11 +biganswer.big. IN A 10.10.19.12 +biganswer.big. IN A 10.10.19.13 +biganswer.big. IN A 10.10.19.14 +biganswer.big. IN A 10.10.19.15 +biganswer.big. IN A 10.10.19.16 +biganswer.big. IN A 10.10.19.17 +biganswer.big. IN A 10.10.19.18 +biganswer.big. IN A 10.10.19.19 +biganswer.big. IN A 10.10.19.20 +biganswer.big. IN A 10.10.19.21 +biganswer.big. IN A 10.10.19.22 +biganswer.big. IN A 10.10.19.23 +biganswer.big. IN A 10.10.19.24 +biganswer.big. IN A 10.10.19.25 +biganswer.big. IN A 10.10.19.26 +biganswer.big. IN A 10.10.19.27 +biganswer.big. IN A 10.10.19.28 +biganswer.big. IN A 10.10.19.29 +biganswer.big. IN A 10.10.19.30 +biganswer.big. IN A 10.10.19.31 +biganswer.big. IN A 10.10.19.32 +biganswer.big. IN A 10.10.19.33 +biganswer.big. IN A 10.10.19.34 +biganswer.big. IN A 10.10.19.35 +biganswer.big. IN A 10.10.19.36 +biganswer.big. IN A 10.10.19.37 +biganswer.big. IN A 10.10.19.38 +biganswer.big. IN A 10.10.19.39 +biganswer.big. IN A 10.10.19.40 +biganswer.big. IN A 10.10.19.41 +biganswer.big. IN A 10.10.19.42 +biganswer.big. IN A 10.10.19.43 +biganswer.big. IN A 10.10.19.44 +biganswer.big. IN A 10.10.19.45 +biganswer.big. IN A 10.10.19.46 +biganswer.big. IN A 10.10.19.47 +biganswer.big. IN A 10.10.19.48 +biganswer.big. IN A 10.10.19.49 +biganswer.big. IN A 10.10.19.50 +biganswer.big. IN A 10.10.20.1 +biganswer.big. IN A 10.10.20.2 +biganswer.big. IN A 10.10.20.3 +biganswer.big. IN A 10.10.20.4 +biganswer.big. IN A 10.10.20.5 +biganswer.big. IN A 10.10.20.6 +biganswer.big. IN A 10.10.20.7 +biganswer.big. IN A 10.10.20.8 +biganswer.big. IN A 10.10.20.9 +biganswer.big. IN A 10.10.20.10 +biganswer.big. IN A 10.10.20.11 +biganswer.big. IN A 10.10.20.12 +biganswer.big. IN A 10.10.20.13 +biganswer.big. IN A 10.10.20.14 +biganswer.big. IN A 10.10.20.15 +biganswer.big. IN A 10.10.20.16 +biganswer.big. IN A 10.10.20.17 +biganswer.big. IN A 10.10.20.18 +biganswer.big. IN A 10.10.20.19 +biganswer.big. IN A 10.10.20.20 +biganswer.big. IN A 10.10.20.21 +biganswer.big. IN A 10.10.20.22 +biganswer.big. IN A 10.10.20.23 +biganswer.big. IN A 10.10.20.24 +biganswer.big. IN A 10.10.20.25 +biganswer.big. IN A 10.10.20.26 +biganswer.big. IN A 10.10.20.27 +biganswer.big. IN A 10.10.20.28 +biganswer.big. IN A 10.10.20.29 +biganswer.big. IN A 10.10.20.30 +biganswer.big. IN A 10.10.20.31 +biganswer.big. IN A 10.10.20.32 +biganswer.big. IN A 10.10.20.33 +biganswer.big. IN A 10.10.20.34 +biganswer.big. IN A 10.10.20.35 +biganswer.big. IN A 10.10.20.36 +biganswer.big. IN A 10.10.20.37 +biganswer.big. IN A 10.10.20.38 +biganswer.big. IN A 10.10.20.39 +biganswer.big. IN A 10.10.20.40 +biganswer.big. IN A 10.10.20.41 +biganswer.big. IN A 10.10.20.42 +biganswer.big. IN A 10.10.20.43 +biganswer.big. IN A 10.10.20.44 +biganswer.big. IN A 10.10.20.45 +biganswer.big. IN A 10.10.20.46 +biganswer.big. IN A 10.10.20.47 +biganswer.big. IN A 10.10.20.48 +biganswer.big. IN A 10.10.20.49 +biganswer.big. IN A 10.10.20.50 +biganswer.big. IN A 10.10.21.1 +biganswer.big. IN A 10.10.21.2 +biganswer.big. IN A 10.10.21.3 +biganswer.big. IN A 10.10.21.4 +biganswer.big. IN A 10.10.21.5 +biganswer.big. IN A 10.10.21.6 +biganswer.big. IN A 10.10.21.7 +biganswer.big. IN A 10.10.21.8 +biganswer.big. IN A 10.10.21.9 +biganswer.big. IN A 10.10.21.10 +biganswer.big. IN A 10.10.21.11 +biganswer.big. IN A 10.10.21.12 +biganswer.big. IN A 10.10.21.13 +biganswer.big. IN A 10.10.21.14 +biganswer.big. IN A 10.10.21.15 +biganswer.big. IN A 10.10.21.16 +biganswer.big. IN A 10.10.21.17 +biganswer.big. IN A 10.10.21.18 +biganswer.big. IN A 10.10.21.19 +biganswer.big. IN A 10.10.21.20 +biganswer.big. IN A 10.10.21.21 +biganswer.big. IN A 10.10.21.22 +biganswer.big. IN A 10.10.21.23 +biganswer.big. IN A 10.10.21.24 +biganswer.big. IN A 10.10.21.25 +biganswer.big. IN A 10.10.21.26 +biganswer.big. IN A 10.10.21.27 +biganswer.big. IN A 10.10.21.28 +biganswer.big. IN A 10.10.21.29 +biganswer.big. IN A 10.10.21.30 +biganswer.big. IN A 10.10.21.31 +biganswer.big. IN A 10.10.21.32 +biganswer.big. IN A 10.10.21.33 +biganswer.big. IN A 10.10.21.34 +biganswer.big. IN A 10.10.21.35 +biganswer.big. IN A 10.10.21.36 +biganswer.big. IN A 10.10.21.37 +biganswer.big. IN A 10.10.21.38 +biganswer.big. IN A 10.10.21.39 +biganswer.big. IN A 10.10.21.40 +biganswer.big. IN A 10.10.21.41 +biganswer.big. IN A 10.10.21.42 +biganswer.big. IN A 10.10.21.43 +biganswer.big. IN A 10.10.21.44 +biganswer.big. IN A 10.10.21.45 +biganswer.big. IN A 10.10.21.46 +biganswer.big. IN A 10.10.21.47 +biganswer.big. IN A 10.10.21.48 +biganswer.big. IN A 10.10.21.49 +biganswer.big. IN A 10.10.21.50 +biganswer.big. IN A 10.10.22.1 +biganswer.big. IN A 10.10.22.2 +biganswer.big. IN A 10.10.22.3 +biganswer.big. IN A 10.10.22.4 +biganswer.big. IN A 10.10.22.5 +biganswer.big. IN A 10.10.22.6 +biganswer.big. IN A 10.10.22.7 +biganswer.big. IN A 10.10.22.8 +biganswer.big. IN A 10.10.22.9 +biganswer.big. IN A 10.10.22.10 +biganswer.big. IN A 10.10.22.11 +biganswer.big. IN A 10.10.22.12 +biganswer.big. IN A 10.10.22.13 +biganswer.big. IN A 10.10.22.14 +biganswer.big. IN A 10.10.22.15 +biganswer.big. IN A 10.10.22.16 +biganswer.big. IN A 10.10.22.17 +biganswer.big. IN A 10.10.22.18 +biganswer.big. IN A 10.10.22.19 +biganswer.big. IN A 10.10.22.20 +biganswer.big. IN A 10.10.22.21 +biganswer.big. IN A 10.10.22.22 +biganswer.big. IN A 10.10.22.23 +biganswer.big. IN A 10.10.22.24 +biganswer.big. IN A 10.10.22.25 +biganswer.big. IN A 10.10.22.26 +biganswer.big. IN A 10.10.22.27 +biganswer.big. IN A 10.10.22.28 +biganswer.big. IN A 10.10.22.29 +biganswer.big. IN A 10.10.22.30 +biganswer.big. IN A 10.10.22.31 +biganswer.big. IN A 10.10.22.32 +biganswer.big. IN A 10.10.22.33 +biganswer.big. IN A 10.10.22.34 +biganswer.big. IN A 10.10.22.35 +biganswer.big. IN A 10.10.22.36 +biganswer.big. IN A 10.10.22.37 +biganswer.big. IN A 10.10.22.38 +biganswer.big. IN A 10.10.22.39 +biganswer.big. IN A 10.10.22.40 +biganswer.big. IN A 10.10.22.41 +biganswer.big. IN A 10.10.22.42 +biganswer.big. IN A 10.10.22.43 +biganswer.big. IN A 10.10.22.44 +biganswer.big. IN A 10.10.22.45 +biganswer.big. IN A 10.10.22.46 +biganswer.big. IN A 10.10.22.47 +biganswer.big. IN A 10.10.22.48 +biganswer.big. IN A 10.10.22.49 +biganswer.big. IN A 10.10.22.50 +biganswer.big. IN A 10.10.23.1 +biganswer.big. IN A 10.10.23.2 +biganswer.big. IN A 10.10.23.3 +biganswer.big. IN A 10.10.23.4 +biganswer.big. IN A 10.10.23.5 +biganswer.big. IN A 10.10.23.6 +biganswer.big. IN A 10.10.23.7 +biganswer.big. IN A 10.10.23.8 +biganswer.big. IN A 10.10.23.9 +biganswer.big. IN A 10.10.23.10 +biganswer.big. IN A 10.10.23.11 +biganswer.big. IN A 10.10.23.12 +biganswer.big. IN A 10.10.23.13 +biganswer.big. IN A 10.10.23.14 +biganswer.big. IN A 10.10.23.15 +biganswer.big. IN A 10.10.23.16 +biganswer.big. IN A 10.10.23.17 +biganswer.big. IN A 10.10.23.18 +biganswer.big. IN A 10.10.23.19 +biganswer.big. IN A 10.10.23.20 +biganswer.big. IN A 10.10.23.21 +biganswer.big. IN A 10.10.23.22 +biganswer.big. IN A 10.10.23.23 +biganswer.big. IN A 10.10.23.24 +biganswer.big. IN A 10.10.23.25 +biganswer.big. IN A 10.10.23.26 +biganswer.big. IN A 10.10.23.27 +biganswer.big. IN A 10.10.23.28 +biganswer.big. IN A 10.10.23.29 +biganswer.big. IN A 10.10.23.30 +biganswer.big. IN A 10.10.23.31 +biganswer.big. IN A 10.10.23.32 +biganswer.big. IN A 10.10.23.33 +biganswer.big. IN A 10.10.23.34 +biganswer.big. IN A 10.10.23.35 +biganswer.big. IN A 10.10.23.36 +biganswer.big. IN A 10.10.23.37 +biganswer.big. IN A 10.10.23.38 +biganswer.big. IN A 10.10.23.39 +biganswer.big. IN A 10.10.23.40 +biganswer.big. IN A 10.10.23.41 +biganswer.big. IN A 10.10.23.42 +biganswer.big. IN A 10.10.23.43 +biganswer.big. IN A 10.10.23.44 +biganswer.big. IN A 10.10.23.45 +biganswer.big. IN A 10.10.23.46 +biganswer.big. IN A 10.10.23.47 +biganswer.big. IN A 10.10.23.48 +biganswer.big. IN A 10.10.23.49 +biganswer.big. IN A 10.10.23.50 +biganswer.big. IN A 10.10.24.1 +biganswer.big. IN A 10.10.24.2 +biganswer.big. IN A 10.10.24.3 +biganswer.big. IN A 10.10.24.4 +biganswer.big. IN A 10.10.24.5 +biganswer.big. IN A 10.10.24.6 +biganswer.big. IN A 10.10.24.7 +biganswer.big. IN A 10.10.24.8 +biganswer.big. IN A 10.10.24.9 +biganswer.big. IN A 10.10.24.10 +biganswer.big. IN A 10.10.24.11 +biganswer.big. IN A 10.10.24.12 +biganswer.big. IN A 10.10.24.13 +biganswer.big. IN A 10.10.24.14 +biganswer.big. IN A 10.10.24.15 +biganswer.big. IN A 10.10.24.16 +biganswer.big. IN A 10.10.24.17 +biganswer.big. IN A 10.10.24.18 +biganswer.big. IN A 10.10.24.19 +biganswer.big. IN A 10.10.24.20 +biganswer.big. IN A 10.10.24.21 +biganswer.big. IN A 10.10.24.22 +biganswer.big. IN A 10.10.24.23 +biganswer.big. IN A 10.10.24.24 +biganswer.big. IN A 10.10.24.25 +biganswer.big. IN A 10.10.24.26 +biganswer.big. IN A 10.10.24.27 +biganswer.big. IN A 10.10.24.28 +biganswer.big. IN A 10.10.24.29 +biganswer.big. IN A 10.10.24.30 +biganswer.big. IN A 10.10.24.31 +biganswer.big. IN A 10.10.24.32 +biganswer.big. IN A 10.10.24.33 +biganswer.big. IN A 10.10.24.34 +biganswer.big. IN A 10.10.24.35 +biganswer.big. IN A 10.10.24.36 +biganswer.big. IN A 10.10.24.37 +biganswer.big. IN A 10.10.24.38 +biganswer.big. IN A 10.10.24.39 +biganswer.big. IN A 10.10.24.40 +biganswer.big. IN A 10.10.24.41 +biganswer.big. IN A 10.10.24.42 +biganswer.big. IN A 10.10.24.43 +biganswer.big. IN A 10.10.24.44 +biganswer.big. IN A 10.10.24.45 +biganswer.big. IN A 10.10.24.46 +biganswer.big. IN A 10.10.24.47 +biganswer.big. IN A 10.10.24.48 +biganswer.big. IN A 10.10.24.49 +biganswer.big. IN A 10.10.24.50 +biganswer.big. IN A 10.10.25.1 +biganswer.big. IN A 10.10.25.2 +biganswer.big. IN A 10.10.25.3 +biganswer.big. IN A 10.10.25.4 +biganswer.big. IN A 10.10.25.5 +biganswer.big. IN A 10.10.25.6 +biganswer.big. IN A 10.10.25.7 +biganswer.big. IN A 10.10.25.8 +biganswer.big. IN A 10.10.25.9 +biganswer.big. IN A 10.10.25.10 +biganswer.big. IN A 10.10.25.11 +biganswer.big. IN A 10.10.25.12 +biganswer.big. IN A 10.10.25.13 +biganswer.big. IN A 10.10.25.14 +biganswer.big. IN A 10.10.25.15 +biganswer.big. IN A 10.10.25.16 +biganswer.big. IN A 10.10.25.17 +biganswer.big. IN A 10.10.25.18 +biganswer.big. IN A 10.10.25.19 +biganswer.big. IN A 10.10.25.20 +biganswer.big. IN A 10.10.25.21 +biganswer.big. IN A 10.10.25.22 +biganswer.big. IN A 10.10.25.23 +biganswer.big. IN A 10.10.25.24 +biganswer.big. IN A 10.10.25.25 +biganswer.big. IN A 10.10.25.26 +biganswer.big. IN A 10.10.25.27 +biganswer.big. IN A 10.10.25.28 +biganswer.big. IN A 10.10.25.29 +biganswer.big. IN A 10.10.25.30 +biganswer.big. IN A 10.10.25.31 +biganswer.big. IN A 10.10.25.32 +biganswer.big. IN A 10.10.25.33 +biganswer.big. IN A 10.10.25.34 +biganswer.big. IN A 10.10.25.35 +biganswer.big. IN A 10.10.25.36 +biganswer.big. IN A 10.10.25.37 +biganswer.big. IN A 10.10.25.38 +biganswer.big. IN A 10.10.25.39 +biganswer.big. IN A 10.10.25.40 +biganswer.big. IN A 10.10.25.41 +biganswer.big. IN A 10.10.25.42 +biganswer.big. IN A 10.10.25.43 +biganswer.big. IN A 10.10.25.44 +biganswer.big. IN A 10.10.25.45 +biganswer.big. IN A 10.10.25.46 +biganswer.big. IN A 10.10.25.47 +biganswer.big. IN A 10.10.25.48 +biganswer.big. IN A 10.10.25.49 +biganswer.big. IN A 10.10.25.50 +biganswer.big. IN A 10.10.26.1 +biganswer.big. IN A 10.10.26.2 +biganswer.big. IN A 10.10.26.3 +biganswer.big. IN A 10.10.26.4 +biganswer.big. IN A 10.10.26.5 +biganswer.big. IN A 10.10.26.6 +biganswer.big. IN A 10.10.26.7 +biganswer.big. IN A 10.10.26.8 +biganswer.big. IN A 10.10.26.9 +biganswer.big. IN A 10.10.26.10 +biganswer.big. IN A 10.10.26.11 +biganswer.big. IN A 10.10.26.12 +biganswer.big. IN A 10.10.26.13 +biganswer.big. IN A 10.10.26.14 +biganswer.big. IN A 10.10.26.15 +biganswer.big. IN A 10.10.26.16 +biganswer.big. IN A 10.10.26.17 +biganswer.big. IN A 10.10.26.18 +biganswer.big. IN A 10.10.26.19 +biganswer.big. IN A 10.10.26.20 +biganswer.big. IN A 10.10.26.21 +biganswer.big. IN A 10.10.26.22 +biganswer.big. IN A 10.10.26.23 +biganswer.big. IN A 10.10.26.24 +biganswer.big. IN A 10.10.26.25 +biganswer.big. IN A 10.10.26.26 +biganswer.big. IN A 10.10.26.27 +biganswer.big. IN A 10.10.26.28 +biganswer.big. IN A 10.10.26.29 +biganswer.big. IN A 10.10.26.30 +biganswer.big. IN A 10.10.26.31 +biganswer.big. IN A 10.10.26.32 +biganswer.big. IN A 10.10.26.33 +biganswer.big. IN A 10.10.26.34 +biganswer.big. IN A 10.10.26.35 +biganswer.big. IN A 10.10.26.36 +biganswer.big. IN A 10.10.26.37 +biganswer.big. IN A 10.10.26.38 +biganswer.big. IN A 10.10.26.39 +biganswer.big. IN A 10.10.26.40 +biganswer.big. IN A 10.10.26.41 +biganswer.big. IN A 10.10.26.42 +biganswer.big. IN A 10.10.26.43 +biganswer.big. IN A 10.10.26.44 +biganswer.big. IN A 10.10.26.45 +biganswer.big. IN A 10.10.26.46 +biganswer.big. IN A 10.10.26.47 +biganswer.big. IN A 10.10.26.48 +biganswer.big. IN A 10.10.26.49 +biganswer.big. IN A 10.10.26.50 +biganswer.big. IN A 10.10.27.1 +biganswer.big. IN A 10.10.27.2 +biganswer.big. IN A 10.10.27.3 +biganswer.big. IN A 10.10.27.4 +biganswer.big. IN A 10.10.27.5 +biganswer.big. IN A 10.10.27.6 +biganswer.big. IN A 10.10.27.7 +biganswer.big. IN A 10.10.27.8 +biganswer.big. IN A 10.10.27.9 +biganswer.big. IN A 10.10.27.10 +biganswer.big. IN A 10.10.27.11 +biganswer.big. IN A 10.10.27.12 +biganswer.big. IN A 10.10.27.13 +biganswer.big. IN A 10.10.27.14 +biganswer.big. IN A 10.10.27.15 +biganswer.big. IN A 10.10.27.16 +biganswer.big. IN A 10.10.27.17 +biganswer.big. IN A 10.10.27.18 +biganswer.big. IN A 10.10.27.19 +biganswer.big. IN A 10.10.27.20 +biganswer.big. IN A 10.10.27.21 +biganswer.big. IN A 10.10.27.22 +biganswer.big. IN A 10.10.27.23 +biganswer.big. IN A 10.10.27.24 +biganswer.big. IN A 10.10.27.25 +biganswer.big. IN A 10.10.27.26 +biganswer.big. IN A 10.10.27.27 +biganswer.big. IN A 10.10.27.28 +biganswer.big. IN A 10.10.27.29 +biganswer.big. IN A 10.10.27.30 +biganswer.big. IN A 10.10.27.31 +biganswer.big. IN A 10.10.27.32 +biganswer.big. IN A 10.10.27.33 +biganswer.big. IN A 10.10.27.34 +biganswer.big. IN A 10.10.27.35 +biganswer.big. IN A 10.10.27.36 +biganswer.big. IN A 10.10.27.37 +biganswer.big. IN A 10.10.27.38 +biganswer.big. IN A 10.10.27.39 +biganswer.big. IN A 10.10.27.40 +biganswer.big. IN A 10.10.27.41 +biganswer.big. IN A 10.10.27.42 +biganswer.big. IN A 10.10.27.43 +biganswer.big. IN A 10.10.27.44 +biganswer.big. IN A 10.10.27.45 +biganswer.big. IN A 10.10.27.46 +biganswer.big. IN A 10.10.27.47 +biganswer.big. IN A 10.10.27.48 +biganswer.big. IN A 10.10.27.49 +biganswer.big. IN A 10.10.27.50 +biganswer.big. IN A 10.10.28.1 +biganswer.big. IN A 10.10.28.2 +biganswer.big. IN A 10.10.28.3 +biganswer.big. IN A 10.10.28.4 +biganswer.big. IN A 10.10.28.5 +biganswer.big. IN A 10.10.28.6 +biganswer.big. IN A 10.10.28.7 +biganswer.big. IN A 10.10.28.8 +biganswer.big. IN A 10.10.28.9 +biganswer.big. IN A 10.10.28.10 +biganswer.big. IN A 10.10.28.11 +biganswer.big. IN A 10.10.28.12 +biganswer.big. IN A 10.10.28.13 +biganswer.big. IN A 10.10.28.14 +biganswer.big. IN A 10.10.28.15 +biganswer.big. IN A 10.10.28.16 +biganswer.big. IN A 10.10.28.17 +biganswer.big. IN A 10.10.28.18 +biganswer.big. IN A 10.10.28.19 +biganswer.big. IN A 10.10.28.20 +biganswer.big. IN A 10.10.28.21 +biganswer.big. IN A 10.10.28.22 +biganswer.big. IN A 10.10.28.23 +biganswer.big. IN A 10.10.28.24 +biganswer.big. IN A 10.10.28.25 +biganswer.big. IN A 10.10.28.26 +biganswer.big. IN A 10.10.28.27 +biganswer.big. IN A 10.10.28.28 +biganswer.big. IN A 10.10.28.29 +biganswer.big. IN A 10.10.28.30 +biganswer.big. IN A 10.10.28.31 +biganswer.big. IN A 10.10.28.32 +biganswer.big. IN A 10.10.28.33 +biganswer.big. IN A 10.10.28.34 +biganswer.big. IN A 10.10.28.35 +biganswer.big. IN A 10.10.28.36 +biganswer.big. IN A 10.10.28.37 +biganswer.big. IN A 10.10.28.38 +biganswer.big. IN A 10.10.28.39 +biganswer.big. IN A 10.10.28.40 +biganswer.big. IN A 10.10.28.41 +biganswer.big. IN A 10.10.28.42 +biganswer.big. IN A 10.10.28.43 +biganswer.big. IN A 10.10.28.44 +biganswer.big. IN A 10.10.28.45 +biganswer.big. IN A 10.10.28.46 +biganswer.big. IN A 10.10.28.47 +biganswer.big. IN A 10.10.28.48 +biganswer.big. IN A 10.10.28.49 +biganswer.big. IN A 10.10.28.50 +biganswer.big. IN A 10.10.29.1 +biganswer.big. IN A 10.10.29.2 +biganswer.big. IN A 10.10.29.3 +biganswer.big. IN A 10.10.29.4 +biganswer.big. IN A 10.10.29.5 +biganswer.big. IN A 10.10.29.6 +biganswer.big. IN A 10.10.29.7 +biganswer.big. IN A 10.10.29.8 +biganswer.big. IN A 10.10.29.9 +biganswer.big. IN A 10.10.29.10 +biganswer.big. IN A 10.10.29.11 +biganswer.big. IN A 10.10.29.12 +biganswer.big. IN A 10.10.29.13 +biganswer.big. IN A 10.10.29.14 +biganswer.big. IN A 10.10.29.15 +biganswer.big. IN A 10.10.29.16 +biganswer.big. IN A 10.10.29.17 +biganswer.big. IN A 10.10.29.18 +biganswer.big. IN A 10.10.29.19 +biganswer.big. IN A 10.10.29.20 +biganswer.big. IN A 10.10.29.21 +biganswer.big. IN A 10.10.29.22 +biganswer.big. IN A 10.10.29.23 +biganswer.big. IN A 10.10.29.24 +biganswer.big. IN A 10.10.29.25 +biganswer.big. IN A 10.10.29.26 +biganswer.big. IN A 10.10.29.27 +biganswer.big. IN A 10.10.29.28 +biganswer.big. IN A 10.10.29.29 +biganswer.big. IN A 10.10.29.30 +biganswer.big. IN A 10.10.29.31 +biganswer.big. IN A 10.10.29.32 +biganswer.big. IN A 10.10.29.33 +biganswer.big. IN A 10.10.29.34 +biganswer.big. IN A 10.10.29.35 +biganswer.big. IN A 10.10.29.36 +biganswer.big. IN A 10.10.29.37 +biganswer.big. IN A 10.10.29.38 +biganswer.big. IN A 10.10.29.39 +biganswer.big. IN A 10.10.29.40 +biganswer.big. IN A 10.10.29.41 +biganswer.big. IN A 10.10.29.42 +biganswer.big. IN A 10.10.29.43 +biganswer.big. IN A 10.10.29.44 +biganswer.big. IN A 10.10.29.45 +biganswer.big. IN A 10.10.29.46 +biganswer.big. IN A 10.10.29.47 +biganswer.big. IN A 10.10.29.48 +biganswer.big. IN A 10.10.29.49 +biganswer.big. IN A 10.10.29.50 +biganswer.big. IN A 10.10.30.1 +biganswer.big. IN A 10.10.30.2 +biganswer.big. IN A 10.10.30.3 +biganswer.big. IN A 10.10.30.4 +biganswer.big. IN A 10.10.30.5 +biganswer.big. IN A 10.10.30.6 +biganswer.big. IN A 10.10.30.7 +biganswer.big. IN A 10.10.30.8 +biganswer.big. IN A 10.10.30.9 +biganswer.big. IN A 10.10.30.10 +biganswer.big. IN A 10.10.30.11 +biganswer.big. IN A 10.10.30.12 +biganswer.big. IN A 10.10.30.13 +biganswer.big. IN A 10.10.30.14 +biganswer.big. IN A 10.10.30.15 +biganswer.big. IN A 10.10.30.16 +biganswer.big. IN A 10.10.30.17 +biganswer.big. IN A 10.10.30.18 +biganswer.big. IN A 10.10.30.19 +biganswer.big. IN A 10.10.30.20 +biganswer.big. IN A 10.10.30.21 +biganswer.big. IN A 10.10.30.22 +biganswer.big. IN A 10.10.30.23 +biganswer.big. IN A 10.10.30.24 +biganswer.big. IN A 10.10.30.25 +biganswer.big. IN A 10.10.30.26 +biganswer.big. IN A 10.10.30.27 +biganswer.big. IN A 10.10.30.28 +biganswer.big. IN A 10.10.30.29 +biganswer.big. IN A 10.10.30.30 +biganswer.big. IN A 10.10.30.31 +biganswer.big. IN A 10.10.30.32 +biganswer.big. IN A 10.10.30.33 +biganswer.big. IN A 10.10.30.34 +biganswer.big. IN A 10.10.30.35 +biganswer.big. IN A 10.10.30.36 +biganswer.big. IN A 10.10.30.37 +biganswer.big. IN A 10.10.30.38 +biganswer.big. IN A 10.10.30.39 +biganswer.big. IN A 10.10.30.40 +biganswer.big. IN A 10.10.30.41 +biganswer.big. IN A 10.10.30.42 +biganswer.big. IN A 10.10.30.43 +biganswer.big. IN A 10.10.30.44 +biganswer.big. IN A 10.10.30.45 +biganswer.big. IN A 10.10.30.46 +biganswer.big. IN A 10.10.30.47 +biganswer.big. IN A 10.10.30.48 +biganswer.big. IN A 10.10.30.49 +biganswer.big. IN A 10.10.30.50 +biganswer.big. IN A 10.10.31.1 +biganswer.big. IN A 10.10.31.2 +biganswer.big. IN A 10.10.31.3 +biganswer.big. IN A 10.10.31.4 +biganswer.big. IN A 10.10.31.5 +biganswer.big. IN A 10.10.31.6 +biganswer.big. IN A 10.10.31.7 +biganswer.big. IN A 10.10.31.8 +biganswer.big. IN A 10.10.31.9 +biganswer.big. IN A 10.10.31.10 +biganswer.big. IN A 10.10.31.11 +biganswer.big. IN A 10.10.31.12 +biganswer.big. IN A 10.10.31.13 +biganswer.big. IN A 10.10.31.14 +biganswer.big. IN A 10.10.31.15 +biganswer.big. IN A 10.10.31.16 +biganswer.big. IN A 10.10.31.17 +biganswer.big. IN A 10.10.31.18 +biganswer.big. IN A 10.10.31.19 +biganswer.big. IN A 10.10.31.20 +biganswer.big. IN A 10.10.31.21 +biganswer.big. IN A 10.10.31.22 +biganswer.big. IN A 10.10.31.23 +biganswer.big. IN A 10.10.31.24 +biganswer.big. IN A 10.10.31.25 +biganswer.big. IN A 10.10.31.26 +biganswer.big. IN A 10.10.31.27 +biganswer.big. IN A 10.10.31.28 +biganswer.big. IN A 10.10.31.29 +biganswer.big. IN A 10.10.31.30 +biganswer.big. IN A 10.10.31.31 +biganswer.big. IN A 10.10.31.32 +biganswer.big. IN A 10.10.31.33 +biganswer.big. IN A 10.10.31.34 +biganswer.big. IN A 10.10.31.35 +biganswer.big. IN A 10.10.31.36 +biganswer.big. IN A 10.10.31.37 +biganswer.big. IN A 10.10.31.38 +biganswer.big. IN A 10.10.31.39 +biganswer.big. IN A 10.10.31.40 +biganswer.big. IN A 10.10.31.41 +biganswer.big. IN A 10.10.31.42 +biganswer.big. IN A 10.10.31.43 +biganswer.big. IN A 10.10.31.44 +biganswer.big. IN A 10.10.31.45 +biganswer.big. IN A 10.10.31.46 +biganswer.big. IN A 10.10.31.47 +biganswer.big. IN A 10.10.31.48 +biganswer.big. IN A 10.10.31.49 +biganswer.big. IN A 10.10.31.50 +biganswer.big. IN A 10.10.32.1 +biganswer.big. IN A 10.10.32.2 +biganswer.big. IN A 10.10.32.3 +biganswer.big. IN A 10.10.32.4 +biganswer.big. IN A 10.10.32.5 +biganswer.big. IN A 10.10.32.6 +biganswer.big. IN A 10.10.32.7 +biganswer.big. IN A 10.10.32.8 +biganswer.big. IN A 10.10.32.9 +biganswer.big. IN A 10.10.32.10 +biganswer.big. IN A 10.10.32.11 +biganswer.big. IN A 10.10.32.12 +biganswer.big. IN A 10.10.32.13 +biganswer.big. IN A 10.10.32.14 +biganswer.big. IN A 10.10.32.15 +biganswer.big. IN A 10.10.32.16 +biganswer.big. IN A 10.10.32.17 +biganswer.big. IN A 10.10.32.18 +biganswer.big. IN A 10.10.32.19 +biganswer.big. IN A 10.10.32.20 +biganswer.big. IN A 10.10.32.21 +biganswer.big. IN A 10.10.32.22 +biganswer.big. IN A 10.10.32.23 +biganswer.big. IN A 10.10.32.24 +biganswer.big. IN A 10.10.32.25 +biganswer.big. IN A 10.10.32.26 +biganswer.big. IN A 10.10.32.27 +biganswer.big. IN A 10.10.32.28 +biganswer.big. IN A 10.10.32.29 +biganswer.big. IN A 10.10.32.30 +biganswer.big. IN A 10.10.32.31 +biganswer.big. IN A 10.10.32.32 +biganswer.big. IN A 10.10.32.33 +biganswer.big. IN A 10.10.32.34 +biganswer.big. IN A 10.10.32.35 +biganswer.big. IN A 10.10.32.36 +biganswer.big. IN A 10.10.32.37 +biganswer.big. IN A 10.10.32.38 +biganswer.big. IN A 10.10.32.39 +biganswer.big. IN A 10.10.32.40 +biganswer.big. IN A 10.10.32.41 +biganswer.big. IN A 10.10.32.42 +biganswer.big. IN A 10.10.32.43 +biganswer.big. IN A 10.10.32.44 +biganswer.big. IN A 10.10.32.45 +biganswer.big. IN A 10.10.32.46 +biganswer.big. IN A 10.10.32.47 +biganswer.big. IN A 10.10.32.48 +biganswer.big. IN A 10.10.32.49 +biganswer.big. IN A 10.10.32.50 +biganswer.big. IN A 10.10.33.1 +biganswer.big. IN A 10.10.33.2 +biganswer.big. IN A 10.10.33.3 +biganswer.big. IN A 10.10.33.4 +biganswer.big. IN A 10.10.33.5 +biganswer.big. IN A 10.10.33.6 +biganswer.big. IN A 10.10.33.7 +biganswer.big. IN A 10.10.33.8 +biganswer.big. IN A 10.10.33.9 +biganswer.big. IN A 10.10.33.10 +biganswer.big. IN A 10.10.33.11 +biganswer.big. IN A 10.10.33.12 +biganswer.big. IN A 10.10.33.13 +biganswer.big. IN A 10.10.33.14 +biganswer.big. IN A 10.10.33.15 +biganswer.big. IN A 10.10.33.16 +biganswer.big. IN A 10.10.33.17 +biganswer.big. IN A 10.10.33.18 +biganswer.big. IN A 10.10.33.19 +biganswer.big. IN A 10.10.33.20 +biganswer.big. IN A 10.10.33.21 +biganswer.big. IN A 10.10.33.22 +biganswer.big. IN A 10.10.33.23 +biganswer.big. IN A 10.10.33.24 +biganswer.big. IN A 10.10.33.25 +biganswer.big. IN A 10.10.33.26 +biganswer.big. IN A 10.10.33.27 +biganswer.big. IN A 10.10.33.28 +biganswer.big. IN A 10.10.33.29 +biganswer.big. IN A 10.10.33.30 +biganswer.big. IN A 10.10.33.31 +biganswer.big. IN A 10.10.33.32 +biganswer.big. IN A 10.10.33.33 +biganswer.big. IN A 10.10.33.34 +biganswer.big. IN A 10.10.33.35 +biganswer.big. IN A 10.10.33.36 +biganswer.big. IN A 10.10.33.37 +biganswer.big. IN A 10.10.33.38 +biganswer.big. IN A 10.10.33.39 +biganswer.big. IN A 10.10.33.40 +biganswer.big. IN A 10.10.33.41 +biganswer.big. IN A 10.10.33.42 +biganswer.big. IN A 10.10.33.43 +biganswer.big. IN A 10.10.33.44 +biganswer.big. IN A 10.10.33.45 +biganswer.big. IN A 10.10.33.46 +biganswer.big. IN A 10.10.33.47 +biganswer.big. IN A 10.10.33.48 +biganswer.big. IN A 10.10.33.49 +biganswer.big. IN A 10.10.33.50 +biganswer.big. IN A 10.10.34.1 +biganswer.big. IN A 10.10.34.2 +biganswer.big. IN A 10.10.34.3 +biganswer.big. IN A 10.10.34.4 +biganswer.big. IN A 10.10.34.5 +biganswer.big. IN A 10.10.34.6 +biganswer.big. IN A 10.10.34.7 +biganswer.big. IN A 10.10.34.8 +biganswer.big. IN A 10.10.34.9 +biganswer.big. IN A 10.10.34.10 +biganswer.big. IN A 10.10.34.11 +biganswer.big. IN A 10.10.34.12 +biganswer.big. IN A 10.10.34.13 +biganswer.big. IN A 10.10.34.14 +biganswer.big. IN A 10.10.34.15 +biganswer.big. IN A 10.10.34.16 +biganswer.big. IN A 10.10.34.17 +biganswer.big. IN A 10.10.34.18 +biganswer.big. IN A 10.10.34.19 +biganswer.big. IN A 10.10.34.20 +biganswer.big. IN A 10.10.34.21 +biganswer.big. IN A 10.10.34.22 +biganswer.big. IN A 10.10.34.23 +biganswer.big. IN A 10.10.34.24 +biganswer.big. IN A 10.10.34.25 +biganswer.big. IN A 10.10.34.26 +biganswer.big. IN A 10.10.34.27 +biganswer.big. IN A 10.10.34.28 +biganswer.big. IN A 10.10.34.29 +biganswer.big. IN A 10.10.34.30 +biganswer.big. IN A 10.10.34.31 +biganswer.big. IN A 10.10.34.32 +biganswer.big. IN A 10.10.34.33 +biganswer.big. IN A 10.10.34.34 +biganswer.big. IN A 10.10.34.35 +biganswer.big. IN A 10.10.34.36 +biganswer.big. IN A 10.10.34.37 +biganswer.big. IN A 10.10.34.38 +biganswer.big. IN A 10.10.34.39 +biganswer.big. IN A 10.10.34.40 +biganswer.big. IN A 10.10.34.41 +biganswer.big. IN A 10.10.34.42 +biganswer.big. IN A 10.10.34.43 +biganswer.big. IN A 10.10.34.44 +biganswer.big. IN A 10.10.34.45 +biganswer.big. IN A 10.10.34.46 +biganswer.big. IN A 10.10.34.47 +biganswer.big. IN A 10.10.34.48 +biganswer.big. IN A 10.10.34.49 +biganswer.big. IN A 10.10.34.50 +biganswer.big. IN A 10.10.35.1 +biganswer.big. IN A 10.10.35.2 +biganswer.big. IN A 10.10.35.3 +biganswer.big. IN A 10.10.35.4 +biganswer.big. IN A 10.10.35.5 +biganswer.big. IN A 10.10.35.6 +biganswer.big. IN A 10.10.35.7 +biganswer.big. IN A 10.10.35.8 +biganswer.big. IN A 10.10.35.9 +biganswer.big. IN A 10.10.35.10 +biganswer.big. IN A 10.10.35.11 +biganswer.big. IN A 10.10.35.12 +biganswer.big. IN A 10.10.35.13 +biganswer.big. IN A 10.10.35.14 +biganswer.big. IN A 10.10.35.15 +biganswer.big. IN A 10.10.35.16 +biganswer.big. IN A 10.10.35.17 +biganswer.big. IN A 10.10.35.18 +biganswer.big. IN A 10.10.35.19 +biganswer.big. IN A 10.10.35.20 +biganswer.big. IN A 10.10.35.21 +biganswer.big. IN A 10.10.35.22 +biganswer.big. IN A 10.10.35.23 +biganswer.big. IN A 10.10.35.24 +biganswer.big. IN A 10.10.35.25 +biganswer.big. IN A 10.10.35.26 +biganswer.big. IN A 10.10.35.27 +biganswer.big. IN A 10.10.35.28 +biganswer.big. IN A 10.10.35.29 +biganswer.big. IN A 10.10.35.30 +biganswer.big. IN A 10.10.35.31 +biganswer.big. IN A 10.10.35.32 +biganswer.big. IN A 10.10.35.33 +biganswer.big. IN A 10.10.35.34 +biganswer.big. IN A 10.10.35.35 +biganswer.big. IN A 10.10.35.36 +biganswer.big. IN A 10.10.35.37 +biganswer.big. IN A 10.10.35.38 +biganswer.big. IN A 10.10.35.39 +biganswer.big. IN A 10.10.35.40 +biganswer.big. IN A 10.10.35.41 +biganswer.big. IN A 10.10.35.42 +biganswer.big. IN A 10.10.35.43 +biganswer.big. IN A 10.10.35.44 +biganswer.big. IN A 10.10.35.45 +biganswer.big. IN A 10.10.35.46 +biganswer.big. IN A 10.10.35.47 +biganswer.big. IN A 10.10.35.48 +biganswer.big. IN A 10.10.35.49 +biganswer.big. IN A 10.10.35.50 +biganswer.big. IN A 10.10.36.1 +biganswer.big. IN A 10.10.36.2 +biganswer.big. IN A 10.10.36.3 +biganswer.big. IN A 10.10.36.4 +biganswer.big. IN A 10.10.36.5 +biganswer.big. IN A 10.10.36.6 +biganswer.big. IN A 10.10.36.7 +biganswer.big. IN A 10.10.36.8 +biganswer.big. IN A 10.10.36.9 +biganswer.big. IN A 10.10.36.10 +biganswer.big. IN A 10.10.36.11 +biganswer.big. IN A 10.10.36.12 +biganswer.big. IN A 10.10.36.13 +biganswer.big. IN A 10.10.36.14 +biganswer.big. IN A 10.10.36.15 +biganswer.big. IN A 10.10.36.16 +biganswer.big. IN A 10.10.36.17 +biganswer.big. IN A 10.10.36.18 +biganswer.big. IN A 10.10.36.19 +biganswer.big. IN A 10.10.36.20 +biganswer.big. IN A 10.10.36.21 +biganswer.big. IN A 10.10.36.22 +biganswer.big. IN A 10.10.36.23 +biganswer.big. IN A 10.10.36.24 +biganswer.big. IN A 10.10.36.25 +biganswer.big. IN A 10.10.36.26 +biganswer.big. IN A 10.10.36.27 +biganswer.big. IN A 10.10.36.28 +biganswer.big. IN A 10.10.36.29 +biganswer.big. IN A 10.10.36.30 +biganswer.big. IN A 10.10.36.31 +biganswer.big. IN A 10.10.36.32 +biganswer.big. IN A 10.10.36.33 +biganswer.big. IN A 10.10.36.34 +biganswer.big. IN A 10.10.36.35 +biganswer.big. IN A 10.10.36.36 +biganswer.big. IN A 10.10.36.37 +biganswer.big. IN A 10.10.36.38 +biganswer.big. IN A 10.10.36.39 +biganswer.big. IN A 10.10.36.40 +biganswer.big. IN A 10.10.36.41 +biganswer.big. IN A 10.10.36.42 +biganswer.big. IN A 10.10.36.43 +biganswer.big. IN A 10.10.36.44 +biganswer.big. IN A 10.10.36.45 +biganswer.big. IN A 10.10.36.46 +biganswer.big. IN A 10.10.36.47 +biganswer.big. IN A 10.10.36.48 +biganswer.big. IN A 10.10.36.49 +biganswer.big. IN A 10.10.36.50 +biganswer.big. IN A 10.10.37.1 +biganswer.big. IN A 10.10.37.2 +biganswer.big. IN A 10.10.37.3 +biganswer.big. IN A 10.10.37.4 +biganswer.big. IN A 10.10.37.5 +biganswer.big. IN A 10.10.37.6 +biganswer.big. IN A 10.10.37.7 +biganswer.big. IN A 10.10.37.8 +biganswer.big. IN A 10.10.37.9 +biganswer.big. IN A 10.10.37.10 +biganswer.big. IN A 10.10.37.11 +biganswer.big. IN A 10.10.37.12 +biganswer.big. IN A 10.10.37.13 +biganswer.big. IN A 10.10.37.14 +biganswer.big. IN A 10.10.37.15 +biganswer.big. IN A 10.10.37.16 +biganswer.big. IN A 10.10.37.17 +biganswer.big. IN A 10.10.37.18 +biganswer.big. IN A 10.10.37.19 +biganswer.big. IN A 10.10.37.20 +biganswer.big. IN A 10.10.37.21 +biganswer.big. IN A 10.10.37.22 +biganswer.big. IN A 10.10.37.23 +biganswer.big. IN A 10.10.37.24 +biganswer.big. IN A 10.10.37.25 +biganswer.big. IN A 10.10.37.26 +biganswer.big. IN A 10.10.37.27 +biganswer.big. IN A 10.10.37.28 +biganswer.big. IN A 10.10.37.29 +biganswer.big. IN A 10.10.37.30 +biganswer.big. IN A 10.10.37.31 +biganswer.big. IN A 10.10.37.32 +biganswer.big. IN A 10.10.37.33 +biganswer.big. IN A 10.10.37.34 +biganswer.big. IN A 10.10.37.35 +biganswer.big. IN A 10.10.37.36 +biganswer.big. IN A 10.10.37.37 +biganswer.big. IN A 10.10.37.38 +biganswer.big. IN A 10.10.37.39 +biganswer.big. IN A 10.10.37.40 +biganswer.big. IN A 10.10.37.41 +biganswer.big. IN A 10.10.37.42 +biganswer.big. IN A 10.10.37.43 +biganswer.big. IN A 10.10.37.44 +biganswer.big. IN A 10.10.37.45 +biganswer.big. IN A 10.10.37.46 +biganswer.big. IN A 10.10.37.47 +biganswer.big. IN A 10.10.37.48 +biganswer.big. IN A 10.10.37.49 +biganswer.big. IN A 10.10.37.50 +biganswer.big. IN A 10.10.38.1 +biganswer.big. IN A 10.10.38.2 +biganswer.big. IN A 10.10.38.3 +biganswer.big. IN A 10.10.38.4 +biganswer.big. IN A 10.10.38.5 +biganswer.big. IN A 10.10.38.6 +biganswer.big. IN A 10.10.38.7 +biganswer.big. IN A 10.10.38.8 +biganswer.big. IN A 10.10.38.9 +biganswer.big. IN A 10.10.38.10 +biganswer.big. IN A 10.10.38.11 +biganswer.big. IN A 10.10.38.12 +biganswer.big. IN A 10.10.38.13 +biganswer.big. IN A 10.10.38.14 +biganswer.big. IN A 10.10.38.15 +biganswer.big. IN A 10.10.38.16 +biganswer.big. IN A 10.10.38.17 +biganswer.big. IN A 10.10.38.18 +biganswer.big. IN A 10.10.38.19 +biganswer.big. IN A 10.10.38.20 +biganswer.big. IN A 10.10.38.21 +biganswer.big. IN A 10.10.38.22 +biganswer.big. IN A 10.10.38.23 +biganswer.big. IN A 10.10.38.24 +biganswer.big. IN A 10.10.38.25 +biganswer.big. IN A 10.10.38.26 +biganswer.big. IN A 10.10.38.27 +biganswer.big. IN A 10.10.38.28 +biganswer.big. IN A 10.10.38.29 +biganswer.big. IN A 10.10.38.30 +biganswer.big. IN A 10.10.38.31 +biganswer.big. IN A 10.10.38.32 +biganswer.big. IN A 10.10.38.33 +biganswer.big. IN A 10.10.38.34 +biganswer.big. IN A 10.10.38.35 +biganswer.big. IN A 10.10.38.36 +biganswer.big. IN A 10.10.38.37 +biganswer.big. IN A 10.10.38.38 +biganswer.big. IN A 10.10.38.39 +biganswer.big. IN A 10.10.38.40 +biganswer.big. IN A 10.10.38.41 +biganswer.big. IN A 10.10.38.42 +biganswer.big. IN A 10.10.38.43 +biganswer.big. IN A 10.10.38.44 +biganswer.big. IN A 10.10.38.45 +biganswer.big. IN A 10.10.38.46 +biganswer.big. IN A 10.10.38.47 +biganswer.big. IN A 10.10.38.48 +biganswer.big. IN A 10.10.38.49 +biganswer.big. IN A 10.10.38.50 +biganswer.big. IN A 10.10.39.1 +biganswer.big. IN A 10.10.39.2 +biganswer.big. IN A 10.10.39.3 +biganswer.big. IN A 10.10.39.4 +biganswer.big. IN A 10.10.39.5 +biganswer.big. IN A 10.10.39.6 +biganswer.big. IN A 10.10.39.7 +biganswer.big. IN A 10.10.39.8 +biganswer.big. IN A 10.10.39.9 +biganswer.big. IN A 10.10.39.10 +biganswer.big. IN A 10.10.39.11 +biganswer.big. IN A 10.10.39.12 +biganswer.big. IN A 10.10.39.13 +biganswer.big. IN A 10.10.39.14 +biganswer.big. IN A 10.10.39.15 +biganswer.big. IN A 10.10.39.16 +biganswer.big. IN A 10.10.39.17 +biganswer.big. IN A 10.10.39.18 +biganswer.big. IN A 10.10.39.19 +biganswer.big. IN A 10.10.39.20 +biganswer.big. IN A 10.10.39.21 +biganswer.big. IN A 10.10.39.22 +biganswer.big. IN A 10.10.39.23 +biganswer.big. IN A 10.10.39.24 +biganswer.big. IN A 10.10.39.25 +biganswer.big. IN A 10.10.39.26 +biganswer.big. IN A 10.10.39.27 +biganswer.big. IN A 10.10.39.28 +biganswer.big. IN A 10.10.39.29 +biganswer.big. IN A 10.10.39.30 +biganswer.big. IN A 10.10.39.31 +biganswer.big. IN A 10.10.39.32 +biganswer.big. IN A 10.10.39.33 +biganswer.big. IN A 10.10.39.34 +biganswer.big. IN A 10.10.39.35 +biganswer.big. IN A 10.10.39.36 +biganswer.big. IN A 10.10.39.37 +biganswer.big. IN A 10.10.39.38 +biganswer.big. IN A 10.10.39.39 +biganswer.big. IN A 10.10.39.40 +biganswer.big. IN A 10.10.39.41 +biganswer.big. IN A 10.10.39.42 +biganswer.big. IN A 10.10.39.43 +biganswer.big. IN A 10.10.39.44 +biganswer.big. IN A 10.10.39.45 +biganswer.big. IN A 10.10.39.46 +biganswer.big. IN A 10.10.39.47 +biganswer.big. IN A 10.10.39.48 +biganswer.big. IN A 10.10.39.49 +biganswer.big. IN A 10.10.39.50 +biganswer.big. IN A 10.10.40.1 +biganswer.big. IN A 10.10.40.2 +biganswer.big. IN A 10.10.40.3 +biganswer.big. IN A 10.10.40.4 +biganswer.big. IN A 10.10.40.5 +biganswer.big. IN A 10.10.40.6 +biganswer.big. IN A 10.10.40.7 +biganswer.big. IN A 10.10.40.8 +biganswer.big. IN A 10.10.40.9 +biganswer.big. IN A 10.10.40.10 +biganswer.big. IN A 10.10.40.11 +biganswer.big. IN A 10.10.40.12 +biganswer.big. IN A 10.10.40.13 +biganswer.big. IN A 10.10.40.14 +biganswer.big. IN A 10.10.40.15 +biganswer.big. IN A 10.10.40.16 +biganswer.big. IN A 10.10.40.17 +biganswer.big. IN A 10.10.40.18 +biganswer.big. IN A 10.10.40.19 +biganswer.big. IN A 10.10.40.20 +biganswer.big. IN A 10.10.40.21 +biganswer.big. IN A 10.10.40.22 +biganswer.big. IN A 10.10.40.23 +biganswer.big. IN A 10.10.40.24 +biganswer.big. IN A 10.10.40.25 +biganswer.big. IN A 10.10.40.26 +biganswer.big. IN A 10.10.40.27 +biganswer.big. IN A 10.10.40.28 +biganswer.big. IN A 10.10.40.29 +biganswer.big. IN A 10.10.40.30 +biganswer.big. IN A 10.10.40.31 +biganswer.big. IN A 10.10.40.32 +biganswer.big. IN A 10.10.40.33 +biganswer.big. IN A 10.10.40.34 +biganswer.big. IN A 10.10.40.35 +biganswer.big. IN A 10.10.40.36 +biganswer.big. IN A 10.10.40.37 +biganswer.big. IN A 10.10.40.38 +biganswer.big. IN A 10.10.40.39 +biganswer.big. IN A 10.10.40.40 +biganswer.big. IN A 10.10.40.41 +biganswer.big. IN A 10.10.40.42 +biganswer.big. IN A 10.10.40.43 +biganswer.big. IN A 10.10.40.44 +biganswer.big. IN A 10.10.40.45 +biganswer.big. IN A 10.10.40.46 +biganswer.big. IN A 10.10.40.47 +biganswer.big. IN A 10.10.40.48 +biganswer.big. IN A 10.10.40.49 +biganswer.big. IN A 10.10.40.50 +biganswer.big. IN A 10.10.41.1 +biganswer.big. IN A 10.10.41.2 +biganswer.big. IN A 10.10.41.3 +biganswer.big. IN A 10.10.41.4 +biganswer.big. IN A 10.10.41.5 +biganswer.big. IN A 10.10.41.6 +biganswer.big. IN A 10.10.41.7 +biganswer.big. IN A 10.10.41.8 +biganswer.big. IN A 10.10.41.9 +biganswer.big. IN A 10.10.41.10 +biganswer.big. IN A 10.10.41.11 +biganswer.big. IN A 10.10.41.12 +biganswer.big. IN A 10.10.41.13 +biganswer.big. IN A 10.10.41.14 +biganswer.big. IN A 10.10.41.15 +biganswer.big. IN A 10.10.41.16 +biganswer.big. IN A 10.10.41.17 +biganswer.big. IN A 10.10.41.18 +biganswer.big. IN A 10.10.41.19 +biganswer.big. IN A 10.10.41.20 +biganswer.big. IN A 10.10.41.21 +biganswer.big. IN A 10.10.41.22 +biganswer.big. IN A 10.10.41.23 +biganswer.big. IN A 10.10.41.24 +biganswer.big. IN A 10.10.41.25 +biganswer.big. IN A 10.10.41.26 +biganswer.big. IN A 10.10.41.27 +biganswer.big. IN A 10.10.41.28 +biganswer.big. IN A 10.10.41.29 +biganswer.big. IN A 10.10.41.30 +biganswer.big. IN A 10.10.41.31 +biganswer.big. IN A 10.10.41.32 +biganswer.big. IN A 10.10.41.33 +biganswer.big. IN A 10.10.41.34 +biganswer.big. IN A 10.10.41.35 +biganswer.big. IN A 10.10.41.36 +biganswer.big. IN A 10.10.41.37 +biganswer.big. IN A 10.10.41.38 +biganswer.big. IN A 10.10.41.39 +biganswer.big. IN A 10.10.41.40 +biganswer.big. IN A 10.10.41.41 +biganswer.big. IN A 10.10.41.42 +biganswer.big. IN A 10.10.41.43 +biganswer.big. IN A 10.10.41.44 +biganswer.big. IN A 10.10.41.45 +biganswer.big. IN A 10.10.41.46 +biganswer.big. IN A 10.10.41.47 +biganswer.big. IN A 10.10.41.48 +biganswer.big. IN A 10.10.41.49 +biganswer.big. IN A 10.10.41.50 +biganswer.big. IN A 10.10.42.1 +biganswer.big. IN A 10.10.42.2 +biganswer.big. IN A 10.10.42.3 +biganswer.big. IN A 10.10.42.4 +biganswer.big. IN A 10.10.42.5 +biganswer.big. IN A 10.10.42.6 +biganswer.big. IN A 10.10.42.7 +biganswer.big. IN A 10.10.42.8 +biganswer.big. IN A 10.10.42.9 +biganswer.big. IN A 10.10.42.10 +biganswer.big. IN A 10.10.42.11 +biganswer.big. IN A 10.10.42.12 +biganswer.big. IN A 10.10.42.13 +biganswer.big. IN A 10.10.42.14 +biganswer.big. IN A 10.10.42.15 +biganswer.big. IN A 10.10.42.16 +biganswer.big. IN A 10.10.42.17 +biganswer.big. IN A 10.10.42.18 +biganswer.big. IN A 10.10.42.19 +biganswer.big. IN A 10.10.42.20 +biganswer.big. IN A 10.10.42.21 +biganswer.big. IN A 10.10.42.22 +biganswer.big. IN A 10.10.42.23 +biganswer.big. IN A 10.10.42.24 +biganswer.big. IN A 10.10.42.25 +biganswer.big. IN A 10.10.42.26 +biganswer.big. IN A 10.10.42.27 +biganswer.big. IN A 10.10.42.28 +biganswer.big. IN A 10.10.42.29 +biganswer.big. IN A 10.10.42.30 +biganswer.big. IN A 10.10.42.31 +biganswer.big. IN A 10.10.42.32 +biganswer.big. IN A 10.10.42.33 +biganswer.big. IN A 10.10.42.34 +biganswer.big. IN A 10.10.42.35 +biganswer.big. IN A 10.10.42.36 +biganswer.big. IN A 10.10.42.37 +biganswer.big. IN A 10.10.42.38 +biganswer.big. IN A 10.10.42.39 +biganswer.big. IN A 10.10.42.40 +biganswer.big. IN A 10.10.42.41 +biganswer.big. IN A 10.10.42.42 +biganswer.big. IN A 10.10.42.43 +biganswer.big. IN A 10.10.42.44 +biganswer.big. IN A 10.10.42.45 +biganswer.big. IN A 10.10.42.46 +biganswer.big. IN A 10.10.42.47 +biganswer.big. IN A 10.10.42.48 +biganswer.big. IN A 10.10.42.49 +biganswer.big. IN A 10.10.42.50 +biganswer.big. IN A 10.10.43.1 +biganswer.big. IN A 10.10.43.2 +biganswer.big. IN A 10.10.43.3 +biganswer.big. IN A 10.10.43.4 +biganswer.big. IN A 10.10.43.5 +biganswer.big. IN A 10.10.43.6 +biganswer.big. IN A 10.10.43.7 +biganswer.big. IN A 10.10.43.8 +biganswer.big. IN A 10.10.43.9 +biganswer.big. IN A 10.10.43.10 +biganswer.big. IN A 10.10.43.11 +biganswer.big. IN A 10.10.43.12 +biganswer.big. IN A 10.10.43.13 +biganswer.big. IN A 10.10.43.14 +biganswer.big. IN A 10.10.43.15 +biganswer.big. IN A 10.10.43.16 +biganswer.big. IN A 10.10.43.17 +biganswer.big. IN A 10.10.43.18 +biganswer.big. IN A 10.10.43.19 +biganswer.big. IN A 10.10.43.20 +biganswer.big. IN A 10.10.43.21 +biganswer.big. IN A 10.10.43.22 +biganswer.big. IN A 10.10.43.23 +biganswer.big. IN A 10.10.43.24 +biganswer.big. IN A 10.10.43.25 +biganswer.big. IN A 10.10.43.26 +biganswer.big. IN A 10.10.43.27 +biganswer.big. IN A 10.10.43.28 +biganswer.big. IN A 10.10.43.29 +biganswer.big. IN A 10.10.43.30 +biganswer.big. IN A 10.10.43.31 +biganswer.big. IN A 10.10.43.32 +biganswer.big. IN A 10.10.43.33 +biganswer.big. IN A 10.10.43.34 +biganswer.big. IN A 10.10.43.35 +biganswer.big. IN A 10.10.43.36 +biganswer.big. IN A 10.10.43.37 +biganswer.big. IN A 10.10.43.38 +biganswer.big. IN A 10.10.43.39 +biganswer.big. IN A 10.10.43.40 +biganswer.big. IN A 10.10.43.41 +biganswer.big. IN A 10.10.43.42 +biganswer.big. IN A 10.10.43.43 +biganswer.big. IN A 10.10.43.44 +biganswer.big. IN A 10.10.43.45 +biganswer.big. IN A 10.10.43.46 +biganswer.big. IN A 10.10.43.47 +biganswer.big. IN A 10.10.43.48 +biganswer.big. IN A 10.10.43.49 +biganswer.big. IN A 10.10.43.50 +biganswer.big. IN A 10.10.44.1 +biganswer.big. IN A 10.10.44.2 +biganswer.big. IN A 10.10.44.3 +biganswer.big. IN A 10.10.44.4 +biganswer.big. IN A 10.10.44.5 +biganswer.big. IN A 10.10.44.6 +biganswer.big. IN A 10.10.44.7 +biganswer.big. IN A 10.10.44.8 +biganswer.big. IN A 10.10.44.9 +biganswer.big. IN A 10.10.44.10 +biganswer.big. IN A 10.10.44.11 +biganswer.big. IN A 10.10.44.12 +biganswer.big. IN A 10.10.44.13 +biganswer.big. IN A 10.10.44.14 +biganswer.big. IN A 10.10.44.15 +biganswer.big. IN A 10.10.44.16 +biganswer.big. IN A 10.10.44.17 +biganswer.big. IN A 10.10.44.18 +biganswer.big. IN A 10.10.44.19 +biganswer.big. IN A 10.10.44.20 +biganswer.big. IN A 10.10.44.21 +biganswer.big. IN A 10.10.44.22 +biganswer.big. IN A 10.10.44.23 +biganswer.big. IN A 10.10.44.24 +biganswer.big. IN A 10.10.44.25 +biganswer.big. IN A 10.10.44.26 +biganswer.big. IN A 10.10.44.27 +biganswer.big. IN A 10.10.44.28 +biganswer.big. IN A 10.10.44.29 +biganswer.big. IN A 10.10.44.30 +biganswer.big. IN A 10.10.44.31 +biganswer.big. IN A 10.10.44.32 +biganswer.big. IN A 10.10.44.33 +biganswer.big. IN A 10.10.44.34 +biganswer.big. IN A 10.10.44.35 +biganswer.big. IN A 10.10.44.36 +biganswer.big. IN A 10.10.44.37 +biganswer.big. IN A 10.10.44.38 +biganswer.big. IN A 10.10.44.39 +biganswer.big. IN A 10.10.44.40 +biganswer.big. IN A 10.10.44.41 +biganswer.big. IN A 10.10.44.42 +biganswer.big. IN A 10.10.44.43 +biganswer.big. IN A 10.10.44.44 +biganswer.big. IN A 10.10.44.45 +biganswer.big. IN A 10.10.44.46 +biganswer.big. IN A 10.10.44.47 +biganswer.big. IN A 10.10.44.48 +biganswer.big. IN A 10.10.44.49 +biganswer.big. IN A 10.10.44.50 +biganswer.big. IN A 10.10.45.1 +biganswer.big. IN A 10.10.45.2 +biganswer.big. IN A 10.10.45.3 +biganswer.big. IN A 10.10.45.4 +biganswer.big. IN A 10.10.45.5 +biganswer.big. IN A 10.10.45.6 +biganswer.big. IN A 10.10.45.7 +biganswer.big. IN A 10.10.45.8 +biganswer.big. IN A 10.10.45.9 +biganswer.big. IN A 10.10.45.10 +biganswer.big. IN A 10.10.45.11 +biganswer.big. IN A 10.10.45.12 +biganswer.big. IN A 10.10.45.13 +biganswer.big. IN A 10.10.45.14 +biganswer.big. IN A 10.10.45.15 +biganswer.big. IN A 10.10.45.16 +biganswer.big. IN A 10.10.45.17 +biganswer.big. IN A 10.10.45.18 +biganswer.big. IN A 10.10.45.19 +biganswer.big. IN A 10.10.45.20 +biganswer.big. IN A 10.10.45.21 +biganswer.big. IN A 10.10.45.22 +biganswer.big. IN A 10.10.45.23 +biganswer.big. IN A 10.10.45.24 +biganswer.big. IN A 10.10.45.25 +biganswer.big. IN A 10.10.45.26 +biganswer.big. IN A 10.10.45.27 +biganswer.big. IN A 10.10.45.28 +biganswer.big. IN A 10.10.45.29 +biganswer.big. IN A 10.10.45.30 +biganswer.big. IN A 10.10.45.31 +biganswer.big. IN A 10.10.45.32 +biganswer.big. IN A 10.10.45.33 +biganswer.big. IN A 10.10.45.34 +biganswer.big. IN A 10.10.45.35 +biganswer.big. IN A 10.10.45.36 +biganswer.big. IN A 10.10.45.37 +biganswer.big. IN A 10.10.45.38 +biganswer.big. IN A 10.10.45.39 +biganswer.big. IN A 10.10.45.40 +biganswer.big. IN A 10.10.45.41 +biganswer.big. IN A 10.10.45.42 +biganswer.big. IN A 10.10.45.43 +biganswer.big. IN A 10.10.45.44 +biganswer.big. IN A 10.10.45.45 +biganswer.big. IN A 10.10.45.46 +biganswer.big. IN A 10.10.45.47 +biganswer.big. IN A 10.10.45.48 +biganswer.big. IN A 10.10.45.49 +biganswer.big. IN A 10.10.45.50 +biganswer.big. IN A 10.10.46.1 +biganswer.big. IN A 10.10.46.2 +biganswer.big. IN A 10.10.46.3 +biganswer.big. IN A 10.10.46.4 +biganswer.big. IN A 10.10.46.5 +biganswer.big. IN A 10.10.46.6 +biganswer.big. IN A 10.10.46.7 +biganswer.big. IN A 10.10.46.8 +biganswer.big. IN A 10.10.46.9 +biganswer.big. IN A 10.10.46.10 +biganswer.big. IN A 10.10.46.11 +biganswer.big. IN A 10.10.46.12 +biganswer.big. IN A 10.10.46.13 +biganswer.big. IN A 10.10.46.14 +biganswer.big. IN A 10.10.46.15 +biganswer.big. IN A 10.10.46.16 +biganswer.big. IN A 10.10.46.17 +biganswer.big. IN A 10.10.46.18 +biganswer.big. IN A 10.10.46.19 +biganswer.big. IN A 10.10.46.20 +biganswer.big. IN A 10.10.46.21 +biganswer.big. IN A 10.10.46.22 +biganswer.big. IN A 10.10.46.23 +biganswer.big. IN A 10.10.46.24 +biganswer.big. IN A 10.10.46.25 +biganswer.big. IN A 10.10.46.26 +biganswer.big. IN A 10.10.46.27 +biganswer.big. IN A 10.10.46.28 +biganswer.big. IN A 10.10.46.29 +biganswer.big. IN A 10.10.46.30 +biganswer.big. IN A 10.10.46.31 +biganswer.big. IN A 10.10.46.32 +biganswer.big. IN A 10.10.46.33 +biganswer.big. IN A 10.10.46.34 +biganswer.big. IN A 10.10.46.35 +biganswer.big. IN A 10.10.46.36 +biganswer.big. IN A 10.10.46.37 +biganswer.big. IN A 10.10.46.38 +biganswer.big. IN A 10.10.46.39 +biganswer.big. IN A 10.10.46.40 +biganswer.big. IN A 10.10.46.41 +biganswer.big. IN A 10.10.46.42 +biganswer.big. IN A 10.10.46.43 +biganswer.big. IN A 10.10.46.44 +biganswer.big. IN A 10.10.46.45 +biganswer.big. IN A 10.10.46.46 +biganswer.big. IN A 10.10.46.47 +biganswer.big. IN A 10.10.46.48 +biganswer.big. IN A 10.10.46.49 +biganswer.big. IN A 10.10.46.50 +biganswer.big. IN A 10.10.47.1 +biganswer.big. IN A 10.10.47.2 +biganswer.big. IN A 10.10.47.3 +biganswer.big. IN A 10.10.47.4 +biganswer.big. IN A 10.10.47.5 +biganswer.big. IN A 10.10.47.6 +biganswer.big. IN A 10.10.47.7 +biganswer.big. IN A 10.10.47.8 +biganswer.big. IN A 10.10.47.9 +biganswer.big. IN A 10.10.47.10 +biganswer.big. IN A 10.10.47.11 +biganswer.big. IN A 10.10.47.12 +biganswer.big. IN A 10.10.47.13 +biganswer.big. IN A 10.10.47.14 +biganswer.big. IN A 10.10.47.15 +biganswer.big. IN A 10.10.47.16 +biganswer.big. IN A 10.10.47.17 +biganswer.big. IN A 10.10.47.18 +biganswer.big. IN A 10.10.47.19 +biganswer.big. IN A 10.10.47.20 +biganswer.big. IN A 10.10.47.21 +biganswer.big. IN A 10.10.47.22 +biganswer.big. IN A 10.10.47.23 +biganswer.big. IN A 10.10.47.24 +biganswer.big. IN A 10.10.47.25 +biganswer.big. IN A 10.10.47.26 +biganswer.big. IN A 10.10.47.27 +biganswer.big. IN A 10.10.47.28 +biganswer.big. IN A 10.10.47.29 +biganswer.big. IN A 10.10.47.30 +biganswer.big. IN A 10.10.47.31 +biganswer.big. IN A 10.10.47.32 +biganswer.big. IN A 10.10.47.33 +biganswer.big. IN A 10.10.47.34 +biganswer.big. IN A 10.10.47.35 +biganswer.big. IN A 10.10.47.36 +biganswer.big. IN A 10.10.47.37 +biganswer.big. IN A 10.10.47.38 +biganswer.big. IN A 10.10.47.39 +biganswer.big. IN A 10.10.47.40 +biganswer.big. IN A 10.10.47.41 +biganswer.big. IN A 10.10.47.42 +biganswer.big. IN A 10.10.47.43 +biganswer.big. IN A 10.10.47.44 +biganswer.big. IN A 10.10.47.45 +biganswer.big. IN A 10.10.47.46 +biganswer.big. IN A 10.10.47.47 +biganswer.big. IN A 10.10.47.48 +biganswer.big. IN A 10.10.47.49 +biganswer.big. IN A 10.10.47.50 +biganswer.big. IN A 10.10.48.1 +biganswer.big. IN A 10.10.48.2 +biganswer.big. IN A 10.10.48.3 +biganswer.big. IN A 10.10.48.4 +biganswer.big. IN A 10.10.48.5 +biganswer.big. IN A 10.10.48.6 +biganswer.big. IN A 10.10.48.7 +biganswer.big. IN A 10.10.48.8 +biganswer.big. IN A 10.10.48.9 +biganswer.big. IN A 10.10.48.10 +biganswer.big. IN A 10.10.48.11 +biganswer.big. IN A 10.10.48.12 +biganswer.big. IN A 10.10.48.13 +biganswer.big. IN A 10.10.48.14 +biganswer.big. IN A 10.10.48.15 +biganswer.big. IN A 10.10.48.16 +biganswer.big. IN A 10.10.48.17 +biganswer.big. IN A 10.10.48.18 +biganswer.big. IN A 10.10.48.19 +biganswer.big. IN A 10.10.48.20 +biganswer.big. IN A 10.10.48.21 +biganswer.big. IN A 10.10.48.22 +biganswer.big. IN A 10.10.48.23 +biganswer.big. IN A 10.10.48.24 +biganswer.big. IN A 10.10.48.25 +biganswer.big. IN A 10.10.48.26 +biganswer.big. IN A 10.10.48.27 +biganswer.big. IN A 10.10.48.28 +biganswer.big. IN A 10.10.48.29 +biganswer.big. IN A 10.10.48.30 +biganswer.big. IN A 10.10.48.31 +biganswer.big. IN A 10.10.48.32 +biganswer.big. IN A 10.10.48.33 +biganswer.big. IN A 10.10.48.34 +biganswer.big. IN A 10.10.48.35 +biganswer.big. IN A 10.10.48.36 +biganswer.big. IN A 10.10.48.37 +biganswer.big. IN A 10.10.48.38 +biganswer.big. IN A 10.10.48.39 +biganswer.big. IN A 10.10.48.40 +biganswer.big. IN A 10.10.48.41 +biganswer.big. IN A 10.10.48.42 +biganswer.big. IN A 10.10.48.43 +biganswer.big. IN A 10.10.48.44 +biganswer.big. IN A 10.10.48.45 +biganswer.big. IN A 10.10.48.46 +biganswer.big. IN A 10.10.48.47 +biganswer.big. IN A 10.10.48.48 +biganswer.big. IN A 10.10.48.49 +biganswer.big. IN A 10.10.48.50 +biganswer.big. IN A 10.10.49.1 +biganswer.big. IN A 10.10.49.2 +biganswer.big. IN A 10.10.49.3 +biganswer.big. IN A 10.10.49.4 +biganswer.big. IN A 10.10.49.5 +biganswer.big. IN A 10.10.49.6 +biganswer.big. IN A 10.10.49.7 +biganswer.big. IN A 10.10.49.8 +biganswer.big. IN A 10.10.49.9 +biganswer.big. IN A 10.10.49.10 +biganswer.big. IN A 10.10.49.11 +biganswer.big. IN A 10.10.49.12 +biganswer.big. IN A 10.10.49.13 +biganswer.big. IN A 10.10.49.14 +biganswer.big. IN A 10.10.49.15 +biganswer.big. IN A 10.10.49.16 +biganswer.big. IN A 10.10.49.17 +biganswer.big. IN A 10.10.49.18 +biganswer.big. IN A 10.10.49.19 +biganswer.big. IN A 10.10.49.20 +biganswer.big. IN A 10.10.49.21 +biganswer.big. IN A 10.10.49.22 +biganswer.big. IN A 10.10.49.23 +biganswer.big. IN A 10.10.49.24 +biganswer.big. IN A 10.10.49.25 +biganswer.big. IN A 10.10.49.26 +biganswer.big. IN A 10.10.49.27 +biganswer.big. IN A 10.10.49.28 +biganswer.big. IN A 10.10.49.29 +biganswer.big. IN A 10.10.49.30 +biganswer.big. IN A 10.10.49.31 +biganswer.big. IN A 10.10.49.32 +biganswer.big. IN A 10.10.49.33 +biganswer.big. IN A 10.10.49.34 +biganswer.big. IN A 10.10.49.35 +biganswer.big. IN A 10.10.49.36 +biganswer.big. IN A 10.10.49.37 +biganswer.big. IN A 10.10.49.38 +biganswer.big. IN A 10.10.49.39 +biganswer.big. IN A 10.10.49.40 +biganswer.big. IN A 10.10.49.41 +biganswer.big. IN A 10.10.49.42 +biganswer.big. IN A 10.10.49.43 +biganswer.big. IN A 10.10.49.44 +biganswer.big. IN A 10.10.49.45 +biganswer.big. IN A 10.10.49.46 +biganswer.big. IN A 10.10.49.47 +biganswer.big. IN A 10.10.49.48 +biganswer.big. IN A 10.10.49.49 +biganswer.big. IN A 10.10.49.50 +biganswer.big. IN A 10.10.50.1 +biganswer.big. IN A 10.10.50.2 +biganswer.big. IN A 10.10.50.3 +biganswer.big. IN A 10.10.50.4 +biganswer.big. IN A 10.10.50.5 +biganswer.big. IN A 10.10.50.6 +biganswer.big. IN A 10.10.50.7 +biganswer.big. IN A 10.10.50.8 +biganswer.big. IN A 10.10.50.9 +biganswer.big. IN A 10.10.50.10 +biganswer.big. IN A 10.10.50.11 +biganswer.big. IN A 10.10.50.12 +biganswer.big. IN A 10.10.50.13 +biganswer.big. IN A 10.10.50.14 +biganswer.big. IN A 10.10.50.15 +biganswer.big. IN A 10.10.50.16 +biganswer.big. IN A 10.10.50.17 +biganswer.big. IN A 10.10.50.18 +biganswer.big. IN A 10.10.50.19 +biganswer.big. IN A 10.10.50.20 +biganswer.big. IN A 10.10.50.21 +biganswer.big. IN A 10.10.50.22 +biganswer.big. IN A 10.10.50.23 +biganswer.big. IN A 10.10.50.24 +biganswer.big. IN A 10.10.50.25 +biganswer.big. IN A 10.10.50.26 +biganswer.big. IN A 10.10.50.27 +biganswer.big. IN A 10.10.50.28 +biganswer.big. IN A 10.10.50.29 +biganswer.big. IN A 10.10.50.30 +biganswer.big. IN A 10.10.50.31 +biganswer.big. IN A 10.10.50.32 +biganswer.big. IN A 10.10.50.33 +biganswer.big. IN A 10.10.50.34 +biganswer.big. IN A 10.10.50.35 +biganswer.big. IN A 10.10.50.36 +biganswer.big. IN A 10.10.50.37 +biganswer.big. IN A 10.10.50.38 +biganswer.big. IN A 10.10.50.39 +biganswer.big. IN A 10.10.50.40 +biganswer.big. IN A 10.10.50.41 +biganswer.big. IN A 10.10.50.42 +biganswer.big. IN A 10.10.50.43 +biganswer.big. IN A 10.10.50.44 +biganswer.big. IN A 10.10.50.45 +biganswer.big. IN A 10.10.50.46 +biganswer.big. IN A 10.10.50.47 +biganswer.big. IN A 10.10.50.48 +biganswer.big. IN A 10.10.50.49 +biganswer.big. 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 +manytypes.big. IN A 10.53.0.1 diff --git a/bin/tests/system/reclimit/ns1/named.conf.in b/bin/tests/system/reclimit/ns1/named.conf.in index 63cb706883..c345c28c43 100644 --- a/bin/tests/system/reclimit/ns1/named.conf.in +++ b/bin/tests/system/reclimit/ns1/named.conf.in @@ -22,6 +22,18 @@ options { listen-on-v6 { none; }; recursion no; dnssec-validation no; + max-records-per-type 0; + max-types-per-name 0; }; zone "." { type primary; file "root.db"; }; + +zone "big." { + type primary; + file "big.db"; +}; + +zone "signed." { + type primary; + file "signed.db.signed"; +}; diff --git a/bin/tests/system/reclimit/ns1/root.db b/bin/tests/system/reclimit/ns1/root.db index 412715cc64..7b7c119e0a 100644 --- a/bin/tests/system/reclimit/ns1/root.db +++ b/bin/tests/system/reclimit/ns1/root.db @@ -19,3 +19,9 @@ example.net. 60 IN NS direct.example.net. direct.example.net. 60 IN A 10.53.0.2 example.com. 60 IN NS direct.example.com. direct.example.com. 60 IN A 10.53.0.4 + +big. IN NS ns.big. +ns.big. 60 IN A 10.53.0.1 + +signed. IN NS ns.signed. +ns.signed. 60 IN A 10.53.0.1 diff --git a/bin/tests/system/reclimit/ns3/named5.conf.in b/bin/tests/system/reclimit/ns3/named5.conf.in new file mode 100644 index 0000000000..7cf0633a00 --- /dev/null +++ b/bin/tests/system/reclimit/ns3/named5.conf.in @@ -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 10; +}; + +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"; }; diff --git a/bin/tests/system/reclimit/ns3/named6.conf.in b/bin/tests/system/reclimit/ns3/named6.conf.in new file mode 100644 index 0000000000..e1607e275d --- /dev/null +++ b/bin/tests/system/reclimit/ns3/named6.conf.in @@ -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"; }; diff --git a/bin/tests/system/reclimit/setup.sh b/bin/tests/system/reclimit/setup.sh index 5b39cdf4c7..8ad0586a72 100644 --- a/bin/tests/system/reclimit/setup.sh +++ b/bin/tests/system/reclimit/setup.sh @@ -16,3 +16,8 @@ SYSTEMTESTTOP=.. copy_setports ns1/named.conf.in ns1/named.conf copy_setports ns3/named1.conf.in ns3/named.conf + +sed -e s/big[.]/signed./g <ns1/big.db >ns1/signed.db +$KEYGEN -K ns1 -q -a "$DEFAULT_ALGORITHM" -b "$DEFAULT_BITS" -f KSK signed >/dev/null 2>&1 +$KEYGEN -K ns1 -q -a "$DEFAULT_ALGORITHM" -b "$DEFAULT_BITS" signed >/dev/null 2>&1 +$SIGNER -K ns1 -S -f ns1/signed.db.signed -o signed ns1/signed.db >/dev/null diff --git a/bin/tests/system/reclimit/tests.sh b/bin/tests/system/reclimit/tests.sh index a20344555b..e9d7235a74 100644 --- a/bin/tests/system/reclimit/tests.sh +++ b/bin/tests/system/reclimit/tests.sh @@ -14,7 +14,9 @@ SYSTEMTESTTOP=.. . $SYSTEMTESTTOP/conf.sh -DIGOPTS="-p ${PORT}" +dig_with_opts() { + $DIG -p "${PORT}" +retries=0 "$@" +} status=0 n=0 @@ -25,6 +27,10 @@ ns3_reset() { $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p ${CONTROLPORT} flush | sed 's/^/I:ns3 /' } +ns3_flush() { + $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p ${CONTROLPORT} flush | sed 's/^/I:ns3 /' +} + ns3_sends_aaaa_queries() { if grep "started AAAA fetch" ns3/named.run >/dev/null; then return 0 @@ -65,12 +71,12 @@ echo_i "attempt excessive-depth lookup ($n)" ret=0 echo "1000" >ans2/ans.limit echo "1000" >ans4/ans.limit -$DIG $DIGOPTS @10.53.0.2 reset >/dev/null || ret=1 -$DIG $DIGOPTS @10.53.0.4 reset >/dev/null || ret=1 -$DIG $DIGOPTS @10.53.0.3 indirect1.example.org >dig.out.1.test$n || ret=1 +dig_with_opts @10.53.0.2 reset >/dev/null || ret=1 +dig_with_opts @10.53.0.4 reset >/dev/null || ret=1 +dig_with_opts @10.53.0.3 indirect1.example.org >dig.out.1.test$n || ret=1 grep "status: SERVFAIL" dig.out.1.test$n >/dev/null || ret=1 -$DIG $DIGOPTS +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 -$DIG $DIGOPTS +short @10.53.0.4 count txt >dig.out.4.test$n || ret=1 +dig_with_opts +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 +dig_with_opts +short @10.53.0.4 count txt >dig.out.4.test$n || ret=1 check_query_count dig.out.2.test$n dig.out.4.test$n 27 14 if [ $ret != 0 ]; then echo_i "failed"; fi status=$(expr $status + $ret) @@ -81,12 +87,12 @@ ret=0 echo "12" >ans2/ans.limit echo "12" >ans4/ans.limit ns3_reset ns3/named1.conf.in -$DIG $DIGOPTS @10.53.0.2 reset >/dev/null || ret=1 -$DIG $DIGOPTS @10.53.0.4 reset >/dev/null || ret=1 -$DIG $DIGOPTS @10.53.0.3 indirect2.example.org >dig.out.1.test$n || ret=1 +dig_with_opts @10.53.0.2 reset >/dev/null || ret=1 +dig_with_opts @10.53.0.4 reset >/dev/null || ret=1 +dig_with_opts @10.53.0.3 indirect2.example.org >dig.out.1.test$n || ret=1 grep "status: NOERROR" dig.out.1.test$n >/dev/null || ret=1 -$DIG $DIGOPTS +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 -$DIG $DIGOPTS +short @10.53.0.4 count txt >dig.out.4.test$n || ret=1 +dig_with_opts +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 +dig_with_opts +short @10.53.0.4 count txt >dig.out.4.test$n || ret=1 check_query_count dig.out.2.test$n dig.out.4.test$n 50 26 if [ $ret != 0 ]; then echo_i "failed"; fi status=$(expr $status + $ret) @@ -98,12 +104,12 @@ echo_i "attempt excessive-depth lookup ($n)" ret=0 echo "12" >ans2/ans.limit ns3_reset ns3/named2.conf.in -$DIG $DIGOPTS @10.53.0.2 reset >/dev/null || ret=1 -$DIG $DIGOPTS @10.53.0.4 reset >/dev/null || ret=1 -$DIG $DIGOPTS @10.53.0.3 indirect3.example.org >dig.out.1.test$n || ret=1 +dig_with_opts @10.53.0.2 reset >/dev/null || ret=1 +dig_with_opts @10.53.0.4 reset >/dev/null || ret=1 +dig_with_opts @10.53.0.3 indirect3.example.org >dig.out.1.test$n || ret=1 grep "status: SERVFAIL" dig.out.1.test$n >/dev/null || ret=1 -$DIG $DIGOPTS +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 -$DIG $DIGOPTS +short @10.53.0.4 count txt >dig.out.4.test$n || ret=1 +dig_with_opts +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 +dig_with_opts +short @10.53.0.4 count txt >dig.out.4.test$n || ret=1 check_query_count dig.out.2.test$n dig.out.4.test$n 13 7 if [ $ret != 0 ]; then echo_i "failed"; fi status=$(expr $status + $ret) @@ -114,12 +120,12 @@ ret=0 echo "5" >ans2/ans.limit echo "5" >ans4/ans.limit ns3_reset ns3/named2.conf.in -$DIG $DIGOPTS @10.53.0.2 reset >/dev/null || ret=1 -$DIG $DIGOPTS @10.53.0.4 reset >/dev/null || ret=1 -$DIG $DIGOPTS @10.53.0.3 indirect4.example.org >dig.out.1.test$n || ret=1 +dig_with_opts @10.53.0.2 reset >/dev/null || ret=1 +dig_with_opts @10.53.0.4 reset >/dev/null || ret=1 +dig_with_opts @10.53.0.3 indirect4.example.org >dig.out.1.test$n || ret=1 grep "status: NOERROR" dig.out.1.test$n >/dev/null || ret=1 -$DIG $DIGOPTS +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 -$DIG $DIGOPTS +short @10.53.0.4 count txt >dig.out.4.test$n || ret=1 +dig_with_opts +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 +dig_with_opts +short @10.53.0.4 count txt >dig.out.4.test$n || ret=1 check_query_count dig.out.2.test$n dig.out.4.test$n 22 12 if [ $ret != 0 ]; then echo_i "failed"; fi status=$(expr $status + $ret) @@ -132,14 +138,14 @@ ret=0 echo "13" >ans2/ans.limit echo "13" >ans4/ans.limit ns3_reset ns3/named3.conf.in -$DIG $DIGOPTS @10.53.0.2 reset >/dev/null || ret=1 -$DIG $DIGOPTS @10.53.0.4 reset >/dev/null || ret=1 -$DIG $DIGOPTS @10.53.0.3 indirect5.example.org >dig.out.1.test$n || ret=1 +dig_with_opts @10.53.0.2 reset >/dev/null || ret=1 +dig_with_opts @10.53.0.4 reset >/dev/null || ret=1 +dig_with_opts @10.53.0.3 indirect5.example.org >dig.out.1.test$n || ret=1 if ns3_sends_aaaa_queries; then grep "status: SERVFAIL" dig.out.1.test$n >/dev/null || ret=1 fi -$DIG $DIGOPTS +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 -$DIG $DIGOPTS +short @10.53.0.4 count txt >dig.out.4.test$n || ret=1 +dig_with_opts +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 +dig_with_opts +short @10.53.0.4 count txt >dig.out.4.test$n || ret=1 eval count=$(cat dig.out.2.test$n) [ $count -le 50 ] || { ret=1 @@ -153,10 +159,10 @@ echo_i "attempt permissible lookup ($n)" ret=0 echo "12" >ans2/ans.limit ns3_reset ns3/named3.conf.in -$DIG $DIGOPTS @10.53.0.2 reset >/dev/null || ret=1 -$DIG $DIGOPTS @10.53.0.3 indirect6.example.org >dig.out.1.test$n || ret=1 +dig_with_opts @10.53.0.2 reset >/dev/null || ret=1 +dig_with_opts @10.53.0.3 indirect6.example.org >dig.out.1.test$n || ret=1 grep "status: NOERROR" dig.out.1.test$n >/dev/null || ret=1 -$DIG $DIGOPTS +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 +dig_with_opts +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 eval count=$(cat dig.out.2.test$n) [ $count -le 50 ] || { ret=1 @@ -172,12 +178,12 @@ echo_i "attempt excessive-queries lookup ($n)" ret=0 echo "11" >ans2/ans.limit ns3_reset ns3/named4.conf.in -$DIG $DIGOPTS @10.53.0.2 reset >/dev/null || ret=1 -$DIG $DIGOPTS @10.53.0.3 indirect7.example.org >dig.out.1.test$n || ret=1 +dig_with_opts @10.53.0.2 reset >/dev/null || ret=1 +dig_with_opts @10.53.0.3 indirect7.example.org >dig.out.1.test$n || ret=1 if ns3_sends_aaaa_queries; then grep "status: SERVFAIL" dig.out.1.test$n >/dev/null || ret=1 fi -$DIG $DIGOPTS +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 +dig_with_opts +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 eval count=$(cat dig.out.2.test$n) [ $count -le 40 ] || { ret=1 @@ -191,10 +197,10 @@ echo_i "attempt permissible lookup ($n)" ret=0 echo "9" >ans2/ans.limit ns3_reset ns3/named4.conf.in -$DIG $DIGOPTS @10.53.0.2 reset >/dev/null || ret=1 -$DIG $DIGOPTS @10.53.0.3 indirect8.example.org >dig.out.1.test$n || ret=1 +dig_with_opts @10.53.0.2 reset >/dev/null || ret=1 +dig_with_opts @10.53.0.3 indirect8.example.org >dig.out.1.test$n || ret=1 grep "status: NOERROR" dig.out.1.test$n >/dev/null || ret=1 -$DIG $DIGOPTS +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 +dig_with_opts +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 eval count=$(cat dig.out.2.test$n) [ $count -le 40 ] || { ret=1 @@ -207,12 +213,12 @@ n=$(expr $n + 1) echo_i "attempting NS explosion ($n)" ret=0 ns3_reset ns3/named4.conf.in -$DIG $DIGOPTS @10.53.0.2 reset >/dev/null || ret=1 -$DIG $DIGOPTS +short @10.53.0.3 ns1.1.example.net >dig.out.1.test$n || ret=1 -$DIG $DIGOPTS +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 +dig_with_opts @10.53.0.2 reset >/dev/null || ret=1 +dig_with_opts +short @10.53.0.3 ns1.1.example.net >dig.out.1.test$n || ret=1 +dig_with_opts +short @10.53.0.2 count txt >dig.out.2.test$n || ret=1 eval count=$(cat dig.out.2.test$n) [ $count -lt 50 ] || ret=1 -$DIG $DIGOPTS +short @10.53.0.7 count txt >dig.out.3.test$n || ret=1 +dig_with_opts +short @10.53.0.7 count txt >dig.out.3.test$n || ret=1 eval count=$(cat dig.out.3.test$n) [ $count -lt 50 ] || { ret=1 @@ -221,6 +227,257 @@ eval count=$(cat dig.out.3.test$n) if [ $ret != 0 ]; then echo_i "failed"; fi status=$(expr $status + $ret) -#grep "duplicate query" ns3/named.run +n=$((n + 1)) +echo_i "checking RRset that exceeds max-records-per-type ($n)" +ret=0 +dig_with_opts @10.53.0.3 biganswer.big >dig.out.1.test$n || ret=1 +grep 'status: SERVFAIL' dig.out.1.test$n >/dev/null || ret=1 +ns3_reset ns3/named5.conf.in +dig_with_opts @10.53.0.3 biganswer.big >dig.out.2.test$n || ret=1 +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 + name=$2 + type=$3 + expected=$4 + exname=$5 + extype=$6 + ttl=$7 + neq_ttl=$8 + + if ! dig_with_opts @10.53.0.3 IN "$type" "$name" >"dig.out.$i.$type.test$n"; then + exit 1 + fi + + if ! grep 'status: '"${expected}"'' "dig.out.$i.$type.test$n" >/dev/null; then + exit 1 + fi + + if [ -n "$ttl" ] && ! grep -q "^$exname.[[:space:]]*${ttl}[[:space:]]*IN[[:space:]]*$extype" "dig.out.$i.$type.test$n"; then + exit 1 + fi + + if [ -n "${neq_ttl}" ] && grep -q "^$exname.[[:space:]]*${neq_ttl}[[:space:]]*IN[[:space:]]*$type" "dig.out.$i.$type.test$n"; then + exit 1 + fi + + exit 0 +) + +n=$((n + 1)) +ret=0 +echo_i "checking that priority names under the max-types-per-name limit get cached ($n)" + +# Query for NXDOMAIN for items on our priority list - these should get cached +for rrtype in AAAA MX NS; do + check_manytypes 1 manytypes.big "${rrtype}" NOERROR big SOA 60 || ret=1 +done +# Wait at least 1 second +for rrtype in AAAA MX NS; do + check_manytypes 2 manytypes.big "${rrtype}" NOERROR big SOA "" 60 || ret=1 +done + +if [ $ret -ne 0 ]; then echo_i "failed"; fi +status=$((status + ret)) +if [ $status -ne 0 ]; then exit 1; fi + +ns3_flush + +n=$((n + 1)) +ret=0 +echo_i "checking that NXDOMAIN names under the max-types-per-name limit get cached ($n)" + +# Query for 10 NXDOMAIN types +for ntype in $(seq 65270 65279); do + check_manytypes 1 manytypes.big "TYPE${ntype}" NOERROR big SOA 60 || ret=1 +done +# Wait at least 1 second +sleep 1 +# Query for 10 NXDOMAIN types again - these should be cached +for ntype in $(seq 65270 65279); do + check_manytypes 2 manytypes.big "TYPE${ntype}" NOERROR big SOA "" 60 || ret=1 +done + +if [ $ret -ne 0 ]; then echo_i "failed"; fi +status=$((status + ret)) +if [ $status -ne 0 ]; then exit 1; fi + +n=$((n + 1)) +ret=0 +echo_i "checking that existing names under the max-types-per-name limit get cached ($n)" + +# Limited to 10 types - these should be cached and the previous record should be evicted +for ntype in $(seq 65280 65289); do + check_manytypes 1 manytypes.big "TYPE${ntype}" NOERROR manytypes.big "TYPE${ntype}" 60 || ret=1 +done +# Wait at least one second +sleep 1 +# Limited to 10 types - these should be cached +for ntype in $(seq 65280 65289); do + check_manytypes 2 manytypes.big "TYPE${ntype}" NOERROR manytypes.big "TYPE${ntype}" "" 60 || ret=1 +done + +if [ $ret -ne 0 ]; then echo_i "failed"; fi +status=$((status + ret)) +if [ $status -ne 0 ]; then exit 1; fi + +n=$((n + 1)) +ret=0 +echo_i "checking that NXDOMAIN names over the max-types-per-name limit don't get cached ($n)" + +# Query for 10 NXDOMAIN types +for ntype in $(seq 65270 65279); do + check_manytypes 1 manytypes.big "TYPE${ntype}" NOERROR big SOA 0 || ret=1 +done +# Wait at least 1 second +sleep 1 +# Query for 10 NXDOMAIN types again - these should not be cached +for ntype in $(seq 65270 65279); do + check_manytypes 2 manytypes.big "TYPE${ntype}" NOERROR big SOA 0 || ret=1 +done + +if [ $ret -ne 0 ]; then echo_i "failed"; fi +status=$((status + ret)) +if [ $status -ne 0 ]; then exit 1; fi + +n=$((n + 1)) +ret=0 +echo_i "checking that priority NXDOMAIN names over the max-types-per-name limit get cached ($n)" + +# Query for NXDOMAIN for items on our priority list - these should get cached +for rrtype in AAAA MX NS; do + check_manytypes 1 manytypes.big "${rrtype}" NOERROR big SOA 60 || ret=1 +done +# Wait at least 1 second +for rrtype in AAAA MX NS; do + check_manytypes 2 manytypes.big "${rrtype}" NOERROR big SOA "" 60 || ret=1 +done + +if [ $ret -ne 0 ]; then echo_i "failed"; fi +status=$((status + ret)) +if [ $status -ne 0 ]; then exit 1; fi + +n=$((n + 1)) +ret=0 +echo_i "checking that priority name over the max-types-per-name get cached ($n)" + +# Query for an item on our priority list - it should get cached +check_manytypes 1 manytypes.big "A" NOERROR manytypes.big A 60 || ret=1 +# Wait at least 1 second +sleep 1 +# Query the same name again - it should be in the cache +check_manytypes 2 manytypes.big "A" NOERROR big manytypes.A "" 60 || ret=1 + +if [ $ret -ne 0 ]; then echo_i "failed"; fi +status=$((status + ret)) +if [ $status -ne 0 ]; then exit 1; fi + +ns3_flush + +n=$((n + 1)) +ret=0 +echo_i "checking that priority name over the max-types-per-name don't get evicted ($n)" + +# Query for an item on our priority list - it should get cached +check_manytypes 1 manytypes.big "A" NOERROR manytypes.big A 60 || ret=1 +# Query for 10 more types - this should not evict A record +for ntype in $(seq 65280 65289); do + check_manytypes 1 manytypes.big "TYPE${ntype}" NOERROR manytypes.big || ret=1 +done +# Wait at least 1 second +sleep 1 +# Query the same name again - it should be in the cache +check_manytypes 2 manytypes.big "A" NOERROR manytypes.big A "" 60 || ret=1 +# This one was first in the list and should have been evicted +check_manytypes 2 manytypes.big "TYPE65280" NOERROR manytypes.big TYPE65280 60 || ret=1 + +if [ $ret -ne 0 ]; then echo_i "failed"; fi +status=$((status + ret)) +if [ $status -ne 0 ]; then exit 1; fi + +ns3_flush + +n=$((n + 1)) +ret=0 +echo_i "checking that non-priority types cause eviction ($n)" + +# Everything on top of that will cause the cache eviction +for ntype in $(seq 65280 65299); do + check_manytypes 1 manytypes.big "TYPE${ntype}" NOERROR manytypes.big "TYPE${ntype}" 60 || ret=1 +done +# Wait at least one second +sleep 1 +# These should have TTL != 60 now +for ntype in $(seq 65290 65299); do + check_manytypes 2 manytypes.big "TYPE${ntype}" NOERROR manytypes.big "TYPE${ntype}" "" 60 || ret=1 +done +# These should have been evicted +for ntype in $(seq 65280 65289); do + check_manytypes 3 manytypes.big "TYPE${ntype}" NOERROR manytypes.big "TYPE${ntype}" 60 || ret=1 +done +# These should have been evicted by the previous block +for ntype in $(seq 65290 65299); do + check_manytypes 4 manytypes.big "TYPE${ntype}" NOERROR manytypes.big "TYPE${ntype}" 60 || ret=1 +done + +if [ $ret -ne 0 ]; then echo_i "failed"; fi +status=$((status + ret)) +if [ $status -ne 0 ]; then exit 1; fi + +ns3_flush + +n=$((n + 1)) +ret=0 +echo_i "checking that signed names under the max-types-per-name limit get cached ($n)" + +# Go through the 10 items, this should result in 20 items (type + rrsig(type)) +for ntype in $(seq 65280 65289); do + check_manytypes 1 manytypes.signed "TYPE${ntype}" NOERROR manytypes.signed "TYPE${ntype}" 60 || ret=1 +done + +# Wait at least one second +sleep 1 + +# These should have TTL != 60 now +for ntype in $(seq 65285 65289); do + check_manytypes 2 manytypes.signed "TYPE${ntype}" NOERROR manytypes.signed "TYPE${ntype}" "" 60 || ret=1 +done + +# These should have been evicted +for ntype in $(seq 65280 65284); do + check_manytypes 3 manytypes.signed "TYPE${ntype}" NOERROR manytypes.signed "TYPE${ntype}" 60 || ret=1 +done + +# These should have been evicted by the previous block +for ntype in $(seq 65285 65289); do + check_manytypes 4 manytypes.signed "TYPE${ntype}" NOERROR manytypes.signed "TYPE${ntype}" 60 || ret=1 +done + +if [ $ret -ne 0 ]; then echo_i "failed"; fi +status=$((status + ret)) +if [ $status -ne 0 ]; then exit 1; fi + +n=$((n + 1)) +ret=0 +echo_i "checking that lifting the limit will allow everything to get cached ($n)" + +# Lift the limit +ns3_reset ns3/named6.conf.in + +for ntype in $(seq 65280 65534); do + check_manytypes 1 manytypes.big "TYPE${ntype}" NOERROR manytypes.big "TYPE${ntype}" 60 || ret=1 +done +# Wait at least one second +sleep 1 +for ntype in $(seq 65280 65534); do + check_manytypes 2 manytypes.big "TYPE${ntype}" NOERROR manytypes.big "TYPE${ntype}" "" 60 || ret=1 +done + +if [ $ret -ne 0 ]; then echo_i "failed"; fi +status=$((status + ret)) + echo_i "exit status: $status" [ $status -eq 0 ] || exit 1 diff --git a/bin/tests/system/resolver/tests.sh b/bin/tests/system/resolver/tests.sh index fc05635e31..2e089fa371 100755 --- a/bin/tests/system/resolver/tests.sh +++ b/bin/tests/system/resolver/tests.sh @@ -596,18 +596,18 @@ n=$((n + 1)) echo_i "check prefetch qtype * (${n})" ret=0 dig_with_opts @10.53.0.5 fetchall.tld any >dig.out.1.${n} || ret=1 -ttl1=$(awk '/"A" "short" "ttl"/ { print $2 - 3 }' dig.out.1.${n}) +ttl1=$(awk '/^fetchall.tld/ { print $2 - 3; exit }' dig.out.1.${n}) # sleep so we are in prefetch range sleep "${ttl1:-0}" # trigger prefetch dig_with_opts @10.53.0.5 fetchall.tld any >dig.out.2.${n} || ret=1 -ttl2=$(awk '/"A" "short" "ttl"/ { print $2 }' dig.out.2.${n}) +ttl2=$(awk '/^fetchall.tld/ { print $2; exit }' dig.out.2.${n}) sleep 1 # check that prefetch occurred; -# note that only one record is prefetched, which is the AAAA record in this case, +# note that only the first record is prefetched, # because of the order of the records in the cache dig_with_opts @10.53.0.5 fetchall.tld any >dig.out.3.${n} || ret=1 -ttl3=$(awk '/::1/ { print $2 }' dig.out.3.${n}) +ttl3=$(awk '/^fetchall.tld/ { print $2; exit }' dig.out.3.${n}) test "${ttl3:-0}" -gt "${ttl2:-1}" || ret=1 if [ $ret != 0 ]; then echo_i "failed"; fi status=$((status + ret)) diff --git a/configure b/configure index 1b436d63eb..835cd94dff 100755 --- a/configure +++ b/configure @@ -12341,7 +12341,7 @@ fi XTARGETS= if test "$enable_developer" = "yes"; then : - STD_CDEFINES="$STD_CDEFINES -DISC_MEM_DEFAULTFILL=1 -DISC_LIST_CHECKINIT=1" + STD_CDEFINES="$STD_CDEFINES -DISC_MEM_DEFAULTFILL=1 -DISC_LIST_CHECKINIT=1 -DDNS_RDATASET_MAX_RECORDS=5000 -DDNS_RBTDB_MAX_RTYPES=5000" test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes test "${enable_querytrace+set}" = set || enable_querytrace=yes test "${with_cmocka+set}" = set || with_cmocka=yes diff --git a/configure.ac b/configure.ac index fb6f172eae..6db42501a2 100644 --- a/configure.ac +++ b/configure.ac @@ -96,7 +96,7 @@ AC_ARG_ENABLE([developer], XTARGETS= AS_IF([test "$enable_developer" = "yes"], - [STD_CDEFINES="$STD_CDEFINES -DISC_MEM_DEFAULTFILL=1 -DISC_LIST_CHECKINIT=1" + [STD_CDEFINES="$STD_CDEFINES -DISC_MEM_DEFAULTFILL=1 -DISC_LIST_CHECKINIT=1 -DDNS_RDATASET_MAX_RECORDS=5000 -DDNS_RBTDB_MAX_RTYPES=5000" test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes test "${enable_querytrace+set}" = set || enable_querytrace=yes test "${with_cmocka+set}" = set || with_cmocka=yes diff --git a/doc/arm/reference.rst b/doc/arm/reference.rst index ecc84d4b37..b4f760f9d8 100644 --- a/doc/arm/reference.rst +++ b/doc/arm/reference.rst @@ -2945,6 +2945,30 @@ system. This sets the maximum number of records permitted in a zone. The default is zero, which means the maximum is unlimited. +``max-records-per-type`` + This sets the maximum number of resource records that can be stored + in an RRset in a database. When configured in ``options`` + or ``view``, it controls the cache database; it also sets + the default value for zone databases, which can be overridden by setting + it at the ``zone`` level. + + If set to a positive value, any attempt to cache or to add to a zone + an RRset with more than the specified number of records will result in + a failure. If set to 0, there is no cap on RRset size. The default is + 100. + +``max-types-per-name`` + This sets the maximum number of resource record types that can be stored + for a single owner name in a database. When configured in ``options`` + or ``view``, it controls the cache database, and also sets + the default value for zone databases, which can be overridden by setting + it at the ``zone`` level + + If set to a positive value, any attempt to cache or to add to a zone an owner + name with more than the specified number of resource record types will result + in a failure. If set to 0, there is no cap on RR types number. The default is + 100. + ``recursive-clients`` This sets the maximum number (a "hard quota") of simultaneous recursive lookups the server performs on behalf of clients. The default is diff --git a/doc/misc/master.zoneopt b/doc/misc/master.zoneopt index 953e3a2829..b2fc2c8b75 100644 --- a/doc/misc/master.zoneopt +++ b/doc/misc/master.zoneopt @@ -38,8 +38,10 @@ zone <string> [ <class> ] { max-ixfr-ratio ( unlimited | <percentage> ); max-journal-size ( default | unlimited | <sizeval> ); max-records <integer>; + max-records-per-type <integer>; max-transfer-idle-out <integer>; max-transfer-time-out <integer>; + max-types-per-name <integer>; max-zone-ttl ( unlimited | <duration> ); notify ( explicit | master-only | primary-only | <boolean> ); notify-delay <integer>; diff --git a/doc/misc/mirror.zoneopt b/doc/misc/mirror.zoneopt index 3d45a3d1e5..701edce540 100644 --- a/doc/misc/mirror.zoneopt +++ b/doc/misc/mirror.zoneopt @@ -19,12 +19,14 @@ zone <string> [ <class> ] { max-ixfr-ratio ( unlimited | <percentage> ); max-journal-size ( default | unlimited | <sizeval> ); max-records <integer>; + max-records-per-type <integer>; max-refresh-time <integer>; max-retry-time <integer>; max-transfer-idle-in <integer>; max-transfer-idle-out <integer>; max-transfer-time-in <integer>; max-transfer-time-out <integer>; + max-types-per-name <integer>; min-refresh-time <integer>; min-retry-time <integer>; multi-master <boolean>; diff --git a/doc/misc/options b/doc/misc/options index 0dbcf101e1..93eb156beb 100644 --- a/doc/misc/options +++ b/doc/misc/options @@ -170,13 +170,16 @@ options { dnssec-secure-to-insecure <boolean>; dnssec-update-mode ( maintain | no-resign ); dnssec-validation ( yes | no | auto ); - dnstap { ( all | auth | client | forwarder | resolver | update ) [ - ( query | response ) ]; ... }; - dnstap-identity ( <quoted_string> | none | hostname ); - dnstap-output ( file | unix ) <quoted_string> [ size ( unlimited | - <size> ) ] [ versions ( unlimited | <integer> ) ] [ suffix ( - increment | timestamp ) ]; - dnstap-version ( <quoted_string> | none ); + dnstap { ( all | auth | client | forwarder | + resolver | update ) [ ( query | response ) ]; + ... }; // not configured + dnstap-identity ( <quoted_string> | none | + hostname ); // not configured + dnstap-output ( file | unix ) <quoted_string> [ + size ( unlimited | <size> ) ] [ versions ( + unlimited | <integer> ) ] [ suffix ( increment + | timestamp ) ]; // not configured + dnstap-version ( <quoted_string> | none ); // not configured dscp <integer>; // deprecated dual-stack-servers [ port <integer> ] { ( <quoted_string> [ port <integer> ] [ dscp <integer> ] | <ipv4_address> [ port @@ -200,13 +203,13 @@ options { forward ( first | only ); forwarders [ port <integer> ] [ dscp <integer> ] { ( <ipv4_address> | <ipv6_address> ) [ port <integer> ] [ dscp <integer> ]; ... }; - fstrm-set-buffer-hint <integer>; - fstrm-set-flush-timeout <integer>; - fstrm-set-input-queue-size <integer>; - fstrm-set-output-notify-threshold <integer>; - fstrm-set-output-queue-model ( mpsc | spsc ); - fstrm-set-output-queue-size <integer>; - fstrm-set-reopen-interval <duration>; + fstrm-set-buffer-hint <integer>; // not configured + fstrm-set-flush-timeout <integer>; // not configured + fstrm-set-input-queue-size <integer>; // not configured + fstrm-set-output-notify-threshold <integer>; // not configured + fstrm-set-output-queue-model ( mpsc | spsc ); // not configured + fstrm-set-output-queue-size <integer>; // not configured + fstrm-set-reopen-interval <duration>; // not configured geoip-directory ( <quoted_string> | none ); geoip-use-ecs <boolean>; // obsolete glue-cache <boolean>; @@ -243,6 +246,7 @@ options { max-journal-size ( default | unlimited | <sizeval> ); max-ncache-ttl <duration>; max-records <integer>; + max-records-per-type <integer>; max-recursion-depth <integer>; max-recursion-queries <integer>; max-refresh-time <integer>; @@ -253,6 +257,7 @@ options { max-transfer-idle-out <integer>; max-transfer-time-in <integer>; max-transfer-time-out <integer>; + max-types-per-name <integer>; max-udp-size <integer>; max-zone-ttl ( unlimited | <duration> ); memstatistics <boolean>; @@ -570,8 +575,9 @@ view <string> [ <class> ] { dnssec-secure-to-insecure <boolean>; dnssec-update-mode ( maintain | no-resign ); dnssec-validation ( yes | no | auto ); - dnstap { ( all | auth | client | forwarder | resolver | update ) [ - ( query | response ) ]; ... }; + dnstap { ( all | auth | client | forwarder | + resolver | update ) [ ( query | response ) ]; + ... }; // not configured dual-stack-servers [ port <integer> ] { ( <quoted_string> [ port <integer> ] [ dscp <integer> ] | <ipv4_address> [ port <integer> ] [ dscp <integer> ] | <ipv6_address> [ port @@ -623,6 +629,7 @@ view <string> [ <class> ] { max-journal-size ( default | unlimited | <sizeval> ); max-ncache-ttl <duration>; max-records <integer>; + max-records-per-type <integer>; max-recursion-depth <integer>; max-recursion-queries <integer>; max-refresh-time <integer>; @@ -632,6 +639,7 @@ view <string> [ <class> ] { max-transfer-idle-out <integer>; max-transfer-time-in <integer>; max-transfer-time-out <integer>; + max-types-per-name <integer>; max-udp-size <integer>; max-zone-ttl ( unlimited | <duration> ); message-compression <boolean>; @@ -855,12 +863,14 @@ view <string> [ <class> ] { max-ixfr-ratio ( unlimited | <percentage> ); max-journal-size ( default | unlimited | <sizeval> ); max-records <integer>; + max-records-per-type <integer>; max-refresh-time <integer>; max-retry-time <integer>; max-transfer-idle-in <integer>; max-transfer-idle-out <integer>; max-transfer-time-in <integer>; max-transfer-time-out <integer>; + max-types-per-name <integer>; max-zone-ttl ( unlimited | <duration> ); min-refresh-time <integer>; min-retry-time <integer>; @@ -972,12 +982,14 @@ zone <string> [ <class> ] { max-ixfr-ratio ( unlimited | <percentage> ); max-journal-size ( default | unlimited | <sizeval> ); max-records <integer>; + max-records-per-type <integer>; max-refresh-time <integer>; max-retry-time <integer>; max-transfer-idle-in <integer>; max-transfer-idle-out <integer>; max-transfer-time-in <integer>; max-transfer-time-out <integer>; + max-types-per-name <integer>; max-zone-ttl ( unlimited | <duration> ); min-refresh-time <integer>; min-retry-time <integer>; diff --git a/doc/misc/options.active b/doc/misc/options.active index eb75a86eae..1b748d96ad 100644 --- a/doc/misc/options.active +++ b/doc/misc/options.active @@ -156,13 +156,16 @@ options { dnssec-secure-to-insecure <boolean>; dnssec-update-mode ( maintain | no-resign ); dnssec-validation ( yes | no | auto ); - dnstap { ( all | auth | client | forwarder | resolver | update ) [ - ( query | response ) ]; ... }; - dnstap-identity ( <quoted_string> | none | hostname ); - dnstap-output ( file | unix ) <quoted_string> [ size ( unlimited | - <size> ) ] [ versions ( unlimited | <integer> ) ] [ suffix ( - increment | timestamp ) ]; - dnstap-version ( <quoted_string> | none ); + dnstap { ( all | auth | client | forwarder | + resolver | update ) [ ( query | response ) ]; + ... }; // not configured + dnstap-identity ( <quoted_string> | none | + hostname ); // not configured + dnstap-output ( file | unix ) <quoted_string> [ + size ( unlimited | <size> ) ] [ versions ( + unlimited | <integer> ) ] [ suffix ( increment + | timestamp ) ]; // not configured + dnstap-version ( <quoted_string> | none ); // not configured dscp <integer>; // deprecated dual-stack-servers [ port <integer> ] { ( <quoted_string> [ port <integer> ] [ dscp <integer> ] | <ipv4_address> [ port @@ -181,13 +184,13 @@ options { forward ( first | only ); forwarders [ port <integer> ] [ dscp <integer> ] { ( <ipv4_address> | <ipv6_address> ) [ port <integer> ] [ dscp <integer> ]; ... }; - fstrm-set-buffer-hint <integer>; - fstrm-set-flush-timeout <integer>; - fstrm-set-input-queue-size <integer>; - fstrm-set-output-notify-threshold <integer>; - fstrm-set-output-queue-model ( mpsc | spsc ); - fstrm-set-output-queue-size <integer>; - fstrm-set-reopen-interval <duration>; + fstrm-set-buffer-hint <integer>; // not configured + fstrm-set-flush-timeout <integer>; // not configured + fstrm-set-input-queue-size <integer>; // not configured + fstrm-set-output-notify-threshold <integer>; // not configured + fstrm-set-output-queue-model ( mpsc | spsc ); // not configured + fstrm-set-output-queue-size <integer>; // not configured + fstrm-set-reopen-interval <duration>; // not configured geoip-directory ( <quoted_string> | none ); glue-cache <boolean>; heartbeat-interval <integer>; @@ -217,6 +220,7 @@ options { max-journal-size ( default | unlimited | <sizeval> ); max-ncache-ttl <duration>; max-records <integer>; + max-records-per-type <integer>; max-recursion-depth <integer>; max-recursion-queries <integer>; max-refresh-time <integer>; @@ -227,6 +231,7 @@ options { max-transfer-idle-out <integer>; max-transfer-time-in <integer>; max-transfer-time-out <integer>; + max-types-per-name <integer>; max-udp-size <integer>; max-zone-ttl ( unlimited | <duration> ); memstatistics <boolean>; @@ -514,8 +519,9 @@ view <string> [ <class> ] { dnssec-secure-to-insecure <boolean>; dnssec-update-mode ( maintain | no-resign ); dnssec-validation ( yes | no | auto ); - dnstap { ( all | auth | client | forwarder | resolver | update ) [ - ( query | response ) ]; ... }; + dnstap { ( all | auth | client | forwarder | + resolver | update ) [ ( query | response ) ]; + ... }; // not configured dual-stack-servers [ port <integer> ] { ( <quoted_string> [ port <integer> ] [ dscp <integer> ] | <ipv4_address> [ port <integer> ] [ dscp <integer> ] | <ipv6_address> [ port @@ -560,6 +566,7 @@ view <string> [ <class> ] { max-journal-size ( default | unlimited | <sizeval> ); max-ncache-ttl <duration>; max-records <integer>; + max-records-per-type <integer>; max-recursion-depth <integer>; max-recursion-queries <integer>; max-refresh-time <integer>; @@ -569,6 +576,7 @@ view <string> [ <class> ] { max-transfer-idle-out <integer>; max-transfer-time-in <integer>; max-transfer-time-out <integer>; + max-types-per-name <integer>; max-udp-size <integer>; max-zone-ttl ( unlimited | <duration> ); message-compression <boolean>; @@ -775,12 +783,14 @@ view <string> [ <class> ] { max-ixfr-ratio ( unlimited | <percentage> ); max-journal-size ( default | unlimited | <sizeval> ); max-records <integer>; + max-records-per-type <integer>; max-refresh-time <integer>; max-retry-time <integer>; max-transfer-idle-in <integer>; max-transfer-idle-out <integer>; max-transfer-time-in <integer>; max-transfer-time-out <integer>; + max-types-per-name <integer>; max-zone-ttl ( unlimited | <duration> ); min-refresh-time <integer>; min-retry-time <integer>; @@ -885,12 +895,14 @@ zone <string> [ <class> ] { max-ixfr-ratio ( unlimited | <percentage> ); max-journal-size ( default | unlimited | <sizeval> ); max-records <integer>; + max-records-per-type <integer>; max-refresh-time <integer>; max-retry-time <integer>; max-transfer-idle-in <integer>; max-transfer-idle-out <integer>; max-transfer-time-in <integer>; max-transfer-time-out <integer>; + max-types-per-name <integer>; max-zone-ttl ( unlimited | <duration> ); min-refresh-time <integer>; min-retry-time <integer>; diff --git a/doc/misc/redirect.zoneopt b/doc/misc/redirect.zoneopt index 6a5ef660a2..c4ab59ddad 100644 --- a/doc/misc/redirect.zoneopt +++ b/doc/misc/redirect.zoneopt @@ -8,6 +8,8 @@ zone <string> [ <class> ] { masterfile-style ( full | relative ); masters [ port <integer> ] [ dscp <integer> ] { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ]; ... }; max-records <integer>; + max-records-per-type <integer>; + max-types-per-name <integer>; max-zone-ttl ( unlimited | <duration> ); primaries [ port <integer> ] [ dscp <integer> ] { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ]; ... }; zone-statistics ( full | terse | none | <boolean> ); diff --git a/doc/misc/slave.zoneopt b/doc/misc/slave.zoneopt index c46202dc58..52ce7cf81c 100644 --- a/doc/misc/slave.zoneopt +++ b/doc/misc/slave.zoneopt @@ -31,12 +31,14 @@ zone <string> [ <class> ] { max-ixfr-ratio ( unlimited | <percentage> ); max-journal-size ( default | unlimited | <sizeval> ); max-records <integer>; + max-records-per-type <integer>; max-refresh-time <integer>; max-retry-time <integer>; max-transfer-idle-in <integer>; max-transfer-idle-out <integer>; max-transfer-time-in <integer>; max-transfer-time-out <integer>; + max-types-per-name <integer>; min-refresh-time <integer>; min-retry-time <integer>; multi-master <boolean>; diff --git a/doc/misc/static-stub.zoneopt b/doc/misc/static-stub.zoneopt index f89d46248a..102b980c7a 100644 --- a/doc/misc/static-stub.zoneopt +++ b/doc/misc/static-stub.zoneopt @@ -5,6 +5,8 @@ zone <string> [ <class> ] { forward ( first | only ); forwarders [ port <integer> ] [ dscp <integer> ] { ( <ipv4_address> | <ipv6_address> ) [ port <integer> ] [ dscp <integer> ]; ... }; max-records <integer>; + max-records-per-type <integer>; + max-types-per-name <integer>; server-addresses { ( <ipv4_address> | <ipv6_address> ); ... }; server-names { <string>; ... }; zone-statistics ( full | terse | none | <boolean> ); diff --git a/doc/misc/stub.zoneopt b/doc/misc/stub.zoneopt index 2db604dae6..ca4bf1ce39 100644 --- a/doc/misc/stub.zoneopt +++ b/doc/misc/stub.zoneopt @@ -13,10 +13,12 @@ zone <string> [ <class> ] { masterfile-style ( full | relative ); masters [ port <integer> ] [ dscp <integer> ] { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ]; ... }; max-records <integer>; + max-records-per-type <integer>; max-refresh-time <integer>; max-retry-time <integer>; max-transfer-idle-in <integer>; max-transfer-time-in <integer>; + max-types-per-name <integer>; min-refresh-time <integer>; min-retry-time <integer>; multi-master <boolean>; diff --git a/lib/dns/cache.c b/lib/dns/cache.c index b5d2b0995f..125cfdc76b 100644 --- a/lib/dns/cache.c +++ b/lib/dns/cache.c @@ -151,6 +151,9 @@ struct dns_cache { /* Locked by 'filelock'. */ char *filename; /* Access to the on-disk cache file is also locked by 'filelock'. */ + + uint32_t maxrrperset; + uint32_t maxtypepername; }; /*** @@ -184,6 +187,8 @@ cache_create_db(dns_cache_t *cache, dns_db_t **db) { } dns_db_setservestalettl(*db, cache->serve_stale_ttl); + dns_db_setmaxrrperset(*db, cache->maxrrperset); + dns_db_setmaxtypepername(*db, cache->maxtypepername); if (cache->taskmgr == NULL) { return (ISC_R_SUCCESS); @@ -1316,6 +1321,26 @@ dns_cache_updatestats(dns_cache_t *cache, isc_result_t result) { } } +void +dns_cache_setmaxrrperset(dns_cache_t *cache, uint32_t value) { + REQUIRE(VALID_CACHE(cache)); + + cache->maxrrperset = value; + if (cache->db != NULL) { + dns_db_setmaxrrperset(cache->db, value); + } +} + +void +dns_cache_setmaxtypepername(dns_cache_t *cache, uint32_t value) { + REQUIRE(VALID_CACHE(cache)); + + cache->maxtypepername = value; + if (cache->db != NULL) { + dns_db_setmaxtypepername(cache->db, value); + } +} + /* * XXX: Much of the following code has been copied in from statschannel.c. * We should refactor this into a generic function in stats.c that can be diff --git a/lib/dns/db.c b/lib/dns/db.c index f90add170e..1f19016d73 100644 --- a/lib/dns/db.c +++ b/lib/dns/db.c @@ -1137,3 +1137,21 @@ dns_db_setgluecachestats(dns_db_t *db, isc_stats_t *stats) { return (ISC_R_NOTIMPLEMENTED); } + +void +dns_db_setmaxrrperset(dns_db_t *db, uint32_t value) { + REQUIRE(DNS_DB_VALID(db)); + + if (db->methods->setmaxrrperset != NULL) { + (db->methods->setmaxrrperset)(db, value); + } +} + +void +dns_db_setmaxtypepername(dns_db_t *db, uint32_t value) { + REQUIRE(DNS_DB_VALID(db)); + + if (db->methods->setmaxtypepername != NULL) { + (db->methods->setmaxtypepername)(db, value); + } +} diff --git a/lib/dns/dnsrps.c b/lib/dns/dnsrps.c index 8c04337786..43c28aefd9 100644 --- a/lib/dns/dnsrps.c +++ b/lib/dns/dnsrps.c @@ -975,7 +975,9 @@ static dns_dbmethods_t rpsdb_db_methods = { NULL, /* setservestalerefresh */ NULL, /* getservestalerefresh */ NULL, /* setgluecachestats */ - NULL /* adjusthashsize */ + NULL, /* adjusthashsize */ + NULL, /* setmaxrrperset */ + NULL /* setmaxtypepername */ }; static dns_rdatasetmethods_t rpsdb_rdataset_methods = { diff --git a/lib/dns/ecdb.c b/lib/dns/ecdb.c index abbb8d9697..3e562d876f 100644 --- a/lib/dns/ecdb.c +++ b/lib/dns/ecdb.c @@ -428,7 +428,7 @@ addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, } result = dns_rdataslab_fromrdataset(rdataset, mctx, &r, - sizeof(rdatasetheader_t)); + sizeof(rdatasetheader_t), 0); if (result != ISC_R_SUCCESS) { goto unlock; } @@ -560,7 +560,12 @@ static dns_dbmethods_t ecdb_methods = { NULL, /* getsize */ NULL, /* setservestalettl */ NULL, /* getservestalettl */ - NULL /* setgluecachestats */ + NULL, /* setservestalerefresh */ + NULL, /* getservestalerefresh */ + NULL, /* setgluecachestats */ + NULL, /* adjusthashsize */ + NULL, /* setmaxrrperset */ + NULL /* setmaxtypepername */ }; static isc_result_t diff --git a/lib/dns/include/dns/cache.h b/lib/dns/include/dns/cache.h index 02dd1ac4d0..eb6f1e9294 100644 --- a/lib/dns/include/dns/cache.h +++ b/lib/dns/include/dns/cache.h @@ -334,6 +334,18 @@ dns_cache_updatestats(dns_cache_t *cache, isc_result_t result); * Update cache statistics based on result code in 'result' */ +void +dns_cache_setmaxrrperset(dns_cache_t *cache, uint32_t value); +/*%< + * Set the maximum resource records per RRSet that can be cached. + */ + +void +dns_cache_setmaxtypepername(dns_cache_t *cache, uint32_t value); +/*%< + * Set the maximum resource record types per owner name that can be cached. + */ + #ifdef HAVE_LIBXML2 int dns_cache_renderxml(dns_cache_t *cache, void *writer0); diff --git a/lib/dns/include/dns/db.h b/lib/dns/include/dns/db.h index ae276393c2..3c6c7f2107 100644 --- a/lib/dns/include/dns/db.h +++ b/lib/dns/include/dns/db.h @@ -184,6 +184,8 @@ typedef struct dns_dbmethods { isc_result_t (*getservestalerefresh)(dns_db_t *db, uint32_t *interval); isc_result_t (*setgluecachestats)(dns_db_t *db, isc_stats_t *stats); isc_result_t (*adjusthashsize)(dns_db_t *db, size_t size); + void (*setmaxrrperset)(dns_db_t *db, uint32_t value); + void (*setmaxtypepername)(dns_db_t *db, uint32_t value); } dns_dbmethods_t; typedef isc_result_t (*dns_dbcreatefunc_t)(isc_mem_t *mctx, @@ -1796,6 +1798,23 @@ dns_db_setgluecachestats(dns_db_t *db, isc_stats_t *stats); * dns_rdatasetstats_create(); otherwise NULL. */ +void +dns_db_setmaxrrperset(dns_db_t *db, uint32_t value); +/*%< + * Set the maximum permissible number of RRs per RRset. If 'value' + * is nonzero, then any subsequent attempt to add an rdataset with + * more than 'value' RRs will return ISC_R_NOSPACE. + */ + +void +dns_db_setmaxtypepername(dns_db_t *db, uint32_t value); +/*%< + * Set the maximum permissible number of RR types per owner name. + * + * If 'value' is nonzero, then any subsequent attempt to add an rdataset with a + * RR type that would exceed the number of already stored RR types will return + * ISC_R_NOSPACE. + */ ISC_LANG_ENDDECLS #endif /* DNS_DB_H */ diff --git a/lib/dns/include/dns/rdataslab.h b/lib/dns/include/dns/rdataslab.h index 5a1c30f9e4..89c8fc25f5 100644 --- a/lib/dns/include/dns/rdataslab.h +++ b/lib/dns/include/dns/rdataslab.h @@ -67,7 +67,8 @@ ISC_LANG_BEGINDECLS isc_result_t dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx, - isc_region_t *region, unsigned int reservelen); + isc_region_t *region, unsigned int reservelen, + uint32_t limit); /*%< * Slabify a rdataset. The slab area will be allocated and returned * in 'region'. @@ -123,7 +124,8 @@ isc_result_t dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab, unsigned int reservelen, isc_mem_t *mctx, dns_rdataclass_t rdclass, dns_rdatatype_t type, - unsigned int flags, unsigned char **tslabp); + unsigned int flags, uint32_t maxrrperset, + unsigned char **tslabp); /*%< * Merge 'oslab' and 'nslab'. */ diff --git a/lib/dns/include/dns/view.h b/lib/dns/include/dns/view.h index d6e7f10e18..4151c1130d 100644 --- a/lib/dns/include/dns/view.h +++ b/lib/dns/include/dns/view.h @@ -188,6 +188,8 @@ struct dns_view { dns_dlzdblist_t dlz_unsearched; uint32_t fail_ttl; dns_badcache_t *failcache; + uint32_t maxrrperset; + uint32_t maxtypepername; /* * Configurable data for server use only, @@ -1354,6 +1356,18 @@ dns_view_staleanswerenabled(dns_view_t *view); *\li 'view' to be valid. */ +void +dns_view_setmaxrrperset(dns_view_t *view, uint32_t value); +/*%< + * Set the maximum resource records per RRSet that can be cached. + */ + +void +dns_view_setmaxtypepername(dns_view_t *view, uint32_t value); +/*%< + * Set the maximum resource record types per owner name that can be cached. + */ + ISC_LANG_ENDDECLS #endif /* DNS_VIEW_H */ diff --git a/lib/dns/include/dns/zone.h b/lib/dns/include/dns/zone.h index 4bdc936949..d893dd2694 100644 --- a/lib/dns/include/dns/zone.h +++ b/lib/dns/include/dns/zone.h @@ -164,6 +164,19 @@ dns_zone_create(dns_zone_t **zonep, isc_mem_t *mctx); *\li #ISC_R_UNEXPECTED */ +isc_result_t +dns_zone_makedb(dns_zone_t *zone, dns_db_t **dbp); +/*%< + * Creates a new empty database for the 'zone'. + * + * Requires: + *\li 'zone' to be a valid zone. + *\li 'dbp' to point to NULL pointer. + * + * Returns: + *\li dns_db_create() error codes. + */ + void dns_zone_setclass(dns_zone_t *zone, dns_rdataclass_t rdclass); /*%< @@ -332,6 +345,32 @@ dns_zone_getmaxrecords(dns_zone_t *zone); *\li uint32_t maxrecords. */ +void +dns_zone_setmaxrrperset(dns_zone_t *zone, uint32_t maxrrperset); +/*%< + * Sets the maximum number of records per rrset permitted in a zone. + * 0 implies unlimited. + * + * Requires: + *\li 'zone' to be valid initialised zone. + * + * Returns: + *\li void + */ + +void +dns_zone_setmaxtypepername(dns_zone_t *zone, uint32_t maxtypepername); +/*%< + * Sets the maximum number of resource record types per owner name + * permitted in a zone. 0 implies unlimited. + * + * Requires: + *\li 'zone' to be valid initialised zone. + * + * Returns: + *\li void + */ + void dns_zone_setmaxttl(dns_zone_t *zone, uint32_t maxttl); /*%< diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c index 3f06545aa1..5179f942fb 100644 --- a/lib/dns/rbtdb.c +++ b/lib/dns/rbtdb.c @@ -496,6 +496,8 @@ struct dns_rbtdb { rbtdb_serial_t current_serial; rbtdb_serial_t least_serial; rbtdb_serial_t next_serial; + uint32_t maxrrperset; + uint32_t maxtypepername; rbtdb_version_t *current_version; rbtdb_version_t *future_version; rbtdb_versionlist_t open_versions; @@ -990,6 +992,8 @@ prio_type(rbtdb_rdatatype_t type) { case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_soa): case dns_rdatatype_a: case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_a): + case dns_rdatatype_mx: + case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_mx): case dns_rdatatype_aaaa: case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_aaaa): case dns_rdatatype_nsec: @@ -1002,6 +1006,22 @@ prio_type(rbtdb_rdatatype_t type) { case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_ds): case dns_rdatatype_cname: case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_cname): + case dns_rdatatype_dname: + case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_dname): + case dns_rdatatype_svcb: + case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_svcb): + case dns_rdatatype_https: + case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_https): + case dns_rdatatype_dnskey: + case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_dnskey): + case dns_rdatatype_srv: + case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_srv): + case dns_rdatatype_txt: + case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_txt): + case dns_rdatatype_ptr: + case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_ptr): + case dns_rdatatype_naptr: + case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_naptr): return (true); } return (false); @@ -6240,6 +6260,24 @@ update_recordsandxfrsize(bool add, rbtdb_version_t *rbtversion, RWUNLOCK(&rbtversion->rwlock, isc_rwlocktype_write); } +static bool +overmaxtype(dns_rbtdb_t *rbtdb, uint32_t ntypes) { + if (rbtdb->maxtypepername == 0) { + return (false); + } + + return (ntypes >= rbtdb->maxtypepername); +} + +static bool +prio_header(rdatasetheader_t *header) { + if (NEGATIVE(header) && prio_type(RBTDB_RDATATYPE_EXT(header->type))) { + return (true); + } + + return (prio_type(header->type)); +} + /* * write lock on rbtnode must be held. */ @@ -6251,7 +6289,7 @@ add32(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, const dns_name_t *nodename, rbtdb_changed_t *changed = NULL; rdatasetheader_t *topheader = NULL, *topheader_prev = NULL; rdatasetheader_t *header = NULL, *sigheader = NULL; - rdatasetheader_t *prioheader = NULL; + rdatasetheader_t *prioheader = NULL, *expireheader = NULL; unsigned char *merged = NULL; isc_result_t result; bool header_nx; @@ -6261,6 +6299,7 @@ add32(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, const dns_name_t *nodename, rbtdb_rdatatype_t negtype, sigtype; dns_trust_t trust; int idx; + uint32_t ntypes = 0; /* * Add an rdatasetheader_t to a node. @@ -6336,6 +6375,7 @@ add32(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, const dns_name_t *nodename, { if (topheader->type == sigtype) { sigheader = topheader; + break; } } negtype = RBTDB_RDATATYPE_VALUE(covers, 0); @@ -6398,7 +6438,13 @@ add32(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, const dns_name_t *nodename, for (topheader = rbtnode->data; topheader != NULL; topheader = topheader->next) { - if (prio_type(topheader->type)) { + if (IS_CACHE(rbtdb) && ACTIVE(topheader, now)) { + ++ntypes; + expireheader = topheader; + } else if (!IS_CACHE(rbtdb)) { + ++ntypes; + } + if (prio_header(topheader)) { prioheader = topheader; } if (topheader->type == newheader->type || @@ -6488,7 +6534,7 @@ find_header: rbtdb->common.mctx, rbtdb->common.rdclass, (dns_rdatatype_t)header->type, flags, - &merged); + rbtdb->maxrrperset, &merged); } if (result == ISC_R_SUCCESS) { /* @@ -6755,9 +6801,15 @@ find_header: /* * No rdatasets of the given type exist at the node. */ + if (!IS_CACHE(rbtdb) && overmaxtype(rbtdb, ntypes)) { + free_rdataset(rbtdb, rbtdb->common.mctx, + newheader); + return (DNS_R_TOOMANYRECORDS); + } + newheader->down = NULL; - if (prio_type(newheader->type)) { + if (prio_header(newheader)) { /* This is a priority type, prepend it */ newheader->next = rbtnode->data; rbtnode->data = newheader; @@ -6770,6 +6822,31 @@ find_header: newheader->next = rbtnode->data; rbtnode->data = newheader; } + + if (IS_CACHE(rbtdb) && overmaxtype(rbtdb, ntypes)) { + if (expireheader == NULL) { + expireheader = newheader; + } + if (NEGATIVE(newheader) && + !prio_header(newheader)) + { + /* + * Add the new non-priority negative + * header to the database only + * temporarily. + */ + expireheader = newheader; + } + + set_ttl(rbtdb, expireheader, 0); + mark_header_ancient(rbtdb, expireheader); + /* + * FIXME: In theory, we should mark the RRSIG + * and the header at the same time, but there is + * no direct link between those two header, so + * we would have to check the whole list again. + */ + } } } @@ -6815,7 +6892,7 @@ delegating_type(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node, static isc_result_t addnoqname(dns_rbtdb_t *rbtdb, rdatasetheader_t *newheader, - dns_rdataset_t *rdataset) { + uint32_t maxrrperset, dns_rdataset_t *rdataset) { struct noqname *noqname; isc_mem_t *mctx = rbtdb->common.mctx; dns_name_t name; @@ -6836,12 +6913,12 @@ addnoqname(dns_rbtdb_t *rbtdb, rdatasetheader_t *newheader, noqname->negsig = NULL; noqname->type = neg.type; dns_name_dup(&name, mctx, &noqname->name); - result = dns_rdataslab_fromrdataset(&neg, mctx, &r, 0); + result = dns_rdataslab_fromrdataset(&neg, mctx, &r, 0, maxrrperset); if (result != ISC_R_SUCCESS) { goto cleanup; } noqname->neg = r.base; - result = dns_rdataslab_fromrdataset(&negsig, mctx, &r, 0); + result = dns_rdataslab_fromrdataset(&negsig, mctx, &r, 0, maxrrperset); if (result != ISC_R_SUCCESS) { goto cleanup; } @@ -6860,7 +6937,7 @@ cleanup: static isc_result_t addclosest(dns_rbtdb_t *rbtdb, rdatasetheader_t *newheader, - dns_rdataset_t *rdataset) { + uint32_t maxrrperset, dns_rdataset_t *rdataset) { struct noqname *closest; isc_mem_t *mctx = rbtdb->common.mctx; dns_name_t name; @@ -6881,12 +6958,12 @@ addclosest(dns_rbtdb_t *rbtdb, rdatasetheader_t *newheader, closest->negsig = NULL; closest->type = neg.type; dns_name_dup(&name, mctx, &closest->name); - result = dns_rdataslab_fromrdataset(&neg, mctx, &r, 0); + result = dns_rdataslab_fromrdataset(&neg, mctx, &r, 0, maxrrperset); if (result != ISC_R_SUCCESS) { goto cleanup; } closest->neg = r.base; - result = dns_rdataslab_fromrdataset(&negsig, mctx, &r, 0); + result = dns_rdataslab_fromrdataset(&negsig, mctx, &r, 0, maxrrperset); if (result != ISC_R_SUCCESS) { goto cleanup; } @@ -6967,7 +7044,8 @@ addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, } result = dns_rdataslab_fromrdataset(rdataset, rbtdb->common.mctx, - ®ion, sizeof(rdatasetheader_t)); + ®ion, sizeof(rdatasetheader_t), + rbtdb->maxrrperset); if (result != ISC_R_SUCCESS) { return (result); } @@ -7025,7 +7103,8 @@ addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, RDATASET_ATTR_SET(newheader, RDATASET_ATTR_OPTOUT); } if ((rdataset->attributes & DNS_RDATASETATTR_NOQNAME) != 0) { - result = addnoqname(rbtdb, newheader, rdataset); + result = addnoqname(rbtdb, newheader, + rbtdb->maxrrperset, rdataset); if (result != ISC_R_SUCCESS) { free_rdataset(rbtdb, rbtdb->common.mctx, newheader); @@ -7033,7 +7112,8 @@ addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, } } if ((rdataset->attributes & DNS_RDATASETATTR_CLOSEST) != 0) { - result = addclosest(rbtdb, newheader, rdataset); + result = addclosest(rbtdb, newheader, + rbtdb->maxrrperset, rdataset); if (result != ISC_R_SUCCESS) { free_rdataset(rbtdb, rbtdb->common.mctx, newheader); @@ -7187,7 +7267,8 @@ subtractrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, nodefullname(db, node, nodename); result = dns_rdataslab_fromrdataset(rdataset, rbtdb->common.mctx, - ®ion, sizeof(rdatasetheader_t)); + ®ion, sizeof(rdatasetheader_t), + 0); if (result != ISC_R_SUCCESS) { return (result); } @@ -7591,7 +7672,8 @@ loading_addrdataset(void *arg, const dns_name_t *name, } result = dns_rdataslab_fromrdataset(rdataset, rbtdb->common.mctx, - ®ion, sizeof(rdatasetheader_t)); + ®ion, sizeof(rdatasetheader_t), + rbtdb->maxrrperset); if (result != ISC_R_SUCCESS) { return (result); } @@ -8531,6 +8613,24 @@ setgluecachestats(dns_db_t *db, isc_stats_t *stats) { return (ISC_R_SUCCESS); } +static void +setmaxrrperset(dns_db_t *db, uint32_t maxrrperset) { + dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db; + + REQUIRE(VALID_RBTDB(rbtdb)); + + rbtdb->maxrrperset = maxrrperset; +} + +static void +setmaxtypepername(dns_db_t *db, uint32_t maxtypepername) { + dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db; + + REQUIRE(VALID_RBTDB(rbtdb)); + + rbtdb->maxtypepername = maxtypepername; +} + static dns_stats_t * getrrsetstats(dns_db_t *db) { dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db; @@ -8654,7 +8754,9 @@ static dns_dbmethods_t zone_methods = { attach, NULL, /* setservestalerefresh */ NULL, /* getservestalerefresh */ setgluecachestats, - adjusthashsize }; + adjusthashsize, + setmaxrrperset, + setmaxtypepername }; static dns_dbmethods_t cache_methods = { attach, detach, @@ -8706,7 +8808,9 @@ static dns_dbmethods_t cache_methods = { attach, setservestalerefresh, getservestalerefresh, NULL, - adjusthashsize }; + adjusthashsize, + setmaxrrperset, + setmaxtypepername }; isc_result_t dns_rbtdb_create(isc_mem_t *mctx, const dns_name_t *origin, dns_dbtype_t type, diff --git a/lib/dns/rdataslab.c b/lib/dns/rdataslab.c index 14c43818b8..bf4e0453ca 100644 --- a/lib/dns/rdataslab.c +++ b/lib/dns/rdataslab.c @@ -112,9 +112,14 @@ fillin_offsets(unsigned char *offsetbase, unsigned int *offsettable, } #endif /* if DNS_RDATASET_FIXED */ +#ifndef DNS_RDATASET_MAX_RECORDS +#define DNS_RDATASET_MAX_RECORDS 100 +#endif /* DNS_RDATASET_MAX_RECORDS */ + isc_result_t dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx, - isc_region_t *region, unsigned int reservelen) { + isc_region_t *region, unsigned int reservelen, + uint32_t maxrrperset) { /* * Use &removed as a sentinel pointer for duplicate * rdata as rdata.data == NULL is valid. @@ -156,6 +161,10 @@ dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx, return (ISC_R_SUCCESS); } + if (maxrrperset > 0 && nitems > maxrrperset) { + return (DNS_R_TOOMANYRECORDS); + } + if (nitems > 0xffff) { return (ISC_R_NOSPACE); } @@ -484,7 +493,8 @@ isc_result_t dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab, unsigned int reservelen, isc_mem_t *mctx, dns_rdataclass_t rdclass, dns_rdatatype_t type, - unsigned int flags, unsigned char **tslabp) { + unsigned int flags, uint32_t maxrrperset, + unsigned char **tslabp) { unsigned char *ocurrent, *ostart, *ncurrent, *tstart, *tcurrent, *data; unsigned int ocount, ncount, count, olength, tlength, tcount, length; dns_rdata_t ordata = DNS_RDATA_INIT; @@ -524,6 +534,10 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab, #endif /* if DNS_RDATASET_FIXED */ INSIST(ocount > 0 && ncount > 0); + if (maxrrperset > 0 && ocount + ncount > maxrrperset) { + return (DNS_R_TOOMANYRECORDS); + } + #if DNS_RDATASET_FIXED oncount = ncount; #endif /* if DNS_RDATASET_FIXED */ diff --git a/lib/dns/sdb.c b/lib/dns/sdb.c index 7822d6ef14..4438091350 100644 --- a/lib/dns/sdb.c +++ b/lib/dns/sdb.c @@ -1319,7 +1319,9 @@ static dns_dbmethods_t sdb_methods = { NULL, /* setservestalerefresh */ NULL, /* getservestalerefresh */ NULL, /* setgluecachestats */ - NULL /* adjusthashsize */ + NULL, /* adjusthashsize */ + NULL, /* setmaxrrperset */ + NULL /* setmaxtypepername */ }; static isc_result_t diff --git a/lib/dns/sdlz.c b/lib/dns/sdlz.c index 106e24ba70..a8556dfaef 100644 --- a/lib/dns/sdlz.c +++ b/lib/dns/sdlz.c @@ -1292,7 +1292,9 @@ static dns_dbmethods_t sdlzdb_methods = { NULL, /* setservestalerefresh */ NULL, /* getservestalerefresh */ NULL, /* setgluecachestats */ - NULL /* adjusthashsize */ + NULL, /* adjusthashsize */ + NULL, /* setmaxrrperset */ + NULL /* setmaxtypepername */ }; /* diff --git a/lib/dns/view.c b/lib/dns/view.c index a67dd73a3c..0de880d2a6 100644 --- a/lib/dns/view.c +++ b/lib/dns/view.c @@ -871,6 +871,9 @@ dns_view_setcache(dns_view_t *view, dns_cache_t *cache, bool shared) { dns_cache_attach(cache, &view->cache); dns_cache_attachdb(cache, &view->cachedb); INSIST(DNS_DB_VALID(view->cachedb)); + + dns_cache_setmaxrrperset(view->cache, view->maxrrperset); + dns_cache_setmaxtypepername(view->cache, view->maxtypepername); } bool @@ -2640,3 +2643,21 @@ dns_view_staleanswerenabled(dns_view_t *view) { return (result); } + +void +dns_view_setmaxrrperset(dns_view_t *view, uint32_t value) { + REQUIRE(DNS_VIEW_VALID(view)); + view->maxrrperset = value; + if (view->cache != NULL) { + dns_cache_setmaxrrperset(view->cache, value); + } +} + +void +dns_view_setmaxtypepername(dns_view_t *view, uint32_t value) { + REQUIRE(DNS_VIEW_VALID(view)); + view->maxtypepername = value; + if (view->cache != NULL) { + dns_cache_setmaxtypepername(view->cache, value); + } +} diff --git a/lib/dns/xfrin.c b/lib/dns/xfrin.c index a54d0d84a2..9d72b8240a 100644 --- a/lib/dns/xfrin.c +++ b/lib/dns/xfrin.c @@ -205,8 +205,6 @@ xfrin_create(isc_mem_t *mctx, dns_zone_t *zone, dns_db_t *db, isc_task_t *task, static isc_result_t axfr_init(dns_xfrin_ctx_t *xfr); static isc_result_t -axfr_makedb(dns_xfrin_ctx_t *xfr, dns_db_t **dbp); -static isc_result_t axfr_putdata(dns_xfrin_ctx_t *xfr, dns_diffop_t op, dns_name_t *name, dns_ttl_t ttl, dns_rdata_t *rdata); static isc_result_t @@ -279,7 +277,11 @@ axfr_init(dns_xfrin_ctx_t *xfr) { dns_db_detach(&xfr->db); } - CHECK(axfr_makedb(xfr, &xfr->db)); + CHECK(dns_zone_makedb(xfr->zone, &xfr->db)); + + dns_zone_rpz_enable_db(xfr->zone, xfr->db); + dns_zone_catz_enable_db(xfr->zone, xfr->db); + dns_rdatacallbacks_init(&xfr->axfr); CHECK(dns_db_beginload(xfr->db, &xfr->axfr)); result = ISC_R_SUCCESS; @@ -287,22 +289,6 @@ failure: return (result); } -static isc_result_t -axfr_makedb(dns_xfrin_ctx_t *xfr, dns_db_t **dbp) { - isc_result_t result; - - result = dns_db_create(xfr->mctx, /* XXX */ - "rbt", /* XXX guess */ - &xfr->name, dns_dbtype_zone, xfr->rdclass, 0, - NULL, /* XXX guess */ - dbp); - if (result == ISC_R_SUCCESS) { - dns_zone_rpz_enable_db(xfr->zone, *dbp); - dns_zone_catz_enable_db(xfr->zone, *dbp); - } - return (result); -} - static isc_result_t axfr_putdata(dns_xfrin_ctx_t *xfr, dns_diffop_t op, dns_name_t *name, dns_ttl_t ttl, dns_rdata_t *rdata) { diff --git a/lib/dns/zone.c b/lib/dns/zone.c index b457095907..8f1defb434 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -307,6 +307,8 @@ struct dns_zone { uint32_t minretry; uint32_t maxrecords; + uint32_t maxrrperset; + uint32_t maxtypepername; isc_sockaddr_t *masters; isc_dscp_t *masterdscps; @@ -2304,31 +2306,13 @@ zone_load(dns_zone_t *zone, unsigned int flags, bool locked) { dns_zone_logc(zone, DNS_LOGCATEGORY_ZONELOAD, ISC_LOG_DEBUG(1), "starting load"); - result = dns_db_create(zone->mctx, zone->db_argv[0], &zone->origin, - (zone->type == dns_zone_stub) ? dns_dbtype_stub - : dns_dbtype_zone, - zone->rdclass, zone->db_argc - 1, - zone->db_argv + 1, &db); - + result = dns_zone_makedb(zone, &db); if (result != ISC_R_SUCCESS) { dns_zone_logc(zone, DNS_LOGCATEGORY_ZONELOAD, ISC_LOG_ERROR, "loading zone: creating database: %s", isc_result_totext(result)); goto cleanup; } - dns_db_settask(db, zone->task, zone->task); - - if (zone->type == dns_zone_primary || - zone->type == dns_zone_secondary || zone->type == dns_zone_mirror) - { - result = dns_db_setgluecachestats(db, zone->gluecachestats); - if (result == ISC_R_NOTIMPLEMENTED) { - result = ISC_R_SUCCESS; - } - if (result != ISC_R_SUCCESS) { - goto cleanup; - } - } if (!dns_db_ispersistent(db)) { if (zone->masterfile != NULL) { @@ -10064,6 +10048,7 @@ cleanup: } dns_diff_clear(&_sig_diff); + dns_diff_clear(&post_diff); for (i = 0; i < nkeys; i++) { dst_key_free(&zone_keys[i]); @@ -12313,6 +12298,26 @@ dns_zone_setmaxrecords(dns_zone_t *zone, uint32_t val) { zone->maxrecords = val; } +void +dns_zone_setmaxrrperset(dns_zone_t *zone, uint32_t val) { + REQUIRE(DNS_ZONE_VALID(zone)); + + zone->maxrrperset = val; + if (zone->db != NULL) { + dns_db_setmaxrrperset(zone->db, val); + } +} + +void +dns_zone_setmaxtypepername(dns_zone_t *zone, uint32_t val) { + REQUIRE(DNS_ZONE_VALID(zone)); + + zone->maxtypepername = val; + if (zone->db != NULL) { + dns_db_setmaxtypepername(zone->db, val); + } +} + static bool notify_isqueued(dns_zone_t *zone, unsigned int flags, dns_name_t *name, isc_sockaddr_t *addr, dns_tsigkey_t *key) { @@ -14726,6 +14731,9 @@ ns_query(dns_zone_t *zone, dns_rdataset_t *soardataset, dns_stub_t *stub) { goto cleanup; } dns_db_settask(stub->db, zone->task, zone->task); + dns_db_setmaxrrperset(stub->db, zone->maxrrperset); + dns_db_setmaxtypepername(stub->db, + zone->maxtypepername); } result = dns_db_newversion(stub->db, &stub->version); @@ -17468,6 +17476,8 @@ zone_replacedb(dns_zone_t *zone, dns_db_t *db, bool dump) { } zone_attachdb(zone, db); dns_db_settask(zone->db, zone->task, zone->task); + dns_db_setmaxrrperset(zone->db, zone->maxrrperset); + dns_db_setmaxtypepername(zone->db, zone->maxtypepername); DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_LOADED | DNS_ZONEFLG_NEEDNOTIFY); return (ISC_R_SUCCESS); @@ -23615,3 +23625,45 @@ zone_nsecttl(dns_zone_t *zone) { return (ISC_MIN(zone->minimum, zone->soattl)); } + +isc_result_t +dns_zone_makedb(dns_zone_t *zone, dns_db_t **dbp) { + REQUIRE(DNS_ZONE_VALID(zone)); + REQUIRE(dbp != NULL && *dbp == NULL); + + dns_db_t *db = NULL; + + isc_result_t result = dns_db_create( + zone->mctx, zone->db_argv[0], &zone->origin, + (zone->type == dns_zone_stub) ? dns_dbtype_stub + : dns_dbtype_zone, + zone->rdclass, zone->db_argc - 1, zone->db_argv + 1, &db); + if (result != ISC_R_SUCCESS) { + return (result); + } + + switch (zone->type) { + case dns_zone_primary: + case dns_zone_secondary: + case dns_zone_mirror: + result = dns_db_setgluecachestats(db, zone->gluecachestats); + if (result == ISC_R_NOTIMPLEMENTED) { + result = ISC_R_SUCCESS; + } + if (result != ISC_R_SUCCESS) { + dns_db_detach(&db); + return (result); + } + break; + default: + break; + } + + dns_db_settask(db, zone->task, zone->task); + dns_db_setmaxrrperset(db, zone->maxrrperset); + dns_db_setmaxtypepername(db, zone->maxtypepername); + + *dbp = db; + + return (ISC_R_SUCCESS); +} diff --git a/lib/isccfg/namedconf.c b/lib/isccfg/namedconf.c index 6e63d86816..69525dcc90 100644 --- a/lib/isccfg/namedconf.c +++ b/lib/isccfg/namedconf.c @@ -2241,6 +2241,12 @@ static cfg_clausedef_t zone_clauses[] = { { "max-records", &cfg_type_uint32, CFG_ZONE_PRIMARY | CFG_ZONE_SECONDARY | CFG_ZONE_MIRROR | CFG_ZONE_STUB | CFG_ZONE_STATICSTUB | CFG_ZONE_REDIRECT }, + { "max-records-per-type", &cfg_type_uint32, + CFG_ZONE_PRIMARY | CFG_ZONE_SECONDARY | CFG_ZONE_MIRROR | + CFG_ZONE_STUB | CFG_ZONE_STATICSTUB | CFG_ZONE_REDIRECT }, + { "max-types-per-name", &cfg_type_uint32, + CFG_ZONE_PRIMARY | CFG_ZONE_SECONDARY | CFG_ZONE_MIRROR | + CFG_ZONE_STUB | CFG_ZONE_STATICSTUB | CFG_ZONE_REDIRECT }, { "max-refresh-time", &cfg_type_uint32, CFG_ZONE_SECONDARY | CFG_ZONE_MIRROR | CFG_ZONE_STUB }, { "max-retry-time", &cfg_type_uint32, diff --git a/lib/ns/update.c b/lib/ns/update.c index 4e51cdcb77..d9cea2c4c6 100644 --- a/lib/ns/update.c +++ b/lib/ns/update.c @@ -3136,9 +3136,18 @@ update_action(isc_task_t *task, isc_event_t *event) { dns_diff_clear(&ctx.add_diff); goto failure; } - CHECK(update_one_rr(db, ver, &diff, - DNS_DIFFOP_ADD, - name, ttl, &rdata)); + result = update_one_rr( + db, ver, &diff, DNS_DIFFOP_ADD, + name, ttl, &rdata); + if (result != ISC_R_SUCCESS) { + update_log(client, zone, + LOGLEVEL_PROTOCOL, + "adding an RR " + "failed: %s", + isc_result_totext( + result)); + goto failure; + } } } } else if (update_class == dns_rdataclass_any) {
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor