BIND 10 trac1696, updated. 6dc12fe4b4f751a8692bb2f577d178de458cbe31 [1696] also check edns' DO flag
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed Feb 22 15:18:03 UTC 2012
The branch, trac1696 has been updated
via 6dc12fe4b4f751a8692bb2f577d178de458cbe31 (commit)
from ce39e53bff7967573672e7172ec9d18b8bac4bab (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 6dc12fe4b4f751a8692bb2f577d178de458cbe31
Author: Jelte Jansen <jelte at isc.org>
Date: Wed Feb 22 16:17:44 2012 +0100
[1696] also check edns' DO flag
-----------------------------------------------------------------------
Summary of changes:
tests/lettuce/features/nsec3_auth.feature | 12 +++++++-----
tests/lettuce/features/terrain/querying.py | 23 ++++++++++++++++++++---
2 files changed, 27 insertions(+), 8 deletions(-)
-----------------------------------------------------------------------
diff --git a/tests/lettuce/features/nsec3_auth.feature b/tests/lettuce/features/nsec3_auth.feature
index 8995152..da883e2 100644
--- a/tests/lettuce/features/nsec3_auth.feature
+++ b/tests/lettuce/features/nsec3_auth.feature
@@ -14,7 +14,7 @@ Feature: NSEC3 Authoritative service
Given I have bind10 running with configuration nsec3/nsec3_auth.config
A dnssec query for a.c.x.w.example. should have rcode NXDOMAIN
The last query response should have flags qr aa rd
- # TODO: check DO bit?
+ The last query response should have edns_flags do
The last query response should have ancount 0
The last query response should have nscount 8
The last query response should have adcount 1
@@ -34,7 +34,7 @@ Feature: NSEC3 Authoritative service
Given I have bind10 running with configuration nsec3/nsec3_auth.config
A dnssec query for ns1.example. type MX should have rcode NOERROR
The last query response should have flags qr aa rd
- # TODO: check DO bit?
+ The last query response should have edns_flags do
The last query response should have ancount 0
The last query response should have nscount 4
The last query response should have adcount 1
@@ -50,7 +50,7 @@ Feature: NSEC3 Authoritative service
Given I have bind10 running with configuration nsec3/nsec3_auth.config
A dnssec query for y.w.example. should have rcode NOERROR
The last query response should have flags qr aa rd
- # TODO: check DO bit?
+ The last query response should have edns_flags do
The last query response should have ancount 0
The last query response should have nscount 4
The last query response should have adcount 1
@@ -66,7 +66,7 @@ Feature: NSEC3 Authoritative service
Given I have bind10 running with configuration nsec3/nsec3_auth.config
A dnssec query for mc.c.example. type MX should have rcode NOERROR
The last query response should have flags qr rd
- # TODO: check DO bit?
+ The last query response should have edns_flags do
The last query response should have ancount 0
The last query response should have nscount 6
The last query response should have adcount 3
@@ -89,7 +89,7 @@ Feature: NSEC3 Authoritative service
Given I have bind10 running with configuration nsec3/nsec3_auth.config
A dnssec query for a.z.w.example. type MX should have rcode NOERROR
The last query response should have flags qr aa rd
- # TODO: check DO bit?
+ The last query response should have edns_flags do
# BUG: NO RRSIG IN WILDCARD RESPONSE!!! (see ticket #1701)
#The last query response should have ancount 2
The last query response should have nscount 5
@@ -126,6 +126,7 @@ Feature: NSEC3 Authoritative service
Given I have bind10 running with configuration nsec3/nsec3_auth.config
A dnssec query for a.z.w.example. type AAAA should have rcode NOERROR
The last query response should have flags qr aa rd
+ The last query response should have edns_flags do
The last query response should have ancount 0
The last query response should have nscount 8
The last query response should have adcount 1
@@ -145,6 +146,7 @@ Feature: NSEC3 Authoritative service
Given I have bind10 running with configuration nsec3/nsec3_auth.config
A dnssec query for example. type DS should have rcode NOERROR
The last query response should have flags qr aa rd
+ The last query response should have edns_flags do
The last query response should have ancount 0
The last query response should have nscount 4
The last query response should have adcount 1
diff --git a/tests/lettuce/features/terrain/querying.py b/tests/lettuce/features/terrain/querying.py
index 100c6e8..9eff8ea 100644
--- a/tests/lettuce/features/terrain/querying.py
+++ b/tests/lettuce/features/terrain/querying.py
@@ -41,9 +41,10 @@ import re
#
# The following attributes are 'parsed' from the response, all as strings,
# and end up as direct attributes of the QueryResult object:
-# opcode, rcode, id, flags, qdcount, ancount, nscount, adcount
-# (flags is one string with all flags, in the order they appear in the
-# response packet.)
+# opcode, rcode, id, flags, qdcount, ancount, nscount, adcount,
+# edns_version, edns_flags, and edns_udp_size
+# (flags and edns_flags are both one string with all flags, in the order
+# in which they appear in the response packet.)
#
# this will set 'rcode' as the result code, we 'define' one additional
# rcode, "NO_ANSWER", if the dig process returned an error code itself
@@ -55,6 +56,7 @@ import re
# See server_from_sqlite3.feature for various examples to perform queries
class QueryResult(object):
status_re = re.compile("opcode: ([A-Z])+, status: ([A-Z]+), id: ([0-9]+)")
+ edns_re = re.compile("; EDNS: version: ([0-9]+), flags: ([a-z ]*); udp: ([0-9]+)")
flags_re = re.compile("flags: ([a-z ]+); QUERY: ([0-9]+), ANSWER: " +
"([0-9]+), AUTHORITY: ([0-9]+), ADDITIONAL: ([0-9]+)")
@@ -106,6 +108,8 @@ class QueryResult(object):
"""
if line == ";; ANSWER SECTION:\n":
self.line_handler = self.parse_answer
+ elif line == ";; OPT PSEUDOSECTION:\n":
+ self.line_handler = self.parse_opt
elif line == ";; AUTHORITY SECTION:\n":
self.line_handler = self.parse_authority
elif line == ";; ADDITIONAL SECTION:\n":
@@ -135,6 +139,19 @@ class QueryResult(object):
self.nscount = flags_match.group(4)
self.adcount = flags_match.group(5)
+ def parse_opt(self, line):
+ """
+ Parse the header lines of the query response.
+ Parameters:
+ line: The current line of the response.
+ """
+ if not self._check_next_header(line):
+ edns_match = self.edns_re.search(line)
+ if edns_match is not None:
+ self.edns_version = edns_match.group(1)
+ self.edns_flags = edns_match.group(2)
+ self.edns_udp_size = edns_match.group(3)
+
def parse_question(self, line):
"""
Parse the question section lines of the query response.
More information about the bind10-changes
mailing list