[svn] commit: r2231 - in /branches/trac232/src: bin/auth/auth.spec.pre.in bin/auth/auth_srv.cc bin/auth/auth_srv.h bin/auth/main.cc lib/datasrc/sqlite3_datasrc.cc lib/datasrc/sqlite3_datasrc.h
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed Jun 23 07:26:24 UTC 2010
Author: jelte
Date: Wed Jun 23 07:26:23 2010
New Revision: 2231
Log:
api function for ixfr + manual test helper stuff
Modified:
branches/trac232/src/bin/auth/auth.spec.pre.in
branches/trac232/src/bin/auth/auth_srv.cc
branches/trac232/src/bin/auth/auth_srv.h
branches/trac232/src/bin/auth/main.cc
branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc
branches/trac232/src/lib/datasrc/sqlite3_datasrc.h
Modified: branches/trac232/src/bin/auth/auth.spec.pre.in
==============================================================================
--- branches/trac232/src/bin/auth/auth.spec.pre.in (original)
+++ branches/trac232/src/bin/auth/auth.spec.pre.in Wed Jun 23 07:26:23 2010
@@ -102,6 +102,27 @@
"item_default": ""
},
]
+ },
+ {
+ "command_name": "ixfr",
+ "command_description": "see what IXFR would do",
+ "command_args": [
+ { "item_name": "zone_name",
+ "item_type": "string",
+ "item_optional": false,
+ "item_default": ""
+ },
+ { "item_name": "rr_class",
+ "item_type": "string",
+ "item_optional": false,
+ "item_default": ""
+ },
+ { "item_name": "response_file",
+ "item_type": "string",
+ "item_optional": false,
+ "item_default": ""
+ }
+ ]
}
]
}
Modified: branches/trac232/src/bin/auth/auth_srv.cc
==============================================================================
--- branches/trac232/src/bin/auth/auth_srv.cc (original)
+++ branches/trac232/src/bin/auth/auth_srv.cc Wed Jun 23 07:26:23 2010
@@ -505,6 +505,76 @@
} catch (isc::Exception exc) {
return isc::config::createAnswer(1, exc.what());
}
-
-}
-
+}
+
+ElementPtr
+AuthSrv::ixfr(isc::data::ElementPtr args)
+{
+ try {
+ Name zone_name = Name(args->get("zone_name")->stringValue());
+ RRClass rrclass = RRClass(args->get("rr_class")->stringValue());
+
+ // fake ixfr response from file
+ ifstream myfile(args->get("response_file")->stringValue().c_str());
+
+ Message m(Message::RENDER);
+ m.setHeaderFlag(MessageFlag::AA());
+ m.setHeaderFlag(MessageFlag::QR());
+ m.setQid(1234);
+ m.setOpcode(isc::dns::Opcode::QUERY());
+ m.setRcode(isc::dns::Rcode::NOERROR());
+ if (myfile.is_open()) {
+ while (! myfile.eof() ) {
+ //stringstream ss;
+ //ss << myfile;
+ //cout << "X: " << ss.str() << endl;
+ string s;
+ myfile >> s;
+ Name n(s);
+ myfile >> s;
+ RRTTL ttl(s);
+ myfile >> s;
+ RRClass rrclass(s);
+ myfile >> s;
+ RRType rrtype(s);
+ string line;
+ getline(myfile, line);
+ while (line[0] == ' ' || line[0] == '\t') {
+ line.erase(0, 1);
+ }
+ std::cout << "[XX] rdata: " << line << std::endl;
+ RdataPtr rdata = createRdata(rrtype, rrclass, line);
+ std::cout << "[XX] rdata read: " << line << std::endl;
+ RRsetPtr rrset = RRsetPtr(new RRset(n,
+ rrclass,
+ rrtype,
+ ttl));
+ rrset->addRdata(rdata);
+ m.addRRset(Section::ANSWER(), rrset, false);
+ }
+ }
+ std::cout << "[XX] read IXFR 'message' file" << std::endl;
+ std::cout << m << std::endl;
+ std::cout << "[XX] end of IXFR 'message'" << std::endl;
+
+ NameMatch match(zone_name);
+ impl_->data_sources_.findClosestEnclosure(match, rrclass);
+ DataSrc* datasource = (DataSrc*) match.bestDataSrc();
+ if (datasource) {
+ DataSrcTransaction* transaction = datasource->startTransaction(zone_name);
+ DataSrc result = datasource->doIXFR(transaction, m.beginSection(Section::ANSWER());
+ if (result != DataSrc::SUCCESS) {
+ return isc::config::createAnswer(result, "Error in doIXFR");
+ } else {
+ return isc::config::createAnswer();
+ }
+ } else {
+ return isc::config::createAnswer(1, "No data store found for zone");
+ }
+ } catch (isc::Exception exc) {
+ return isc::config::createAnswer(1, exc.what());
+ }
+}
+
+
+
Modified: branches/trac232/src/bin/auth/auth_srv.h
==============================================================================
--- branches/trac232/src/bin/auth/auth_srv.h (original)
+++ branches/trac232/src/bin/auth/auth_srv.h Wed Jun 23 07:26:23 2010
@@ -62,6 +62,7 @@
isc::data::ElementPtr addRR(isc::data::ElementPtr arg);
isc::data::ElementPtr delRR(isc::data::ElementPtr arg);
isc::data::ElementPtr loadZone(isc::data::ElementPtr arg);
+ isc::data::ElementPtr ixfr(isc::data::ElementPtr arg);
// end temp add
private:
AuthSrvImpl* impl_;
Modified: branches/trac232/src/bin/auth/main.cc
==============================================================================
--- branches/trac232/src/bin/auth/main.cc (original)
+++ branches/trac232/src/bin/auth/main.cc Wed Jun 23 07:26:23 2010
@@ -83,6 +83,8 @@
answer = auth_server->delRR(args);
} else if (command == "load_zone") {
answer = auth_server->loadZone(args);
+ } else if (command == "ixfr") {
+ answer = auth_server->ixfr(args);
} else if (command == "shutdown") {
io_service->stop();
}
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 Wed Jun 23 07:26:23 2010
@@ -1135,6 +1135,17 @@
return result;
}
-
-}
-}
+DataSrc::Result
+doIXFR(DataSrcTransaction* transaction,
+ const RRsetIterator start,
+ const RRsetIterator end)
+{
+ (void)transaction;
+ (void)start;
+ (void)end;
+ return DataSrc::SUCCESS;
+}
+
+
+}
+}
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 Wed Jun 23 07:26:23 2010
@@ -27,6 +27,7 @@
#include <dns/rrttl.h>
#include <dns/rdata.h>
#include <dns/rrset.h>
+#include <dns/message.h>
namespace isc {
@@ -121,6 +122,9 @@
DataSrc::Result replaceZone(DataSrcTransaction* transaction,
isc::dns::RRsetList& rrsets);
DataSrc::Result delZone(DataSrcTransaction* transaction);
+ DataSrc::Result doIXFR(DataSrcTransaction* transaction,
+ const isc::dns::RRsetIterator start,
+ const isc::dns::RRsetIterator end);
private:
DataSrc::Result addRR(int zone_id,
More information about the bind10-changes
mailing list