BIND 10 trac2218_2, updated. 51cbca9e606137fcdad96a99824f27809701afcc [2218] Test DomainTree::largestNode() for empty trees
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed Sep 26 12:16:47 UTC 2012
The branch, trac2218_2 has been updated
via 51cbca9e606137fcdad96a99824f27809701afcc (commit)
via 12d5f67f3e58ab09f8369b4218baa2c8a40e2b9a (commit)
via 1830f45cda873932566b1eacfb15f5f6170cf916 (commit)
via 593cc7dda0802634b12373f0215b6033e1791118 (commit)
via 736bcacc37bde8182160fbf5b4c8191a1846373e (commit)
via 8c2ea7566498c8b3f826a85316ae63f0d57e80b0 (commit)
via babcf09173d27ad28f53d911d1908c7375fd4e22 (commit)
via ab51eb2f65a390b98b5601f8e7bf5bd6634e4ad6 (commit)
via 493a2b3d0b3c494aced54e2778595618ec6f5100 (commit)
from 6c447559f19adc0e040a6a6f44c06dffcf3ce0ff (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 51cbca9e606137fcdad96a99824f27809701afcc
Author: Mukund Sivaraman <muks at isc.org>
Date: Wed Sep 26 17:46:35 2012 +0530
[2218] Test DomainTree::largestNode() for empty trees
commit 12d5f67f3e58ab09f8369b4218baa2c8a40e2b9a
Author: Mukund Sivaraman <muks at isc.org>
Date: Wed Sep 26 17:46:07 2012 +0530
[2218] Update other tests for previous commit's API change
commit 1830f45cda873932566b1eacfb15f5f6170cf916
Author: JINMEI Tatuya <jinmei at isc.org>
Date: Wed Sep 26 17:34:01 2012 +0530
[2218] Change return type of findZoneData()
commit 593cc7dda0802634b12373f0215b6033e1791118
Author: Mukund Sivaraman <muks at isc.org>
Date: Wed Sep 26 17:27:43 2012 +0530
[2218] Update doc comment for InMemoryClient::findZoneData()
commit 736bcacc37bde8182160fbf5b4c8191a1846373e
Author: Mukund Sivaraman <muks at isc.org>
Date: Wed Sep 26 17:25:42 2012 +0530
[2218] Test that 0 length NSEC3 hash salts are compared correctly
commit 8c2ea7566498c8b3f826a85316ae63f0d57e80b0
Author: Mukund Sivaraman <muks at isc.org>
Date: Wed Sep 26 17:16:31 2012 +0530
[2218] Test that the signed flag is set in ZoneData when NSEC3 records exist
commit babcf09173d27ad28f53d911d1908c7375fd4e22
Author: Mukund Sivaraman <muks at isc.org>
Date: Wed Sep 26 17:10:36 2012 +0530
[2218] Remove unused DomainTreeNode::getLargestInSubTree() and its tests
commit ab51eb2f65a390b98b5601f8e7bf5bd6634e4ad6
Author: Mukund Sivaraman <muks at isc.org>
Date: Wed Sep 26 17:07:41 2012 +0530
[2218] Add an API doc note that DomainTree::largestNode() doesn't throw
commit 493a2b3d0b3c494aced54e2778595618ec6f5100
Author: Mukund Sivaraman <muks at isc.org>
Date: Wed Sep 26 17:06:29 2012 +0530
[2218] Change back size of DomainTreeNodeChain's level counter to size_t
-----------------------------------------------------------------------
Summary of changes:
src/lib/datasrc/memory/domaintree.h | 27 ++------
src/lib/datasrc/memory/memory_client.cc | 4 +-
src/lib/datasrc/memory/memory_client.h | 8 +--
.../datasrc/memory/tests/domaintree_unittest.cc | 47 +++-----------
.../datasrc/memory/tests/memory_client_unittest.cc | 68 ++++++++++++--------
src/lib/datasrc/memory/tests/testdata/Makefile.am | 1 +
.../testdata/example.org-nsec3-empty-salt.zone} | 8 +--
7 files changed, 67 insertions(+), 96 deletions(-)
copy src/lib/datasrc/{tests/testdata/example.org.nsec3-signed => memory/tests/testdata/example.org-nsec3-empty-salt.zone} (91%)
-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/memory/domaintree.h b/src/lib/datasrc/memory/domaintree.h
index 1910b80..acc5e2b 100644
--- a/src/lib/datasrc/memory/domaintree.h
+++ b/src/lib/datasrc/memory/domaintree.h
@@ -390,14 +390,6 @@ private:
/// This method never throws an exception.
const DomainTreeNode<T>* getSubTreeRoot() const;
- /// \brief returns the largest node of this node's subtree
- ///
- /// This method takes a node and returns the largest node in its
- /// subtree.
- ///
- /// This method never throws an exception.
- const DomainTreeNode<T>* getLargestInSubTree() const;
-
public:
/// \brief returns the parent of the root of its subtree
///
@@ -578,17 +570,6 @@ DomainTreeNode<T>::getUpperNode() const {
}
template <typename T>
-const DomainTreeNode<T>*
-DomainTreeNode<T>::getLargestInSubTree() const {
- const DomainTreeNode<T>* sroot = getSubTreeRoot();
- while (sroot->getRight() != NULL) {
- sroot = sroot->getRight();
- }
-
- return (sroot);
-}
-
-template <typename T>
isc::dns::LabelSequence
DomainTreeNode<T>::getAbsoluteLabels(
uint8_t buf[isc::dns::LabelSequence::MAX_SERIALIZED_LENGTH]) const
@@ -770,7 +751,7 @@ public:
/// chain, 0 will be returned.
///
/// \exception None
- uint32_t getLevelCount() const { return (level_count_); }
+ size_t getLevelCount() const { return (level_count_); }
/// \brief return the absolute name for the node which this
/// \c DomainTreeNodeChain currently refers to.
@@ -788,7 +769,7 @@ public:
const DomainTreeNode<T>* top_node = top();
isc::dns::Name absolute_name = top_node->getName();
- uint32_t level = level_count_ - 1;
+ size_t level = level_count_ - 1;
while (level > 0) {
top_node = nodes_[level - 1];
absolute_name = absolute_name.concatenate(top_node->getName());
@@ -848,7 +829,7 @@ private:
// it's also equal to the possible maximum level.
const static int RBT_MAX_LEVEL = isc::dns::Name::MAX_LABELS;
- uint32_t level_count_;
+ size_t level_count_;
const DomainTreeNode<T>* nodes_[RBT_MAX_LEVEL];
const DomainTreeNode<T>* last_compared_;
isc::dns::NameComparisonResult last_comparison_;
@@ -1305,6 +1286,8 @@ public:
/// \brief return the largest node in the tree of trees.
///
+ /// \throw none
+ ///
/// \return A \c DomainTreeNode that is the largest node in the
/// tree. If there are no nodes, then \c NULL is returned.
const DomainTreeNode<T>* largestNode() const;
diff --git a/src/lib/datasrc/memory/memory_client.cc b/src/lib/datasrc/memory/memory_client.cc
index 8497d99..e0bab6d 100644
--- a/src/lib/datasrc/memory/memory_client.cc
+++ b/src/lib/datasrc/memory/memory_client.cc
@@ -708,10 +708,10 @@ InMemoryClient::findZone(const isc::dns::Name& zone_name) const {
return (DataSourceClient::FindResult(result.code, finder));
}
-isc::datasrc::memory::ZoneTable::FindResult
+const ZoneData*
InMemoryClient::findZoneData(const isc::dns::Name& zone_name) {
ZoneTable::FindResult result(impl_->zone_table_->findZone(zone_name));
- return (result);
+ return (result.zone_data);
}
result::Result
diff --git a/src/lib/datasrc/memory/memory_client.h b/src/lib/datasrc/memory/memory_client.h
index d33b91c..66e471a 100644
--- a/src/lib/datasrc/memory/memory_client.h
+++ b/src/lib/datasrc/memory/memory_client.h
@@ -20,7 +20,7 @@
#include <datasrc/iterator.h>
#include <datasrc/client.h>
#include <datasrc/memory/zone_table.h>
-#include <datasrc/zonetable.h>
+#include <datasrc/memory/zone_data.h>
#include <string>
@@ -215,10 +215,8 @@ public:
/// This is mainly intended for use in unit tests and should not be
/// used in other code.
///
- /// This derived version of the method never throws an exception.
- /// For other details see \c DataSourceClient::findZone().
- isc::datasrc::memory::ZoneTable::FindResult
- findZoneData(const isc::dns::Name& name);
+ /// \throws none
+ const ZoneData* findZoneData(const isc::dns::Name& name);
/// \brief Implementation of the getIterator method
virtual isc::datasrc::ZoneIteratorPtr
diff --git a/src/lib/datasrc/memory/tests/domaintree_unittest.cc b/src/lib/datasrc/memory/tests/domaintree_unittest.cc
index ac22a4f..0a29d7f 100644
--- a/src/lib/datasrc/memory/tests/domaintree_unittest.cc
+++ b/src/lib/datasrc/memory/tests/domaintree_unittest.cc
@@ -718,8 +718,8 @@ TEST_F(DomainTreeTest, getUpperNode) {
#if 0
-// Disabled and kept still, for use in case we make getSubTreeRoot() and
-// getLargestInSubTree() public functions again.
+// Disabled and kept still, for use in case we make getSubTreeRoot() a
+// public function again.
const char* const subtree_root_node_names[] = {
"b", "b", "b", "b", "w.y.d.e.f", "w.y.d.e.f", "p.w.y.d.e.f",
@@ -755,41 +755,7 @@ TEST_F(DomainTreeTest, getSubTreeRoot) {
EXPECT_EQ(static_cast<void*>(NULL), node);
}
-const char* const largest_node_names[] = {
- "g.h", "g.h", "g.h", "g.h", "z.d.e.f", "z.d.e.f", "q.w.y.d.e.f",
- "q.w.y.d.e.f", "q.w.y.d.e.f", "z.d.e.f", "j.z.d.e.f",
- "g.h", "k.g.h", "k.g.h"};
-
-TEST_F(DomainTreeTest, getLargestInSubTree) {
- TestDomainTreeNodeChain node_path;
- const TestDomainTreeNode* node = NULL;
- EXPECT_EQ(TestDomainTree::EXACTMATCH,
- dtree_expose_empty_node.find(Name(names[0]),
- &node,
- node_path));
- for (int i = 0; i < name_count; ++i) {
- EXPECT_NE(static_cast<void*>(NULL), node);
-
- const TestDomainTreeNode* largest_node = node->getLargestInSubTree();
- if (largest_node_names[i] != NULL) {
- const TestDomainTreeNode* largest_node2 = NULL;
- EXPECT_EQ(TestDomainTree::EXACTMATCH,
- dtree_expose_empty_node.find(Name(largest_node_names[i]),
- &largest_node2));
- EXPECT_NE(static_cast<void*>(NULL), largest_node2);
- EXPECT_EQ(largest_node, largest_node2);
- } else {
- EXPECT_EQ(static_cast<void*>(NULL), largest_node);
- }
-
- node = dtree_expose_empty_node.nextNode(node_path);
- }
-
- // We should have reached the end of the tree.
- EXPECT_EQ(static_cast<void*>(NULL), node);
-}
-
-#endif // disabled getSubTreeRoot() and getLargestInSubTree()
+#endif // disabled getSubTreeRoot()
TEST_F(DomainTreeTest, nextNode) {
@@ -1016,6 +982,13 @@ TEST_F(DomainTreeTest, previousNode) {
TEST_F(DomainTreeTest, largestNode) {
cdtnode = dtree.largestNode();
EXPECT_EQ(Name("k"), cdtnode->getName());
+
+ // Check for largest node in an empty tree.
+ TreeHolder empty_tree_holder
+ (mem_sgmt_, TestDomainTree::create(mem_sgmt_));
+ TestDomainTree& empty_tree(*empty_tree_holder.get());
+ EXPECT_EQ(static_cast<void*>(NULL),
+ empty_tree.largestNode());
}
TEST_F(DomainTreeTest, nextNodeError) {
diff --git a/src/lib/datasrc/memory/tests/memory_client_unittest.cc b/src/lib/datasrc/memory/tests/memory_client_unittest.cc
index 41e6b92..8133031 100644
--- a/src/lib/datasrc/memory/tests/memory_client_unittest.cc
+++ b/src/lib/datasrc/memory/tests/memory_client_unittest.cc
@@ -180,6 +180,11 @@ TEST_F(MemoryClientTest, load) {
// should not result in any exceptions.
client_->load(Name("example.org"),
TEST_DATA_DIR "/example.org.zone");
+ const ZoneData* zone_data =
+ client_->findZoneData(Name("example.org"));
+ ASSERT_NE(static_cast<const ZoneData*>(NULL), zone_data);
+ EXPECT_FALSE(zone_data->isSigned());
+ EXPECT_FALSE(zone_data->isNSEC3Signed());
}
TEST_F(MemoryClientTest, loadFromIterator) {
@@ -225,11 +230,33 @@ TEST_F(MemoryClientTest, loadMemoryAllocationFailures) {
TEST_F(MemoryClientTest, loadNSEC3Signed) {
client_->load(Name("example.org"),
TEST_DATA_DIR "/example.org-nsec3-signed.zone");
+ const ZoneData* zone_data =
+ client_->findZoneData(Name("example.org"));
+ ASSERT_NE(static_cast<const ZoneData*>(NULL), zone_data);
+ EXPECT_TRUE(zone_data->isSigned());
+ EXPECT_TRUE(zone_data->isNSEC3Signed());
+}
+
+TEST_F(MemoryClientTest, loadNSEC3EmptySalt) {
+ // Load NSEC3 with empty ("-") salt. This should not throw or crash
+ // or anything.
+ client_->load(Name("example.org"),
+ TEST_DATA_DIR "/example.org-nsec3-empty-salt.zone");
+ const ZoneData* zone_data =
+ client_->findZoneData(Name("example.org"));
+ ASSERT_NE(static_cast<const ZoneData*>(NULL), zone_data);
+ EXPECT_TRUE(zone_data->isSigned());
+ EXPECT_TRUE(zone_data->isNSEC3Signed());
}
TEST_F(MemoryClientTest, loadNSEC3SignedNoParam) {
client_->load(Name("example.org"),
TEST_DATA_DIR "/example.org-nsec3-signed-no-param.zone");
+ const ZoneData* zone_data =
+ client_->findZoneData(Name("example.org"));
+ ASSERT_NE(static_cast<const ZoneData*>(NULL), zone_data);
+ EXPECT_TRUE(zone_data->isSigned());
+ EXPECT_TRUE(zone_data->isNSEC3Signed());
}
TEST_F(MemoryClientTest, loadReloadZone) {
@@ -247,14 +274,12 @@ TEST_F(MemoryClientTest, loadReloadZone) {
client_->getFileName(Name("example.org")));
EXPECT_EQ(1, client_->getZoneCount());
- isc::datasrc::memory::ZoneTable::FindResult
- result(client_->findZoneData(Name("example.org")));
- EXPECT_EQ(result::SUCCESS, result.code);
- EXPECT_NE(static_cast<ZoneData*>(NULL),
- result.zone_data);
+ const ZoneData* zone_data =
+ client_->findZoneData(Name("example.org"));
+ EXPECT_NE(static_cast<const ZoneData*>(NULL), zone_data);
/* Check SOA */
- const ZoneNode* node = result.zone_data->getOriginNode();
+ const ZoneNode* node = zone_data->getOriginNode();
EXPECT_NE(static_cast<const ZoneNode*>(NULL), node);
const RdataSet* set = node->getData();
@@ -265,7 +290,7 @@ TEST_F(MemoryClientTest, loadReloadZone) {
EXPECT_EQ(static_cast<const RdataSet*>(NULL), set);
/* Check ns1.example.org */
- const ZoneTree& tree = result.zone_data->getZoneTree();
+ const ZoneTree& tree = zone_data->getZoneTree();
ZoneTree::Result zresult(tree.find(Name("ns1.example.org"), &node));
EXPECT_NE(ZoneTree::EXACTMATCH, zresult);
@@ -275,14 +300,11 @@ TEST_F(MemoryClientTest, loadReloadZone) {
TEST_DATA_DIR "/example.org-rrsigs.zone");
EXPECT_EQ(1, client_->getZoneCount());
- isc::datasrc::memory::ZoneTable::FindResult
- result2(client_->findZoneData(Name("example.org")));
- EXPECT_EQ(result::SUCCESS, result2.code);
- EXPECT_NE(static_cast<ZoneData*>(NULL),
- result2.zone_data);
+ zone_data = client_->findZoneData(Name("example.org"));
+ EXPECT_NE(static_cast<const ZoneData*>(NULL), zone_data);
/* Check SOA */
- node = result2.zone_data->getOriginNode();
+ node = zone_data->getOriginNode();
EXPECT_NE(static_cast<const ZoneNode*>(NULL), node);
set = node->getData();
@@ -293,7 +315,7 @@ TEST_F(MemoryClientTest, loadReloadZone) {
EXPECT_EQ(static_cast<const RdataSet*>(NULL), set);
/* Check ns1.example.org */
- const ZoneTree& tree2 = result2.zone_data->getZoneTree();
+ const ZoneTree& tree2 = zone_data->getZoneTree();
ZoneTree::Result zresult2(tree2.find(Name("ns1.example.org"), &node));
EXPECT_EQ(ZoneTree::EXACTMATCH, zresult2);
EXPECT_NE(static_cast<const ZoneNode*>(NULL), node);
@@ -679,20 +701,14 @@ TEST_F(MemoryClientTest, findZoneData) {
client_->load(Name("example.org"),
TEST_DATA_DIR "/example.org-rrsigs.zone");
- isc::datasrc::memory::ZoneTable::FindResult
- result(client_->findZoneData(Name("example.com")));
- EXPECT_EQ(result::NOTFOUND, result.code);
- EXPECT_EQ(static_cast<ZoneData*>(NULL),
- result.zone_data);
+ const ZoneData* zone_data = client_->findZoneData(Name("example.com"));
+ EXPECT_EQ(static_cast<const ZoneData*>(NULL), zone_data);
- isc::datasrc::memory::ZoneTable::FindResult
- result2(client_->findZoneData(Name("example.org")));
- EXPECT_EQ(result::SUCCESS, result2.code);
- EXPECT_NE(static_cast<ZoneData*>(NULL),
- result2.zone_data);
+ zone_data = client_->findZoneData(Name("example.org"));
+ EXPECT_NE(static_cast<const ZoneData*>(NULL), zone_data);
/* Check SOA */
- const ZoneNode* node = result2.zone_data->getOriginNode();
+ const ZoneNode* node = zone_data->getOriginNode();
EXPECT_NE(static_cast<const ZoneNode*>(NULL), node);
const RdataSet* set = node->getData();
@@ -703,7 +719,7 @@ TEST_F(MemoryClientTest, findZoneData) {
EXPECT_EQ(static_cast<const RdataSet*>(NULL), set);
/* Check ns1.example.org */
- const ZoneTree& tree = result2.zone_data->getZoneTree();
+ const ZoneTree& tree = zone_data->getZoneTree();
ZoneTree::Result result3(tree.find(Name("ns1.example.org"), &node));
EXPECT_EQ(ZoneTree::EXACTMATCH, result3);
EXPECT_NE(static_cast<const ZoneNode*>(NULL), node);
diff --git a/src/lib/datasrc/memory/tests/testdata/Makefile.am b/src/lib/datasrc/memory/tests/testdata/Makefile.am
index 9fb9986..00c7bd8 100644
--- a/src/lib/datasrc/memory/tests/testdata/Makefile.am
+++ b/src/lib/datasrc/memory/tests/testdata/Makefile.am
@@ -19,6 +19,7 @@ EXTRA_DIST += example.org-multiple-dname.zone
EXTRA_DIST += example.org-multiple-nsec3.zone
EXTRA_DIST += example.org-multiple-nsec3param.zone
EXTRA_DIST += example.org-multiple.zone
+EXTRA_DIST += example.org-nsec3-empty-salt.zone
EXTRA_DIST += example.org-nsec3-fewer-labels.zone example.org-nsec3-more-labels.zone
EXTRA_DIST += example.org-nsec3-signed-no-param.zone
EXTRA_DIST += example.org-nsec3-signed.zone
diff --git a/src/lib/datasrc/memory/tests/testdata/example.org-nsec3-empty-salt.zone b/src/lib/datasrc/memory/tests/testdata/example.org-nsec3-empty-salt.zone
new file mode 100644
index 0000000..6c20ee9
--- /dev/null
+++ b/src/lib/datasrc/memory/tests/testdata/example.org-nsec3-empty-salt.zone
@@ -0,0 +1,14 @@
+example.org. 86400 IN SOA ns.example.org. ns.example.org. 2012092602 7200 3600 2592000 1200
+example.org. 86400 IN RRSIG SOA 7 2 86400 20120301040838 20120131040838 19562 example.org. Jt9wCRLS5TQxZH0IBqrM9uMGD453rIoxYopfM9AjjRZfEx+HGlBpOZeR pGN7yLcN+URnicOD0ydLHiakaBODiZyNoYCKYG5d2ZOhL+026REnDKNM 0m5T3X3sczP+l55An/GITheTdrKt3Y1Ouc2yKI8ro8JjOxV/a4nGDWjK x9A=
+example.org. 86400 IN NS ns.example.org.
+example.org. 86400 IN RRSIG NS 7 2 86400 20120301040838 20120131040838 19562 example.org. gYXL3xK4IFdJU6TtiVuzqDBb2MeA8xB3AKtHlJGFTfTRNHyuej0ZGovx TeUYsLYmoiGYaJG66iD1tYYFq0qdj0xWq+LEa53ACtKvYf9IIwK4ijJs k0g6xCNavc6/qPppymDhN7MvoFVkW59uJa0HPWlsIIuRlEAr7xyt85vq yoA=
+example.org. 86400 IN DNSKEY 256 3 7 AwEAAbrBkKf2gmGtG4aogZY4svIZCrOLLZlQzVHwz7WxJdTR8iEnvz/x Q/jReDroS5CBZWvzwLlhPIpsJAojx0oj0RvfJNsz3+6LN8q7x9u6+86B 85CYjTk3dcFOebgkF4fXr7/kkOX+ZY94Zk0Z1+pUC3eY4gkKcyME/Uxm O18PBTeB
+example.org. 86400 IN RRSIG DNSKEY 7 2 86400 20120301040838 20120131040838 19562 example.org. d0eLF8JqNHaGuBSX0ashU5c1O/wyWU43UUsKGrMQIoBDiJ588MWQOnas rwvW6vdkLNqRqCsP/B4epV/EtLL0tBsk5SHkTYbNo80gGrBufQ6YrWRr Ile8Z+h+MR4y9DybbjmuNKqaO4uQMg/X6+4HqRAKx1lmZMTcrcVeOwDM ZA4=
+example.org. 0 IN NSEC3PARAM 1 0 10 -
+example.org. 0 IN RRSIG NSEC3PARAM 7 2 0 20120301040838 20120131040838 19562 example.org. Ggs5MiQDlXXt22Fz9DNg3Ujc0T6MBfumlRkd8/enBbJwLmqw2QXAzDEk pjUeGstCEHKzxJDJstavGoCpTDJgoV4Fd9szooMx69rzPrq9tdoM46jG xZHqw+Pv2fkRGC6aP7ZX1r3Qnpwpk47AQgATftbO4G6KcMcO8JoKE47x XLM=
+ns.example.org. 86400 IN A 192.0.2.1
+ns.example.org. 86400 IN RRSIG A 7 3 86400 20120301040838 20120131040838 19562 example.org. dOH+Dxib8VcGnjLrKILsqDhS1wki6BWk1dZwpOGUGHyLWcLNW8ygWY2o r29jPhHtaFCNWpn46JebgnXDPRiQjaY3dQqL8rcf2QX1e3+Cicw1OSrs S0sUDE5DmMNEac+ZCUQ0quCStZTCldl05hlspV2RS92TpApnoOK0nXMp Uak=
+09GM5T42SMIMT7R8DF6RTG80SFMS1NLU.example.org. 1200 IN NSEC3 1 0 10 - RKOF8QMFRB5F2V9EJHFBVB2JPVSA0DJD A RRSIG
+09GM5T42SMIMT7R8DF6RTG80SFMS1NLU.example.org. 1200 IN RRSIG NSEC3 7 3 1200 20120301040838 20120131040838 19562 example.org. EdwMeepLf//lV+KpCAN+213Scv1rrZyj4i2OwoCP4XxxS3CWGSuvYuKO yfZc8wKRcrD/4YG6nZVXE0s5O8NahjBJmDIyVt4WkfZ6QthxGg8ggLVv cD3dFksPyiKHf/WrTOZPSsxvN5m/i1Ey6+YWS01Gf3WDCMWDauC7Nmh3 CTM=
+RKOF8QMFRB5F2V9EJHFBVB2JPVSA0DJD.example.org. 1200 IN NSEC3 1 0 10 - 09GM5T42SMIMT7R8DF6RTG80SFMS1NLU NS SOA RRSIG DNSKEY NSEC3PARAM
+RKOF8QMFRB5F2V9EJHFBVB2JPVSA0DJD.example.org. 1200 IN RRSIG NSEC3 7 3 1200 20120301040838 20120131040838 19562 example.org. j7d8GL4YqX035FBcPPsEcSWHjWcKdlQMHLL4TB67xVNFnl4SEFQCp4OO AtPap5tkKakwgWxoQVN9XjnqrBz+oQhofDkB3aTatAjIIkcwcnrm3AYQ rTI3E03ySiRwuCPKVmHOLUV2cG6O4xzcmP+MYZcvPTS8V3F5LlaU22i7 A3E=
More information about the bind10-changes
mailing list