Commit d0e51e3b authored by Grigorii Demidov's avatar Grigorii Demidov

without address translation; knotd support added

parent 2a72d8fd
......@@ -26,11 +26,12 @@ def del_files(path_to):
DEFAULT_IFACE = 0
CHILD_IFACE = 0
TMPDIR = ""
INSTALLDIR = os.path.dirname(os.path.abspath(__file__))
if "SOCKET_WRAPPER_DEFAULT_IFACE" in os.environ:
DEFAULT_IFACE = int(os.environ["SOCKET_WRAPPER_DEFAULT_IFACE"])
if DEFAULT_IFACE < 2 or DEFAULT_IFACE > 254 :
DEFAULT_IFACE = 10
DEFAULT_IFACE = 2
os.environ["SOCKET_WRAPPER_DEFAULT_IFACE"]="{}".format(DEFAULT_IFACE)
if "KRESD_WRAPPER_DEFAULT_IFACE" in os.environ:
......@@ -42,6 +43,7 @@ if CHILD_IFACE < 2 or CHILD_IFACE > 254 or CHILD_IFACE == DEFAULT_IFACE:
CHILD_IFACE = 2
os.environ["KRESD_WRAPPER_DEFAULT_IFACE"] = "{}".format(CHILD_IFACE)
if "SOCKET_WRAPPER_DIR" in os.environ:
TMPDIR = os.environ["SOCKET_WRAPPER_DIR"]
if TMPDIR == "" or os.path.isdir(TMPDIR) is False:
......@@ -169,7 +171,8 @@ def find_objects(path):
def write_timestamp_file(path, tst):
time_file = open(path, 'w')
time_file.write(datetime.fromtimestamp(tst).strftime('%Y-%m-%d %H:%M:%S'))
time_file.write(datetime.fromtimestamp(tst).strftime('@%Y-%m-%d %H:%M:%S'))
time_file.flush()
time_file.close()
def setup_env(child_env, config, config_name, j2template):
......@@ -181,7 +184,7 @@ def setup_env(child_env, config, config_name, j2template):
os.environ["FAKETIME_TIMESTAMP_FILE"] = '%s/.time' % TMPDIR
child_env["FAKETIME_NO_CACHE"] = "1"
child_env["FAKETIME_TIMESTAMP_FILE"] = '%s/.time' % TMPDIR
write_timestamp_file(child_env["FAKETIME_TIMESTAMP_FILE"], 0)
write_timestamp_file(child_env["FAKETIME_TIMESTAMP_FILE"], int (time.time()))
# Set up child process env()
child_env["SOCKET_WRAPPER_DEFAULT_IFACE"] = "%i" % CHILD_IFACE
child_env["SOCKET_WRAPPER_DIR"] = TMPDIR
......@@ -219,6 +222,7 @@ def setup_env(child_env, config, config_name, j2template):
"NO_MINIMIZE" : no_minimize,
"TRUST_ANCHOR" : trust_anchor_str,
"WORKING_DIR" : TMPDIR,
"INSTALL_DIR" : INSTALLDIR
}
cfg_rendered = j2template.render(j2template_ctx)
f = open(os.path.join(TMPDIR,config_name), 'w')
......@@ -240,6 +244,10 @@ def play_object(path, binary_name, config_name, j2template, binary_additional_pa
# Setup daemon environment
daemon_env = os.environ.copy()
setup_env(daemon_env, config, config_name, j2template)
server = testserver.TestServer(scenario, config, DEFAULT_IFACE, CHILD_IFACE)
server.start()
# Start binary
daemon_proc = None
daemon_log = open('%s/server.log' % TMPDIR, 'w')
......@@ -260,9 +268,9 @@ def play_object(path, binary_name, config_name, j2template, binary_additional_pa
sock.connect((testserver.get_local_addr_str(socket.AF_INET, CHILD_IFACE), 53))
except: continue
break
sock.close()
# Play scenario
server = testserver.TestServer(scenario, config, DEFAULT_IFACE, CHILD_IFACE)
server.start()
try:
server.play()
finally:
......@@ -272,7 +280,7 @@ def play_object(path, binary_name, config_name, j2template, binary_additional_pa
if 'VERBOSE' in os.environ:
print('[ LOG ]\n%s' % open('%s/server.log' % TMPDIR).read())
# Do not clear files if the server crashed (for analysis)
del_files(TMPDIR)
# del_files(TMPDIR)
def test_platform(*args):
if sys.platform == 'windows':
......
import os
import threading
dprint_lock = threading.Lock()
def dprint(tag, msg):
""" Verbose logging (if enabled). """
if 'VERBOSE' in os.environ:
dprint_lock.acquire()
print tag, msg
dprint_lock.release()
#!/bin/bash
# Path to scenario files
TESTS=sets/knotd/master
# Path to daemon
DAEMON=knotd
# Template file name
TEMPLATE=template/knotd_master.j2
# Config file name
CONFIG=knotd.conf
# Additional parameter for knotd
# it means configuration file can be found in working directory
ADDITIONAL="-c ./knotd.conf"
export TESTS DAEMON TEMPLATE CONFIG ADDITIONAL
make
#!/bin/bash
# Path to scenario files
TESTS=sets/knotd/slave
# Path to daemon
DAEMON=knotd
# Template file name
TEMPLATE=template/knotd_slave.j2
# Config file name
CONFIG=knotd.conf
# Additional parameter for knotd
# it means configuration file can be found in working directory
ADDITIONAL="-c ./knotd.conf"
export TESTS DAEMON TEMPLATE CONFIG ADDITIONAL
make
#!/bin/bash
# Path to scenario files
TESTS=sets/resolver
# Path to daemon
DAEMON=kresd
# Template file name
TEMPLATE=template/kresd.j2
# Config file name
CONFIG=config
export TESTS DAEMON TEMPLATE CONFIG
make
#!/bin/bash
# Path to scenario files
TESTS=sets/resolver
# Path to daemon
DAEMON=pdns_recursor
# Template file name
TEMPLATE=template/recursor.j2
# Config file name
CONFIG=recursor.conf
# Additional parameter for pdns_recursor
# it means configuration file can be found in working directory
ADDITIONAL=--config-dir=./
export TESTS DAEMON TEMPLATE CONFIG ADDITIONAL
make
......@@ -8,11 +8,7 @@ import os
import itertools
import time
from datetime import datetime
def dprint(msg):
""" Verbose logging (if enabled). """
if 'VERBOSE' in os.environ:
print(msg)
from dprint import dprint
class Entry:
"""
......@@ -100,7 +96,7 @@ class Entry:
def adjust_reply(self, query):
""" Copy scripted reply and adjust to received query. """
answer = dns.message.from_text(self.message.to_text())
answer = self.message
answer.use_edns(query.edns, query.ednsflags)
if 'copy_id' in self.adjust_fields:
answer.id = query.id
......@@ -168,11 +164,14 @@ class Entry:
def __rr_add(self, section, rr):
""" Merge record to existing RRSet, or append to given section. """
for existing_rr in section:
if existing_rr.match(rr.name, rr.rdclass, rr.rdtype, 0):
existing_rr += rr
return
section.append(rr)
if rr.rdtype != dns.rdatatype.SOA:
for existing_rr in section:
if existing_rr.match(rr.name, rr.rdclass, rr.rdtype, 0):
existing_rr += rr
return
section.append(rr)
def __rr_from_str(self, owner, args):
""" Parse RR from tokenized string. """
......@@ -280,20 +279,25 @@ class Step:
def play(self, ctx, peeraddr):
""" Play one step from a scenario. """
dprint('[ STEP %03d ] %s' % (self.id, self.type))
dtag = '[ STEP %03d ] %s' % (self.id, self.type)
if self.type == 'QUERY':
dprint(self.data[0].message.to_text())
dprint(dtag, self.data[0].message.to_text())
return self.__query(ctx, peeraddr)
elif self.type == 'CHECK_OUT_QUERY':
pass # Ignore
dprint(dtag, '')
pass # Ignore
elif self.type == 'CHECK_ANSWER':
dprint(dtag, '')
return self.__check_answer(ctx)
elif self.type == 'TIME_PASSES':
dprint(dtag, '')
return self.__time_passes(ctx)
elif self.type == 'REPLY':
dprint(dtag, '')
pass
else:
raise Exception('step %s unsupported' % self.type)
raise Exception('step id %03d type %s unsupported' % (self.id, self.type))
def __check_answer(self, ctx):
""" Compare answer from previously resolved query. """
......@@ -301,12 +305,12 @@ class Step:
raise Exception("response definition required")
expected = self.data[0]
if expected.is_raw_data_entry is True:
dprint(ctx.last_raw_answer.to_text())
dprint("[ __check_answer ]", ctx.last_raw_answer.to_text())
expected.cmp_raw(ctx.last_raw_answer)
else:
if ctx.last_answer is None:
raise Exception("no answer from preceding query")
dprint(ctx.last_answer.to_text())
dprint("[ __check_answer ]", ctx.last_answer.to_text())
expected.match(ctx.last_answer)
def __query(self, ctx, peeraddr):
......@@ -345,10 +349,11 @@ class Step:
time_file = open(os.environ["FAKETIME_TIMESTAMP_FILE"], 'r')
line = time_file.readline().strip()
time_file.close()
t = time.mktime(datetime.strptime(line, '%Y-%m-%d %H:%M:%S').timetuple())
t = time.mktime(datetime.strptime(line, '@%Y-%m-%d %H:%M:%S').timetuple())
t += int(self.args[1])
time_file = open(os.environ["FAKETIME_TIMESTAMP_FILE"], 'w')
time_file.write(datetime.fromtimestamp(t).strftime('%Y-%m-%d %H:%M:%S') + "\n")
time_file.write(datetime.fromtimestamp(t).strftime('@%Y-%m-%d %H:%M:%S') + "\n")
time_file.flush()
time_file.close()
class Scenario:
......
This diff is collapsed.
example.com. 3600 SOA dns1.example.com. hostmaster.example.com. 2010111213 21600 3600 604800 86400
example.com. 3600 NS dns1.example.com.
example.com. 3600 NS dns2.example.com.
example.com. 3600 MX 10 mail.example.com.
dns1.example.com. 3600 A 127.0.0.10
dns1.example.com. 3600 AAAA fd00::5357:5f0a
dns2.example.com. 3600 A 127.0.0.11
dns2.example.com. 3600 AAAA fd00::5357:5f0b
mail.example.com. 3600 A 127.0.0.12
mail.example.com. 3600 AAAA fd00::5357:5f0c
stub-addr: 127.0.0.2
CONFIG_END
SCENARIO_BEGIN Simple knotd query.
STEP 1 QUERY
ENTRY_BEGIN
REPLY RD
SECTION QUESTION
example.com IN NS
ENTRY_END
STEP 2 CHECK_ANSWER
ENTRY_BEGIN
MATCH all
REPLY QR RD AA NOERROR
SECTION QUESTION
example.com. IN NS
SECTION ANSWER
example.com. 3600 IN NS dns1.example.com.
example.com. 3600 IN NS dns2.example.com.
SECTION ADDITIONAL
dns1.example.com. 3600 IN A 127.0.0.10
dns1.example.com. 3600 IN AAAA fd00::5357:5f0a
dns2.example.com. 3600 IN A 127.0.0.11
dns2.example.com. 3600 IN AAAA fd00::5357:5f0b
ENTRY_END
stub-addr: 127.0.0.2
CONFIG_END
SCENARIO_BEGIN Simple knotd query.
RANGE_BEGIN 0 100
ADDRESS 127.0.0.2
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id
REPLY QR RD NOERROR
SECTION QUESTION
example.com. IN AXFR
SECTION ANSWER
example.com. 3600 IN SOA dns1.example.com. hostmaster.example.com. 2010111213 21600 3600 604800 86400
example.com. 3600 IN NS dns1.example.com.
example.com. 3600 IN NS dns2.example.com.
example.com. 3600 IN MX 10 mail.example.com.
dns1.example.com. 3600 IN A 127.0.0.10
dns1.example.com. 3600 IN AAAA fd00::5357:5f0A
dns2.example.com. 3600 IN A 127.0.0.11
dns2.example.com. 3600 IN AAAA fd00::5357:5f0B
mail.example.com. 3600 IN A 127.0.0.12
mail.example.com. 3600 IN AAAA fd00::5357:5f0C
example.com. 3600 IN SOA dns1.example.com. hostmaster.example.com. 2010111213 21600 3600 604800 86400
ENTRY_END
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id
REPLY QR RD NOERROR
SECTION QUESTION
example.com. IN SOA
SECTION ANSWER
example.com. 3600 IN SOA dns1.example.com. hostmaster.example.com. 2010111213 21600 3600 604800 86400
ENTRY_END
RANGE_END
STEP 1 QUERY
ENTRY_BEGIN
REPLY RD
SECTION QUESTION
example.com IN NS
ENTRY_END
STEP 2 CHECK_ANSWER
ENTRY_BEGIN
MATCH all
REPLY QR AA RD NOERROR
SECTION QUESTION
example.com. IN NS
SECTION ANSWER
example.com. 3600 IN NS dns1.example.com.
example.com. 3600 IN NS dns2.example.com.
SECTION ADDITIONAL
dns1.example.com. 3600 IN A 127.0.0.10
dns1.example.com. 3600 IN AAAA fd00::5357:5f0A
dns2.example.com. 3600 IN A 127.0.0.11
dns2.example.com. 3600 IN AAAA fd00::5357:5f0B
ENTRY_END
name: "."
stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET.
stub-addr: 127.0.0.2 # K.ROOT-SERVERS.NET.
CONFIG_END
SCENARIO_BEGIN raw queries from inbound.
......@@ -18641,7 +18641,7 @@ SECTION QUESTION
SECTION ANSWER
. IN NS K.ROOT-SERVERS.NET.
SECTION ADDITIONAL
K.ROOT-SERVERS.NET. IN A 193.0.14.129
K.ROOT-SERVERS.NET. IN A 127.0.0.2
ENTRY_END
; query sent to root server
......@@ -18655,7 +18655,7 @@ cz. IN A
SECTION AUTHORITY
cz. IN NS ns1.cz.
SECTION ADDITIONAL
ns1.cz. IN A 168.192.2.2
ns1.cz. IN A 127.0.0.3
ENTRY_END
; this is the formerr answer
......@@ -18678,11 +18678,11 @@ REPLY QR AA NOERROR
SECTION QUESTION
cz. IN A
SECTION ANSWER
cz. IN A 10.20.30.40
cz. IN A 127.0.0.4
SECTION AUTHORITY
cz. IN NS ns1.cz.
SECTION ADDITIONAL
ns1.cz. IN A 168.192.2.2
ns1.cz. IN A 127.0.0.3
ENTRY_END
; is the final answer correct?
......@@ -18693,7 +18693,7 @@ REPLY QR RD RA
SECTION QUESTION
cz. IN A
SECTION ANSWER
cz. IN A 10.20.30.40
cz. IN A 127.0.0.4
ENTRY_END
SCENARIO END
; config options
target-fetch-policy: "3 2 1 0 0"
name: "."
stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET.
stub-addr: 127.0.0.2 # K.ROOT-SERVERS.NET.
CONFIG_END
SCENARIO_BEGIN Test iterator with NS sending CNAME answer and authority of CNAME target.
; K.ROOT-SERVERS.NET.
RANGE_BEGIN 0 100
ADDRESS 193.0.14.129
ADDRESS 127.0.0.2
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id
......@@ -18,7 +18,7 @@ SECTION QUESTION
SECTION ANSWER
. IN NS K.ROOT-SERVERS.NET.
SECTION ADDITIONAL
K.ROOT-SERVERS.NET. IN A 193.0.14.129
K.ROOT-SERVERS.NET. IN A 127.0.0.2
ENTRY_END
ENTRY_BEGIN
......@@ -30,7 +30,7 @@ ingdirect.com.au. IN A
SECTION AUTHORITY
ingdirect.com.au. IN NS l4.nstld.com.
SECTION ADDITIONAL
l4.nstld.com. IN A 209.112.114.33
l4.nstld.com. IN A 127.0.0.3
ENTRY_END
ENTRY_BEGIN
......@@ -40,7 +40,7 @@ REPLY QR NOERROR
SECTION QUESTION
l4.nstld.com. IN A
SECTION ANSWER
l4.nstld.com. IN A 209.112.114.33
l4.nstld.com. IN A 127.0.0.3
ENTRY_END
ENTRY_BEGIN
......@@ -62,7 +62,7 @@ clb.ingdirect.com.au. IN A
SECTION AUTHORITY
clb.ingdirect.com.au. IN NS ncfphywebgtm01-c.ingdirect.com.au.
SECTION ADDITIONAL
ncfphywebgtm01-c.ingdirect.com.au. IN A 203.92.27.132
ncfphywebgtm01-c.ingdirect.com.au. IN A 127.0.0.4
ENTRY_END
ENTRY_BEGIN
......@@ -79,7 +79,7 @@ RANGE_END
; l4.nstld.com.
RANGE_BEGIN 0 100
ADDRESS 209.112.114.33
ADDRESS 127.0.0.3
ENTRY_BEGIN
MATCH opcode qtype qname
......@@ -92,14 +92,14 @@ www.ingdirect.com.au. IN CNAME www.clb.ingdirect.com.au.
SECTION AUTHORITY
clb.ingdirect.com.au. IN NS ncfphywebgtm01-c.ingdirect.com.au.
SECTION ADDITIONAL
ncfphywebgtm01-c.ingdirect.com.au. IN A 203.92.27.132
ncfphywebgtm01-c.ingdirect.com.au. IN A 127.0.0.4
ENTRY_END
RANGE_END
; ncfphywebgtm01-c.ingdirect.com.au.
RANGE_BEGIN 0 100
ADDRESS 203.92.27.132
ADDRESS 127.0.0.4
ENTRY_BEGIN
MATCH opcode qtype qname
......@@ -108,7 +108,7 @@ REPLY QR AA NOERROR
SECTION QUESTION
www.clb.ingdirect.com.au. IN A
SECTION ANSWER
www.clb.ingdirect.com.au. IN A 203.31.183.134
www.clb.ingdirect.com.au. IN A 127.0.0.5
ENTRY_END
ENTRY_BEGIN
......@@ -137,7 +137,7 @@ SECTION QUESTION
www.ingdirect.com.au. IN A
SECTION ANSWER
www.ingdirect.com.au. IN CNAME www.clb.ingdirect.com.au.
www.clb.ingdirect.com.au. IN A 203.31.183.134
www.clb.ingdirect.com.au. IN A 127.0.0.5
ENTRY_END
SCENARIO_END
; config options
target-fetch-policy: "0 0 0 0 0"
name: "."
stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET.
stub-addr: 127.0.0.2 # K.ROOT-SERVERS.NET.
CONFIG_END
SCENARIO_BEGIN Test iterative resolve with cached cname for nameserver
......@@ -14,7 +14,7 @@ SCENARIO_BEGIN Test iterative resolve with cached cname for nameserver
; K.ROOT-SERVERS.NET.
RANGE_BEGIN 0 100
ADDRESS 193.0.14.129
ADDRESS 127.0.0.2
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id
......@@ -24,7 +24,7 @@ SECTION QUESTION
SECTION ANSWER
. IN NS K.ROOT-SERVERS.NET.
SECTION ADDITIONAL
K.ROOT-SERVERS.NET. IN A 193.0.14.129
K.ROOT-SERVERS.NET. IN A 127.0.0.2
ENTRY_END
ENTRY_BEGIN
......@@ -46,7 +46,7 @@ com. IN A
SECTION AUTHORITY
com. IN NS a.gtld-servers.net.
SECTION ADDITIONAL
a.gtld-servers.net. IN A 192.5.6.30
a.gtld-servers.net. IN A 127.0.0.3
ENTRY_END
ENTRY_BEGIN
......@@ -58,13 +58,13 @@ nl. IN A
SECTION AUTHORITY
nl. IN NS ns2.nic.nl.
SECTION ADDITIONAL
ns2.nic.nl. IN A 192.1.1.2
ns2.nic.nl. IN A 127.0.0.4
ENTRY_END
RANGE_END
; a.gtld-servers.net. ".com"
RANGE_BEGIN 0 100
ADDRESS 192.5.6.30
ADDRESS 127.0.0.3
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id
......@@ -74,7 +74,7 @@ com. IN NS
SECTION ANSWER
com. IN NS a.gtld-servers.net.
SECTION ADDITIONAL
a.gtld-servers.net. IN A 192.5.6.30
a.gtld-servers.net. IN A 127.0.0.3
ENTRY_END
ENTRY_BEGIN
......@@ -88,9 +88,9 @@ example.com. IN NS ns.example.com.
example.com. IN NS ns2.example.com.
SECTION ADDITIONAL
;;; but really a CNAME in child server
ns.example.com. 1 IN A 1.2.3.4
ns2.example.com. IN A 1.2.3.5
ns2.example.com. IN AAAA 2002::5
ns.example.com. 1 IN A 127.0.0.5
ns2.example.com. IN A 127.0.0.6
ns2.example.com. IN AAAA fd00::5357:5f07
ENTRY_END
; lame answers back to root for .nl (.com server not authoritative for .nl)
......@@ -103,14 +103,14 @@ nl. IN A
SECTION AUTHORITY
. IN NS K.ROOT-SERVERS.NET.
SECTION ADDITIONAL
K.ROOT-SERVERS.NET. IN A 193.0.14.129
K.ROOT-SERVERS.NET. IN A 127.0.0.2
ENTRY_END
RANGE_END
; ns2.nic.nl ".nl"
RANGE_BEGIN 0 100
ADDRESS 192.1.1.2
ADDRESS 127.0.0.4
ENTRY_BEGIN
MATCH opcode subdomain
......@@ -121,14 +121,14 @@ bla.nl. IN A
SECTION AUTHORITY
bla.nl. IN NS ns.bla.nl.
SECTION ADDITIONAL
ns.bla.nl. IN A 1.2.3.6
ns.bla.nl. IN A 127.0.0.8
ENTRY_END
RANGE_END
; ns.bla.nl "bla..nl"
RANGE_BEGIN 0 100
ADDRESS 1.2.3.6
ADDRESS 127.0.0.8
ENTRY_BEGIN
MATCH opcode qtype qname
......@@ -137,7 +137,7 @@ REPLY QR NOERROR
SECTION QUESTION
ns.bla.nl. IN A
SECTION ANSWER
ns.bla.nl. IN A 1.2.3.6
ns.bla.nl. IN A 127.0.0.8
SECTION AUTHORITY
bla.nl. IN NS ns.bla.nl.
SECTION ADDITIONAL
......@@ -172,13 +172,13 @@ REPLY QR NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
www.example.com. IN A 10.20.30.40
www.example.com. IN A 127.0.0.9
ENTRY_END
RANGE_END
; ns.example.com "example.com"
RANGE_BEGIN 0 100
ADDRESS 1.2.3.4
ADDRESS 127.0.0.5
ENTRY_BEGIN
MATCH opcode qname
ADJUST copy_id copy_query
......@@ -196,14 +196,14 @@ REPLY QR NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
www.example.com. IN A 10.20.30.40
www.example.com. IN A 127.0.0.9
ENTRY_END
RANGE_END
; ns2.example.com "example.com"
; bad failing server
RANGE_BEGIN 0 100
ADDRESS 1.2.3.5
ADDRESS 127.0.0.6
ENTRY_BEGIN
MATCH opcode
ADJUST copy_id copy_query
......@@ -217,7 +217,7 @@ RANGE_END
; ns2.example.com "example.com"
; bad failing server
RANGE_BEGIN 0 100
ADDRESS 2002::5
ADDRESS fd00::5357:5f07
ENTRY_BEGIN
MATCH opcode
ADJUST copy_id copy_query
......@@ -267,7 +267,7 @@ REPLY QR RD RA NOERROR
SECTION QUESTION
www.example.com. IN A
SECTION ANSWER
www.example.com. IN A 10.20.30.40
www.example.com. IN A 127.0.0.9
SECTION AUTHORITY
SECTION ADDITIONAL
ENTRY_END
......
; config options
target-fetch-policy: "0 0 0 0 0"
name: "."
stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET.
stub-addr: 127.0.0.2 # K.ROOT-SERVERS.NET.
CONFIG_END
SCENARIO_BEGIN Test double cname in reply.
......@@ -10,7 +10,7 @@ SCENARIO_BEGIN Test double cname in reply.
; K.ROOT-SERVERS.NET.
RANGE_BEGIN 0 100
ADDRESS 193.0.14.129
ADDRESS 127.0.0.2
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id
......@@ -20,7 +20,7 @@ SECTION QUESTION
SECTION ANSWER
. IN NS K.ROOT-SERVERS.NET.
SECTION ADDITIONAL
K.ROOT-SERVERS.NET. IN A 193.0.14.129
K.ROOT-SERVERS.NET. IN A 127.0.0.2
ENTRY_END
ENTRY_BEGIN
......@@ -32,7 +32,7 @@ www.example.com. IN A
SECTION AUTHORITY
com. IN NS a.gtld-servers.net.
SECTION ADDITIONAL
a.gtld-servers.net. IN A 192.5.6.30
a.gtld-servers.net. IN A 127.0.0.3
ENTRY_END
ENTRY_BEGIN
......@@ -44,14 +44,14 @@ www.next.com. IN A
SECTION AUTHORITY
com. IN NS a.gtld-servers.net.
SECTION ADDITIONAL
a.gtld-servers.net. IN A 192.5.6.30
a.gtld-servers.net. IN A 127.0.0.3
ENTRY_END
RANGE_END
; a.gtld-servers.net.
RANGE_BEGIN 0 100
ADDRESS 192.5.6.30
ADDRESS 127.0.0.3
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id
......@@ -61,7 +61,7 @@ com. IN NS
SECTION ANSWER
com. IN NS a.gtld-servers.net.
SECTION ADDITIONAL
a.gtld-servers.net. IN A 192.5.6.30
a.gtld-servers.net. IN A 127.0.0.3
ENTRY_END
ENTRY_BEGIN
......@@ -73,7 +73,7 @@ www.example.com. IN A
SECTION AUTHORITY
example.com. IN NS ns.example.com.
SECTION ADDITIONAL