[svn] commit: r2509 - in /branches/trac232/src/lib/datasrc: ./ tests/ tests/testdata/
BIND 10 source code commits
bind10-changes at lists.isc.org
Thu Jul 15 14:42:49 UTC 2010
Author: jelte
Date: Thu Jul 15 14:42:48 2010
New Revision: 2509
Log:
use the algorithm from rfc2136
Modified:
branches/trac232/src/lib/datasrc/data_source.h
branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc
branches/trac232/src/lib/datasrc/sqlite3_datasrc.h
branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc
branches/trac232/src/lib/datasrc/tests/testdata/update1.packet
branches/trac232/src/lib/datasrc/tests/testdata/update2.packet
branches/trac232/src/lib/datasrc/tests/testdata/update3.packet
branches/trac232/src/lib/datasrc/tests/testdata/update4.packet
branches/trac232/src/lib/datasrc/tests/testdata/update5.packet
branches/trac232/src/lib/datasrc/tests/testdata/update6.packet
branches/trac232/src/lib/datasrc/tests/testdata/update7.packet
Modified: branches/trac232/src/lib/datasrc/data_source.h
==============================================================================
--- branches/trac232/src/lib/datasrc/data_source.h (original)
+++ branches/trac232/src/lib/datasrc/data_source.h Thu Jul 15 14:42:48 2010
@@ -178,8 +178,10 @@
enum states { INIT, RUNNING, DONE };
explicit DataSrcTransaction(DataSrc *data_source,
- const isc::dns::Name& zone_name) :
+ const isc::dns::Name& zone_name,
+ const isc::dns::RRClass& zone_class) :
_zone_name(zone_name),
+ _zone_class(zone_class),
_data_source(data_source),
_state(INIT) {};
~DataSrcTransaction();
@@ -188,10 +190,12 @@
isc::data::ElementPtr getData() { return _data; };
void setData(isc::data::ElementPtr data) { _data = data; };
const isc::dns::Name getZoneName() { return _zone_name; };
+ const isc::dns::RRClass getZoneClass() { return _zone_class; };
private:
isc::data::ElementPtr _data;
isc::dns::Name _zone_name;
+ isc::dns::RRClass _zone_class;
DataSrc* _data_source;
states _state;
};
Modified: branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc
==============================================================================
--- branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc (original)
+++ branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc Thu Jul 15 14:42:48 2010
@@ -1300,6 +1300,125 @@
}
}
+isc::dns::Rcode
+Sqlite3DataSrc::updateCheckPrerequisite(DataSrcTransaction& transaction, RRsetPtr prereq)
+{
+ std::cout << "[XX] PREREQ: " << prereq->toText() << std::endl;
+ // section 3.2 of RFC2136
+ if (prereq->getClass() == RRClass::ANY()) {
+ if (prereq->getTTL().getValue() != 0 ||
+ prereq->getRdataCount() != 0) {
+ return Rcode::FORMERR();
+ }
+ if (prereq->getType() == RRType::ANY()) {
+ if (!haveRRset(this, prereq)) {
+ return Rcode::NXDOMAIN();
+ }
+ } else if (!haveRRset(this, prereq)) {
+ return Rcode::NXRRSET();
+ }
+ } else if (prereq->getClass() == RRClass::NONE()) {
+ if (prereq->getTTL().getValue() != 0 ||
+ prereq->getRdataCount() != 0) {
+ return Rcode::FORMERR();
+ }
+ if (prereq->getType() == RRType::ANY()) {
+ if (haveRRset(this, prereq)) {
+ return Rcode::YXDOMAIN();
+ }
+ } else if (haveRRset(this, prereq)) {
+ return Rcode::YXRRSET();
+ }
+ } else if (prereq->getClass() == transaction.getZoneClass()) {
+ if (prereq->getTTL().getValue() != 0) {
+ return Rcode::FORMERR();
+ }
+ // 3.2.3 talks about rebuilding sets, but we already have full rrsets
+ if (!haveRRset(this, prereq)) {
+ return Rcode::NXRRSET();
+ }
+ } else {
+ return Rcode::FORMERR();
+ }
+
+ return Rcode::NOERROR();
+}
+
+Rcode
+Sqlite3DataSrc::updateProcessUpdate(DataSrcTransaction& transaction,
+ isc::dns::RRsetPtr update)
+{
+ // The RFC says to pre-scan them, but since we use a transaction
+ // we can roll back, we can process the RRsets one at a time
+
+ // TODO, NOTZONE check
+
+ RRType update_type = update->getType();
+ if (update->getClass() != RRClass::ANY()) {
+ // do we have a direct check in rrtype to see if a specific
+ // type is known and not a meta type?
+ if (update_type == RRType::ANY() ||
+ update_type == RRType::IXFR() ||
+ update_type == RRType::AXFR()) {
+ return Rcode::FORMERR();
+ }
+ } else if (update->getClass() == RRClass::ANY()) {
+ if (update->getTTL().getValue() != 0) {
+ return Rcode::FORMERR();
+ }
+ if (update_type == RRType::IXFR() ||
+ update_type == RRType::AXFR()) {
+ return Rcode::FORMERR();
+ }
+ if (update->getRdataCount() > 0) {
+ return Rcode::FORMERR();
+ }
+ } else if (update->getClass() == RRClass::NONE()) {
+ if (update->getTTL().getValue() != 0) {
+ return Rcode::FORMERR();
+ }
+ }
+
+ // Most types are blindly added, but some require special handling
+ if (update_type == RRType::SOA()) {
+ // check serial and delete old
+ RRsetList soa_list;
+ uint32_t flags = 0;
+ if (findExactRRset(update->getName(),
+ update->getClass(),
+ update_type,
+ soa_list,
+ flags,
+ NULL) != SUCCESS ||
+ soa_list.size() != 1) {
+ return Rcode::SERVFAIL();
+ } else {
+ // TODO: no serial arithmetic yet?
+ if (delRRset(transaction, *(soa_list.begin())) != SUCCESS) {
+ return Rcode::SERVFAIL();
+ }
+ if (addRRset(transaction, update) != SUCCESS) {
+ return Rcode::SERVFAIL();
+ }
+ }
+ // which other types need special handling? CNAME, WKS,...
+ // addRRset and delRRset should do 'the right thing' regarding
+ // types (any/none/specific) and rdata count
+ } else {
+ if (update->getClass() == RRClass::ANY() ||
+ update->getClass() == RRClass::NONE()) {
+ if (delRRset(transaction, update) != SUCCESS) {
+ return Rcode::SERVFAIL();
+ }
+ } else {
+ if (addRRset(transaction, update) != SUCCESS) {
+ return Rcode::SERVFAIL();
+ }
+ }
+ }
+ return Rcode::NOERROR();
+}
+
DataSrc::Result
Sqlite3DataSrc::doUpdate(DataSrcTransaction& transaction UNUSED_PARAM,
isc::dns::Message& msg UNUSED_PARAM) {
@@ -1320,6 +1439,9 @@
return ERROR;
}
if (question->getType() != isc::dns::RRType::SOA()) {
+ return ERROR;
+ }
+ if (question->getClass() != transaction.getZoneClass()) {
return ERROR;
}
@@ -1329,51 +1451,12 @@
it != msg.endSection(isc::dns::Section::ANSWER());
it++) {
RRsetPtr cur_prereq = *it;
- cout << "[XX] PREREQ: " << cur_prereq->toText() << endl;
- cout << "[XX] count: " << cur_prereq->getRdataCount() << endl;
- // should we check TTL too?
- // zone class checked for IN right now, should be matched to actual zone class
- if (cur_prereq->getRdataCount() == 0 &&
- cur_prereq->getClass() == isc::dns::RRClass::ANY() &&
- cur_prereq->getType() != isc::dns::RRType::ANY()) {
- // RRset Exists, value independent prerequisite (2.4.1)
- cout << "[XX] rrset exists (value independent)" << endl;
- if (!haveRRset(this, cur_prereq)) {
- return ERROR;
- }
- cout << "[XX] ok" << endl;
- } else if (cur_prereq->getRdataCount() > 0 &&
- cur_prereq->getClass() == isc::dns::RRClass::IN() &&
- cur_prereq->getType() != isc::dns::RRType::ANY()) {
- // RRset Exists, value dependent prerequisite (2.4.2)
- cout << "[XX] rrset exists (value dependent)" << endl;
- if (!haveRRset(this, cur_prereq)) {
- return ERROR;
- }
- } else if (cur_prereq->getRdataCount() == 0 &&
- cur_prereq->getClass() == isc::dns::RRClass::NONE() &&
- cur_prereq->getType() != isc::dns::RRType::ANY()) {
- // RRset does not exist, value independent prerequisite (2.4.3)
- cout << "[XX] rrset does not exist" << endl;
- if (haveRRset(this, cur_prereq)) {
- return ERROR;
- }
- } else if (cur_prereq->getRdataCount() == 0 &&
- cur_prereq->getClass() == isc::dns::RRClass::ANY() &&
- cur_prereq->getType() == isc::dns::RRType::ANY()) {
- // Name is in use (2.4.4)
- cout << "[XX] name is in use" << endl;
- if (!haveRRset(this, cur_prereq)) {
- return ERROR;
- }
- } else if (cur_prereq->getRdataCount() == 0 &&
- cur_prereq->getClass() == isc::dns::RRClass::NONE() &&
- cur_prereq->getType() == isc::dns::RRType::ANY()) {
- // Name is not in use (2.4.5)
- cout << "[XX] name is not in use" << endl;
- if (haveRRset(this, cur_prereq)) {
- return ERROR;
- }
+ isc::dns::Rcode prereq_result = updateCheckPrerequisite(transaction, cur_prereq);
+ cout << "[XX] PREREQ RCODE: " << prereq_result.toText() << endl;
+ if (prereq_result != Rcode::NOERROR()) {
+ msg.clear(Message::RENDER);
+ msg.setRcode(prereq_result);
+ return ERROR;
}
}
@@ -1382,45 +1465,10 @@
it++) {
RRsetPtr cur_update = *it;
std::cout << "[XX] Update RR: " << cur_update->toText() << std::endl;
- DataSrc::Result result;
- if (cur_update->getRdataCount() > 0 &&
- cur_update->getClass() == isc::dns::RRClass::IN() &&
- cur_update->getType() != isc::dns::RRType::ANY()) {
- // add to rrset (2.5.1)
- cout << "[XX] add to rrset" << endl;
- result = addRRset(transaction, cur_update);
- if (result != DataSrc::SUCCESS) {
- return result;
- }
- } else if (cur_update->getRdataCount() == 0 &&
- cur_update->getClass() == isc::dns::RRClass::ANY() &&
- cur_update->getType() != isc::dns::RRType::ANY()) {
- // delete rrset (2.5.2)
- cout << "[XX] delete rrset" << endl;
- result = delRRset(transaction, cur_update);
- if (result != DataSrc::SUCCESS) {
- return result;
- }
- } else if (cur_update->getRdataCount() == 0 &&
- cur_update->getClass() == isc::dns::RRClass::ANY() &&
- cur_update->getType() == isc::dns::RRType::ANY()) {
- // delete all rrsets for name (2.5.3)
- cout << "[XX] delete all rrsets for name" << endl;
- result = delRRset(transaction, cur_update);
- if (result != DataSrc::SUCCESS) {
- return result;
- }
- } else if (cur_update->getRdataCount() > 0 &&
- cur_update->getClass() == isc::dns::RRClass::NONE() &&
- cur_update->getType() != isc::dns::RRType::ANY()) {
- // delete from rrset (2.5.4)
- cout << "[XX] delete rr from rrset" << endl;
- result = delRRset(transaction, cur_update);
- if (result != DataSrc::SUCCESS) {
- return result;
- }
- }
- //(*it)++;
+ Rcode result = updateProcessUpdate(transaction, cur_update);
+ if (result != Rcode::NOERROR()) {
+ return ERROR;
+ }
}
// do we need to do anything with additional?
Modified: branches/trac232/src/lib/datasrc/sqlite3_datasrc.h
==============================================================================
--- branches/trac232/src/lib/datasrc/sqlite3_datasrc.h (original)
+++ branches/trac232/src/lib/datasrc/sqlite3_datasrc.h Thu Jul 15 14:42:48 2010
@@ -141,6 +141,10 @@
const isc::dns::RRType& rrtype,
const isc::dns::rdata::Rdata& rdata);
DataSrc::Result delAll(int zone_id);
+ isc::dns::Rcode updateCheckPrerequisite(DataSrcTransaction& transaction,
+ isc::dns::RRsetPtr prereq);
+ isc::dns::Rcode updateProcessUpdate(DataSrcTransaction& transaction,
+ isc::dns::RRsetPtr update);
private:
enum Mode {
Modified: branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc
==============================================================================
--- branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc (original)
+++ branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc Thu Jul 15 14:42:48 2010
@@ -970,7 +970,7 @@
ASSERT_EQ(DataSrc::SUCCESS, data_source.close());
ASSERT_EQ(DataSrc::SUCCESS, data_source.init(SQLITE_DBFILE_WRITE));
- DataSrcTransaction transaction(&data_source, zone_name);
+ DataSrcTransaction transaction(&data_source, zone_name, RRClass::IN());
EXPECT_EQ(DataSrcTransaction::INIT, transaction.getState());
// start doing things without calling startTransaction()
@@ -1026,7 +1026,7 @@
EXPECT_EQ(DataSrc::NAME_NOT_FOUND, find_flags);
// add it, but roll back
- DataSrcTransaction transaction1(&data_source, zone_name);
+ DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
EXPECT_EQ(DataSrc::SUCCESS,
data_source.startTransaction(transaction1));
EXPECT_EQ(DataSrc::SUCCESS,
@@ -1041,7 +1041,7 @@
EXPECT_EQ(DataSrc::NAME_NOT_FOUND, find_flags);
// add it with commit
- DataSrcTransaction transaction2(&data_source, zone_name);
+ DataSrcTransaction transaction2(&data_source, zone_name, RRClass::IN());
EXPECT_EQ(DataSrc::SUCCESS,
data_source.startTransaction(transaction2));
EXPECT_EQ(DataSrc::SUCCESS,
@@ -1071,7 +1071,7 @@
EXPECT_EQ(result_sets.size(), 1);
// add it, but roll back
- DataSrcTransaction transaction1(&data_source, zone_name);
+ DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
EXPECT_EQ(DataSrc::SUCCESS,
data_source.startTransaction(transaction1));
EXPECT_EQ(DataSrc::SUCCESS,
@@ -1087,7 +1087,7 @@
EXPECT_EQ(result_sets.size(), 1);
// add it, and commit
- DataSrcTransaction transaction2(&data_source, zone_name);
+ DataSrcTransaction transaction2(&data_source, zone_name, RRClass::IN());
EXPECT_EQ(DataSrc::SUCCESS,
data_source.startTransaction(transaction2));
EXPECT_EQ(DataSrc::SUCCESS,
@@ -1120,7 +1120,7 @@
RRsetList new_list;
// Replace them, roll back
- DataSrcTransaction transaction1(&data_source, zone_name);
+ DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
data_source.startTransaction(transaction1);
data_source.replaceZone(transaction1, new_list);
data_source.rollbackTransaction(transaction1);
@@ -1133,7 +1133,7 @@
EXPECT_EQ(1, result_sets.size());
// Replace them, commit
- DataSrcTransaction transaction2(&data_source, zone_name);
+ DataSrcTransaction transaction2(&data_source, zone_name, RRClass::IN());
data_source.startTransaction(transaction2);
data_source.replaceZone(transaction2, new_list);
data_source.commitTransaction(transaction2);
@@ -1163,7 +1163,7 @@
EXPECT_EQ(1, result_sets.size());
// Delete zone, roll back
- DataSrcTransaction transaction1(&data_source, zone_name);
+ DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
data_source.startTransaction(transaction1);
data_source.delZone(transaction1);
data_source.rollbackTransaction(transaction1);
@@ -1176,7 +1176,7 @@
EXPECT_EQ(1, result_sets.size());
// Delete zone, commit
- DataSrcTransaction transaction2(&data_source, zone_name);
+ DataSrcTransaction transaction2(&data_source, zone_name, RRClass::IN());
data_source.startTransaction(transaction2);
data_source.delZone(transaction2);
data_source.commitTransaction(transaction2);
@@ -1189,7 +1189,7 @@
EXPECT_EQ(1, result_sets.size());
// try to start a transaction for the zone that is now gone
- DataSrcTransaction transaction3(&data_source, zone_name);
+ DataSrcTransaction transaction3(&data_source, zone_name, RRClass::IN());
EXPECT_EQ(DataSrc::ERROR, data_source.startTransaction(transaction3));
}
@@ -1239,7 +1239,6 @@
RRTTL ttl(s);
file >> s;
- std::cout << "[XX] CLASS: " << s << std::endl;
RRClass rrclass(0);
if (s == "ANY") {
rrclass = RRClass::ANY();
@@ -1250,7 +1249,6 @@
}
file >> s;
- std::cout << "[XX] TYPE: " << s << std::endl;
RRType rrtype(0);
if (s == "ANY") {
rrtype = RRType::ANY();
@@ -1269,7 +1267,6 @@
}
if (line != "") {
- std::cout << "[XX] RDATA LINE: '" << line << "'" << std::endl;
RdataPtr rdata = createRdata(rrtype, rrclass, line);
rrset->addRdata(rdata);
}
@@ -1421,7 +1418,7 @@
ASSERT_EQ(0, ixfrFromFile(ixfr_msg, TEST_DATA_DIR "/ixfr_ok.rrs"));
// do IXFR, roll back
- DataSrcTransaction transaction1(&data_source, zone_name);
+ DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
data_source.startTransaction(transaction1);
EXPECT_EQ(DataSrc::SUCCESS,
data_source.doIXFR(transaction1,
@@ -1435,7 +1432,7 @@
www_name, RRClass::IN(), RRType::A());
// do IXFR, commit
- DataSrcTransaction transaction2(&data_source, zone_name);
+ DataSrcTransaction transaction2(&data_source, zone_name, RRClass::IN());
data_source.startTransaction(transaction2);
EXPECT_EQ(DataSrc::SUCCESS,
data_source.doIXFR(transaction2,
@@ -1449,7 +1446,7 @@
www_name, RRClass::IN(), RRType::A());
// same IXFR should now fail, because the start serial doesn't match
- DataSrcTransaction transaction3(&data_source, zone_name);
+ DataSrcTransaction transaction3(&data_source, zone_name, RRClass::IN());
data_source.startTransaction(transaction3);
EXPECT_EQ(DataSrc::ERROR,
data_source.doIXFR(transaction3,
@@ -1471,7 +1468,7 @@
Message ixfr_msg(Message::RENDER);
ASSERT_EQ(0, ixfrFromFile(ixfr_msg, TEST_DATA_DIR
"/ixfr_bad_remove_nonexisting.rrs"));
- DataSrcTransaction transaction1(&data_source, zone_name);
+ DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
data_source.startTransaction(transaction1);
EXPECT_EQ(DataSrc::ERROR,
data_source.doIXFR(transaction1,
@@ -1492,7 +1489,7 @@
Message update_msg(Message::RENDER);
- DataSrcTransaction transaction1(&data_source, zone_name);
+ DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
data_source.startTransaction(transaction1);
update_msg.setQid(1234);
@@ -1564,6 +1561,27 @@
}
+TEST_F(Sqlite3DataSourceTest, dynamic_update_bad_class) {
+ // reset database
+ ASSERT_EQ(0, install_writable_database());
+
+ // use our copied writable datasource db
+ ASSERT_EQ(DataSrc::SUCCESS, data_source.close());
+ ASSERT_EQ(DataSrc::SUCCESS, data_source.init(SQLITE_DBFILE_WRITE));
+
+ Message update_msg(Message::RENDER);
+
+ DataSrcTransaction transaction1(&data_source, zone_name, RRClass::CH());
+ data_source.startTransaction(transaction1);
+ update_msg.setQid(1234);
+
+ update_msg.setOpcode(isc::dns::Opcode::UPDATE());
+
+ // no/bad question section
+ ASSERT_EQ(DataSrc::ERROR, data_source.doUpdate(transaction1, update_msg));
+
+}
+
TEST_F(Sqlite3DataSourceTest, dynamic_update_prereq_fails) {
// reset database
ASSERT_EQ(0, install_writable_database());
@@ -1574,23 +1592,31 @@
Message update_msg(Message::RENDER);
- DataSrcTransaction transaction1(&data_source, zone_name);
+ DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
data_source.startTransaction(transaction1);
ASSERT_EQ(0, updateFromFile(update_msg, TEST_DATA_DIR "/update2.packet"));
ASSERT_EQ(DataSrc::ERROR, data_source.doUpdate(transaction1, update_msg));
+ ASSERT_EQ(Rcode::NXRRSET(), update_msg.getRcode());
+
+ data_source.rollbackTransaction(transaction1);
+ data_source.startTransaction(transaction1);
ASSERT_EQ(0, updateFromFile(update_msg, TEST_DATA_DIR "/update3.packet"));
ASSERT_EQ(DataSrc::ERROR, data_source.doUpdate(transaction1, update_msg));
+ ASSERT_EQ(Rcode::NXDOMAIN(), update_msg.getRcode());
ASSERT_EQ(0, updateFromFile(update_msg, TEST_DATA_DIR "/update4.packet"));
ASSERT_EQ(DataSrc::ERROR, data_source.doUpdate(transaction1, update_msg));
+ ASSERT_EQ(Rcode::NXRRSET(), update_msg.getRcode());
ASSERT_EQ(0, updateFromFile(update_msg, TEST_DATA_DIR "/update5.packet"));
ASSERT_EQ(DataSrc::ERROR, data_source.doUpdate(transaction1, update_msg));
+ ASSERT_EQ(Rcode::YXRRSET(), update_msg.getRcode());
ASSERT_EQ(0, updateFromFile(update_msg, TEST_DATA_DIR "/update6.packet"));
ASSERT_EQ(DataSrc::ERROR, data_source.doUpdate(transaction1, update_msg));
+ ASSERT_EQ(Rcode::YXDOMAIN(), update_msg.getRcode());
}
@@ -1604,7 +1630,7 @@
Message update_msg(Message::RENDER);
- DataSrcTransaction transaction1(&data_source, zone_name);
+ DataSrcTransaction transaction1(&data_source, zone_name, RRClass::IN());
data_source.startTransaction(transaction1);
ASSERT_EQ(0, updateFromFile(update_msg, TEST_DATA_DIR "/update7.packet"));
Modified: branches/trac232/src/lib/datasrc/tests/testdata/update1.packet
==============================================================================
--- branches/trac232/src/lib/datasrc/tests/testdata/update1.packet (original)
+++ branches/trac232/src/lib/datasrc/tests/testdata/update1.packet Thu Jul 15 14:42:48 2010
@@ -7,7 +7,7 @@
newaddr.example.com 0 NONE A
newaddr.example.com 0 NONE ANY
;
-ip46.example.com 3600 ANY A
+ip46.example.com 0 ANY A
www.example.com 0 ANY ANY
example.com 0 NONE MX 10 mail.example.com.
newaddr.example.com 3600 IN A 192.0.2.12
Modified: branches/trac232/src/lib/datasrc/tests/testdata/update2.packet
==============================================================================
--- branches/trac232/src/lib/datasrc/tests/testdata/update2.packet (original)
+++ branches/trac232/src/lib/datasrc/tests/testdata/update2.packet Thu Jul 15 14:42:48 2010
@@ -7,7 +7,7 @@
newaddr.example.com 0 NONE A
newaddr.example.com 0 NONE ANY
;
-ip46.example.com 3600 ANY A
+ip46.example.com 0 ANY A
www.example.com 0 ANY ANY
example.com 0 NONE MX 10 mail.example.com.
newaddr.example.com 3600 IN A 192.0.2.12
Modified: branches/trac232/src/lib/datasrc/tests/testdata/update3.packet
==============================================================================
--- branches/trac232/src/lib/datasrc/tests/testdata/update3.packet (original)
+++ branches/trac232/src/lib/datasrc/tests/testdata/update3.packet Thu Jul 15 14:42:48 2010
@@ -7,7 +7,7 @@
newaddr.example.com 0 NONE A
newaddr.example.com 0 NONE ANY
;
-ip46.example.com 3600 ANY A
+ip46.example.com 0 ANY A
www.example.com 0 ANY ANY
example.com 0 NONE MX 10 mail.example.com.
newaddr.example.com 3600 IN A 192.0.2.12
Modified: branches/trac232/src/lib/datasrc/tests/testdata/update4.packet
==============================================================================
--- branches/trac232/src/lib/datasrc/tests/testdata/update4.packet (original)
+++ branches/trac232/src/lib/datasrc/tests/testdata/update4.packet Thu Jul 15 14:42:48 2010
@@ -8,7 +8,7 @@
newaddr.example.com 0 NONE A
newaddr.example.com 0 NONE ANY
;
-ip46.example.com 3600 ANY A
+ip46.example.com 0 ANY A
www.example.com 0 ANY ANY
example.com 0 NONE MX 10 mail.example.com.
newaddr.example.com 3600 IN A 192.0.2.12
Modified: branches/trac232/src/lib/datasrc/tests/testdata/update5.packet
==============================================================================
--- branches/trac232/src/lib/datasrc/tests/testdata/update5.packet (original)
+++ branches/trac232/src/lib/datasrc/tests/testdata/update5.packet Thu Jul 15 14:42:48 2010
@@ -7,7 +7,7 @@
www.example.com 0 NONE A
newaddr.example.com 0 NONE ANY
;
-ip46.example.com 3600 ANY A
+ip46.example.com 0 ANY A
www.example.com 0 ANY ANY
example.com 0 NONE MX 10 mail.example.com.
newaddr.example.com 3600 IN A 192.0.2.12
Modified: branches/trac232/src/lib/datasrc/tests/testdata/update6.packet
==============================================================================
--- branches/trac232/src/lib/datasrc/tests/testdata/update6.packet (original)
+++ branches/trac232/src/lib/datasrc/tests/testdata/update6.packet Thu Jul 15 14:42:48 2010
@@ -7,7 +7,7 @@
newaddr.example.com 0 NONE A
www.example.com 0 NONE ANY
;
-ip46.example.com 3600 ANY A
+ip46.example.com 0 ANY A
www.example.com 0 ANY ANY
example.com 0 NONE MX 10 mail.example.com.
newaddr.example.com 3600 IN A 192.0.2.12
Modified: branches/trac232/src/lib/datasrc/tests/testdata/update7.packet
==============================================================================
--- branches/trac232/src/lib/datasrc/tests/testdata/update7.packet (original)
+++ branches/trac232/src/lib/datasrc/tests/testdata/update7.packet Thu Jul 15 14:42:48 2010
@@ -1,4 +1,4 @@
example.com IN SOA
;
; delete nonexistant RRset
-ip46.example.com 3600 ANY TXT
+ip46.example.com 0 ANY TXT
More information about the bind10-changes
mailing list