[svn] commit: r810 - in /branches/each-ds/src: bin/auth/ lib/auth/cpp/ lib/dns/cpp/rdata/generic/
BIND 10 source code commits
bind10-changes at lists.isc.org
Fri Feb 12 21:28:36 UTC 2010
Author: each
Date: Fri Feb 12 21:28:36 2010
New Revision: 810
Log:
checkpoint:
- moved DSResult enum into AbstractDataSrc class
- s/runQuery/doQuery/
- doQuery() now returns void
- moved lib/auth into namespace isc::auth
- minor style fixes
Modified:
branches/each-ds/src/bin/auth/auth_srv.cc
branches/each-ds/src/bin/auth/auth_srv.h
branches/each-ds/src/lib/auth/cpp/data_source.cc
branches/each-ds/src/lib/auth/cpp/data_source.h
branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc
branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.h
branches/each-ds/src/lib/auth/cpp/data_source_static.cc
branches/each-ds/src/lib/auth/cpp/data_source_static.h
branches/each-ds/src/lib/auth/cpp/query.cc
branches/each-ds/src/lib/auth/cpp/query.h
branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.cc
branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.h
Modified: branches/each-ds/src/bin/auth/auth_srv.cc
==============================================================================
--- branches/each-ds/src/bin/auth/auth_srv.cc (original)
+++ branches/each-ds/src/bin/auth/auth_srv.cc Fri Feb 12 21:28:36 2010
@@ -43,6 +43,7 @@
using namespace std;
+using namespace isc::auth;
using namespace isc::dns;
using namespace isc::dns::rdata;
using namespace isc::data;
@@ -114,7 +115,7 @@
// do the DataSource call here
Query q = Query(msg, false);
- data_src.runQuery(q);
+ data_src.doQuery(q);
OutputBuffer obuffer(4096);
MessageRenderer renderer(obuffer);
Modified: branches/each-ds/src/bin/auth/auth_srv.h
==============================================================================
--- branches/each-ds/src/bin/auth/auth_srv.h (original)
+++ branches/each-ds/src/bin/auth/auth_srv.h Fri Feb 12 21:28:36 2010
@@ -31,7 +31,7 @@
isc::data::ElementPtr updateConfig(isc::data::ElementPtr config);
private:
- isc::dns::MetaDataSrc data_src;
+ isc::auth::MetaDataSrc data_src;
int sock;
};
Modified: branches/each-ds/src/lib/auth/cpp/data_source.cc
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/data_source.cc (original)
+++ branches/each-ds/src/lib/auth/cpp/data_source.cc Fri Feb 12 21:28:36 2010
@@ -10,8 +10,10 @@
#include "data_source.h"
+using namespace isc::dns;
+
namespace isc {
-namespace dns {
+namespace auth {
static void
getAdditional(Query& q, RRsetPtr rrset) {
@@ -52,9 +54,9 @@
}
}
-DSResult
-DataSrc::runQuery(Query q) {
- DSResult result;
+void
+DataSrc::doQuery(Query q) {
+ Result result;
Message& m = q.message();
while (!q.tasks().empty()) {
@@ -94,8 +96,8 @@
case QUERY_FOLLOWCNAME:
getAdditional(q, data[0]);
if (q.tasks().empty()) {
- // No additional processing is needed;
- // add authority section.
+ // No additional processing is needed, so now
+ // add the authority section.
if (data[0]->getType() != RRType::NS()) {
QueryTask qt(Name(*match.closestName()),
task.qclass, RRType::NS(),
@@ -110,7 +112,7 @@
// If no more work items, add authority section now
if (q.tasks().empty()) {
q.setStatus(QUERY_SUCCESS);
- return (SUCCESS);
+ return;
}
continue;
@@ -118,7 +120,7 @@
getAdditional(q, data[0]);
if (q.tasks().empty()) {
q.setStatus(QUERY_SUCCESS);
- return (SUCCESS);
+ return;
}
continue;
@@ -126,7 +128,7 @@
dns_throw (Unexpected, "unexpected query status");
}
- case CNAME:
+ case CNAME_FOUND:
if (data[0]->getType() != RRType::CNAME()) {
dns_throw (Unexpected, "unexpected query status");
}
@@ -161,7 +163,7 @@
data, sigs);
if (result != SUCCESS) {
m.setRcode(Rcode::SERVFAIL());
- return (ERROR);
+ return;
}
m.addRRset(Section::AUTHORITY(), data[0]);
@@ -170,7 +172,7 @@
}
q.setStatus(QUERY_FAIL);
- return (result);
+ return;
}
continue;
@@ -178,7 +180,7 @@
if (q.status() == QUERY_GETANSWER) {
m.setRcode(Rcode::REFUSED());
q.setStatus(QUERY_FAIL);
- return (result);
+ return;
}
continue;
@@ -186,11 +188,9 @@
case ERROR:
m.setRcode(Rcode::SERVFAIL());
q.setStatus(QUERY_FAIL);
- return (result);
+ return;
}
}
-
- return (result);
};
Modified: branches/each-ds/src/lib/auth/cpp/data_source.h
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/data_source.h (original)
+++ branches/each-ds/src/lib/auth/cpp/data_source.h Fri Feb 12 21:28:36 2010
@@ -23,18 +23,10 @@
#include <auth/query.h>
#include <iostream>
+using namespace isc::dns;
+
namespace isc {
-namespace dns {
-
-enum DSResult {
- SUCCESS,
- NOT_IMPLEMENTED,
- ERROR,
- CNAME,
- ZONE_NOT_FOUND,
- NAME_NOT_FOUND,
- TYPE_NOT_FOUND
-};
+namespace auth {
class DataSrc;
class NameMatch;
@@ -43,15 +35,27 @@
class AbstractDataSrc {
public:
+ enum Result {
+ SUCCESS,
+ ERROR,
+ NOT_IMPLEMENTED,
+ CNAME_FOUND,
+ ZONE_NOT_FOUND,
+ NAME_NOT_FOUND,
+ TYPE_NOT_FOUND
+ };
+
virtual ~AbstractDataSrc() {};
// 'High-level' methods. These will be implemented by the
// general DataSrc class, but MAY be overwritten by subclasses.
- virtual DSResult runQuery(Query query) = 0;
+ virtual void doQuery(Query query) = 0;
+ // virtual void doUpdate(Update update) = 0;
+ // virtual void doXfr(Query query) = 0;
// Mandatory 'low-level' methods: These will NOT be implemented by
// the general DataSrc class; subclasses MUST implement them.
- virtual DSResult findRRset(const Query& q,
+ virtual Result findRRset(const Query& q,
const Name& qname,
const RRClass& qclass,
const RRType& qtype,
@@ -62,8 +66,8 @@
// Optional 'low-level' methods. These will have stub implementations
// in the general DataSrc class but MAY be overwritten by subclasses
- virtual DSResult init() = 0;
- virtual DSResult close() = 0;
+ virtual Result init() = 0;
+ virtual Result close() = 0;
};
// Base class for a DNS Data Source
@@ -73,21 +77,21 @@
DataSrc(const RRClass& c) : rrclass(c) {}
virtual ~DataSrc() {};
- DSResult runQuery(Query q);
-
- virtual DSResult findRRset(const Query& q,
+ void doQuery(Query q);
+
+ virtual Result findRRset(const Query& q,
const Name& qname,
const RRClass& qclass,
const RRType& qtype,
RRsetList& target,
RRsetList& sigs) const = 0;
- virtual DSResult findAddrs(const Query& q,
+ virtual Result findAddrs(const Query& q,
const Name& qname,
const RRClass& qclass,
RRsetList& target,
RRsetList& sigs) const {
- DSResult r;
+ Result r;
r = findRRset(q, qname, qclass, RRType::A(), target, sigs);
if (r != SUCCESS) {
return (r);
@@ -102,8 +106,8 @@
const RRClass& getClass() const { return rrclass; }
void setClass(RRClass& c) { rrclass = c; }
- DSResult init() { return NOT_IMPLEMENTED; }
- DSResult close() { return NOT_IMPLEMENTED; }
+ Result init() { return NOT_IMPLEMENTED; }
+ Result close() { return NOT_IMPLEMENTED; }
private:
RRClass rrclass;
@@ -139,13 +143,13 @@
// Instead, use findClosestEnclosure() to get a pointer to the best
// concrete data source, then send all queries directly there.
- DSResult findRRset(const Query& q, const Name& qname,
+ Result findRRset(const Query& q, const Name& qname,
const RRClass& qclass, const RRType& qtype,
RRsetList& target, RRsetList& sigs) const {
return (NOT_IMPLEMENTED);
}
- DSResult findAddrs(const Query& q,
+ Result findAddrs(const Query& q,
const Name& qname, const RRClass& qclass,
RRsetList& target, RRsetList& sigs) const {
return (NOT_IMPLEMENTED);
Modified: branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc (original)
+++ branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc Fri Feb 12 21:28:36 2010
@@ -7,10 +7,11 @@
#include <iostream>
using namespace std;
+using namespace isc::dns;
using namespace isc::dns::rdata;
namespace isc {
-namespace dns {
+namespace auth {
//
// Prepare a statement. Can call release() or sqlite3_finalize()
@@ -306,7 +307,7 @@
close();
}
-DSResult
+DataSrc::Result
Sqlite3DataSrc::init()
{
try {
@@ -334,7 +335,7 @@
match.update(*this, Name(position));
}
-DSResult
+DataSrc::Result
Sqlite3DataSrc::findRRset(const Query& q,
const Name& qname,
const RRClass& qclass,
@@ -349,7 +350,7 @@
} else if (rows == 0) {
return (NAME_NOT_FOUND);
} else if (found_cname) {
- return (CNAME);
+ return (CNAME_FOUND);
} else {
return (SUCCESS);
}
@@ -375,11 +376,11 @@
checkAndSetupSchema();
}
-DSResult
+DataSrc::Result
Sqlite3DataSrc::close(void)
{
if (db == NULL) {
- return SUCCESS;
+ return (SUCCESS);
}
if (q_zone != NULL) {
@@ -400,8 +401,8 @@
sqlite3_close(db);
db = NULL;
- return SUCCESS;
-}
-
-}
-}
+ return (SUCCESS);
+}
+
+}
+}
Modified: branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.h
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.h (original)
+++ branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.h Fri Feb 12 21:28:36 2010
@@ -21,8 +21,10 @@
#include "data_source.h"
+using namespace isc::dns;
+
namespace isc {
-namespace dns {
+namespace auth {
class Sqlite3DataSrc : public DataSrc {
public:
@@ -31,14 +33,14 @@
virtual void findClosestEnclosure(NameMatch& match) const;
- virtual DSResult findRRset(const Query& q,
- const Name& qname,
- const RRClass& qclass,
- const RRType& qtype,
- RRsetList& target, RRsetList& sigs) const;
+ virtual Result findRRset(const Query& q,
+ const Name& qname,
+ const RRClass& qclass,
+ const RRType& qtype,
+ RRsetList& target, RRsetList& sigs) const;
- virtual DSResult init();
- virtual DSResult close();
+ virtual Result init();
+ virtual Result close();
private:
void open(const std::string& name);
Modified: branches/each-ds/src/lib/auth/cpp/data_source_static.cc
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/data_source_static.cc (original)
+++ branches/each-ds/src/lib/auth/cpp/data_source_static.cc Fri Feb 12 21:28:36 2010
@@ -12,10 +12,11 @@
#include <iostream>
+using namespace isc::dns;
+using namespace isc::dns::rdata;
+
namespace isc {
-namespace dns {
-
-using namespace isc::dns::rdata;
+namespace auth {
StaticDataSrc::StaticDataSrc() : authors_name("authors.bind"),
version_name("version.bind")
@@ -67,7 +68,7 @@
}
}
-DSResult
+DataSrc::Result
StaticDataSrc::findRRset(const Query& q,
const Name& qname,
const RRClass& qclass,
@@ -78,26 +79,26 @@
if (qname == version_name &&
qclass == version->getClass() && qtype == version->getType()) {
target.push_back(version);
- return SUCCESS;
+ return (SUCCESS);
} else if (qname == version_name &&
qclass == version_ns->getClass() &&
qtype == version_ns->getType()) {
target.push_back(version_ns);
- return SUCCESS;
+ return (SUCCESS);
} else if (qname == authors_name &&
qclass == authors->getClass() && qtype == authors->getType()) {
target.push_back(authors);
- return SUCCESS;
+ return (SUCCESS);
} else if (qname == authors_name &&
qclass == authors_ns->getClass() &&
qtype == authors_ns->getType()) {
target.push_back(authors_ns);
- return SUCCESS;
+ return (SUCCESS);
}
// XXX: this is not 100% correct.
// We should also support the nodata/noerror case.
- return NAME_NOT_FOUND;
+ return (NAME_NOT_FOUND);
}
}
Modified: branches/each-ds/src/lib/auth/cpp/data_source_static.h
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/data_source_static.h (original)
+++ branches/each-ds/src/lib/auth/cpp/data_source_static.h Fri Feb 12 21:28:36 2010
@@ -27,8 +27,10 @@
#include "data_source.h"
+using namespace isc::dns;
+
namespace isc {
-namespace dns {
+namespace auth {
class StaticDataSrc : public DataSrc {
public:
@@ -37,15 +39,15 @@
void findClosestEnclosure(NameMatch& match) const;
- DSResult findRRset(const Query& q,
- const Name& qname,
- const RRClass& qclass,
- const RRType& qtype,
- RRsetList& target,
- RRsetList& sigs) const;
+ Result findRRset(const Query& q,
+ const Name& qname,
+ const RRClass& qclass,
+ const RRType& qtype,
+ RRsetList& target,
+ RRsetList& sigs) const;
- DSResult init() { return SUCCESS; };
- DSResult close() { return SUCCESS; } ;
+ Result init() { return (SUCCESS); };
+ Result close() { return (SUCCESS); } ;
private:
const Name authors_name;
Modified: branches/each-ds/src/lib/auth/cpp/query.cc
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/query.cc (original)
+++ branches/each-ds/src/lib/auth/cpp/query.cc Fri Feb 12 21:28:36 2010
@@ -24,7 +24,7 @@
#include "query.h"
namespace isc {
-namespace dns {
+namespace auth {
}
}
Modified: branches/each-ds/src/lib/auth/cpp/query.h
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/query.h (original)
+++ branches/each-ds/src/lib/auth/cpp/query.h Fri Feb 12 21:28:36 2010
@@ -26,8 +26,10 @@
#include <dns/rrclass.h>
#include <dns/rrtype.h>
+using namespace isc::dns;
+
namespace isc {
-namespace dns {
+namespace auth {
enum QueryStatus {
QUERY_GETANSWER,
Modified: branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.cc
==============================================================================
--- branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.cc (original)
+++ branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.cc Fri Feb 12 21:28:36 2010
@@ -86,5 +86,17 @@
return (compareNames(mxname_, other_mx.mxname_));
}
+const Name&
+MX::getMXName() const
+{
+ return (mxname_);
+}
+
+const uint16_t
+MX::getMXPref() const
+{
+ return (preference_);
+}
+
// END_RDATA_NAMESPACE
// END_ISC_NAMESPACE
Modified: branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.h
==============================================================================
--- branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.h (original)
+++ branches/each-ds/src/lib/dns/cpp/rdata/generic/mx_15.h Fri Feb 12 21:28:36 2010
@@ -36,6 +36,12 @@
explicit MX(uint16_t preference, const Name& mxname);
+ ///
+ /// Specialized methods
+ ///
+ const Name& getMXName() const;
+ const uint16_t getMXPref() const;
+
private:
/// Note: this is a prototype version; we may reconsider
/// this representation later.
More information about the bind10-changes
mailing list