[svn] commit: r789 - in /trunk/src/lib/dns/cpp: rdata/generic/soa_6.cc rdata/generic/soa_6.h rdata_unittest.cc
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed Feb 10 23:00:58 UTC 2010
Author: jinmei
Date: Wed Feb 10 23:00:58 2010
New Revision: 789
Log:
added quick hack implementation of the SOA rdata class for datasource
development.
passed minimum level of unit test, will get it reviewed in the next review
cycle.
Modified:
trunk/src/lib/dns/cpp/rdata/generic/soa_6.cc (contents, props changed)
trunk/src/lib/dns/cpp/rdata/generic/soa_6.h (props changed)
trunk/src/lib/dns/cpp/rdata_unittest.cc
Modified: trunk/src/lib/dns/cpp/rdata/generic/soa_6.cc
==============================================================================
--- trunk/src/lib/dns/cpp/rdata/generic/soa_6.cc (original)
+++ trunk/src/lib/dns/cpp/rdata/generic/soa_6.cc Wed Feb 10 23:00:58 2010
@@ -39,10 +39,35 @@
buffer.readData(numdata_, sizeof(numdata_));
}
-SOA::SOA(const std::string& soastr) :
- mname_("."), rname_(".")
+SOA::SOA(const string& soastr) :
+ mname_("."), rname_(".") // quick hack workaround
{
- dns_throw(InvalidRdataText, "Not implemented yet");
+ istringstream iss(soastr);
+ string token;
+
+ iss >> token;
+ if (iss.bad() || iss.fail()) {
+ dns_throw(InvalidRdataText, "Invalid SOA MNAME");
+ }
+ mname_ = Name(token);
+ iss >> token;
+ rname_ = Name(token);
+ if (iss.bad() || iss.fail()) {
+ dns_throw(InvalidRdataText, "Invalid SOA RNAME");
+ }
+
+ uint32_t serial, refresh, retry, expire, minimum;
+ iss >> serial >> refresh >> retry >> expire >> minimum;
+ if (iss.rdstate() != ios::eofbit) {
+ dns_throw(InvalidRdataText, "Invalid SOA format");
+ }
+ OutputBuffer buffer(20);
+ buffer.writeUint32(serial);
+ buffer.writeUint32(refresh);
+ buffer.writeUint32(retry);
+ buffer.writeUint32(expire);
+ buffer.writeUint32(minimum);
+ memcpy(numdata_, buffer.getData(), buffer.getLength());
}
SOA::SOA(const Name& mname, const Name& rname, uint32_t serial,
Modified: trunk/src/lib/dns/cpp/rdata_unittest.cc
==============================================================================
--- trunk/src/lib/dns/cpp/rdata_unittest.cc (original)
+++ trunk/src/lib/dns/cpp/rdata_unittest.cc Wed Feb 10 23:00:58 2010
@@ -330,7 +330,11 @@
TEST_F(RdataTest, createFromText_SOA)
{
- //TBD
+ EXPECT_EQ(0, rdata_soa.compare(generic::SOA("ns.example.com. "
+ "root.example.com. "
+ "2010012601 3600 300 3600000 "
+ "1200")));
+ // TBD: more tests
}
TEST_F(RdataTest, createFromWire_SOA)
More information about the bind10-changes
mailing list