[svn] commit: r3038 - in /branches/trac351/src: bin/auth/ bin/auth/tests/ bin/host/ lib/bench/ lib/bench/tests/ lib/datasrc/ lib/datasrc/tests/ lib/dns/ lib/dns/python/ lib/dns/python/tests/ lib/dns/tests/
BIND 10 source code commits
bind10-changes at lists.isc.org
Tue Sep 28 02:15:42 UTC 2010
Author: jinmei
Date: Tue Sep 28 02:15:42 2010
New Revision: 3038
Log:
- separated Rcode class declarations and definitions in different files
- added more detailed tests for the Rcode class
- added some methods for the recent introduction of EDNS class (Trac #311)
- adjusted and enhanced python binding.
Modified:
branches/trac351/src/bin/auth/auth_srv.cc
branches/trac351/src/bin/auth/tests/auth_srv_unittest.cc
branches/trac351/src/bin/host/host.cc
branches/trac351/src/lib/bench/benchmark_util.cc
branches/trac351/src/lib/bench/tests/loadquery_unittest.cc
branches/trac351/src/lib/datasrc/data_source.cc
branches/trac351/src/lib/datasrc/tests/datasrc_unittest.cc
branches/trac351/src/lib/dns/Makefile.am
branches/trac351/src/lib/dns/exceptions.cc
branches/trac351/src/lib/dns/message.cc
branches/trac351/src/lib/dns/message.h
branches/trac351/src/lib/dns/opcode.h
branches/trac351/src/lib/dns/python/Makefile.am
branches/trac351/src/lib/dns/python/message_python.cc
branches/trac351/src/lib/dns/python/opcode_python.cc
branches/trac351/src/lib/dns/python/pydnspp.cc
branches/trac351/src/lib/dns/python/tests/Makefile.am
branches/trac351/src/lib/dns/python/tests/message_python_test.py
branches/trac351/src/lib/dns/python/tests/messagerenderer_python_test.py
branches/trac351/src/lib/dns/tests/Makefile.am
branches/trac351/src/lib/dns/tests/message_unittest.cc
Modified: branches/trac351/src/bin/auth/auth_srv.cc
==============================================================================
--- branches/trac351/src/bin/auth/auth_srv.cc (original)
+++ branches/trac351/src/bin/auth/auth_srv.cc Tue Sep 28 02:15:42 2010
@@ -29,6 +29,7 @@
#include <dns/name.h>
#include <dns/question.h>
#include <dns/opcode.h>
+#include <dns/rcode.h>
#include <dns/rrset.h>
#include <dns/rrttl.h>
#include <dns/message.h>
Modified: branches/trac351/src/bin/auth/tests/auth_srv_unittest.cc
==============================================================================
--- branches/trac351/src/bin/auth/tests/auth_srv_unittest.cc (original)
+++ branches/trac351/src/bin/auth/tests/auth_srv_unittest.cc Tue Sep 28 02:15:42 2010
@@ -23,6 +23,7 @@
#include <dns/message.h>
#include <dns/messagerenderer.h>
#include <dns/opcode.h>
+#include <dns/rcode.h>
#include <dns/rrclass.h>
#include <dns/rrtype.h>
@@ -281,6 +282,7 @@
{
request_message.clear(Message::RENDER);
request_message.setOpcode(opcode);
+ request_message.setRcode(Rcode::NOERROR());
request_message.setQid(default_qid);
request_message.addQuestion(Question(request_name, rrclass, rrtype));
}
@@ -578,6 +580,7 @@
TEST_F(AuthSrvTest, notifyEmptyQuestion) {
request_message.clear(Message::RENDER);
request_message.setOpcode(Opcode::NOTIFY());
+ request_message.setRcode(Rcode::NOERROR());
request_message.setHeaderFlag(MessageFlag::AA());
request_message.setQid(default_qid);
request_message.toWire(request_renderer);
Modified: branches/trac351/src/bin/host/host.cc
==============================================================================
--- branches/trac351/src/bin/host/host.cc (original)
+++ branches/trac351/src/bin/host/host.cc Tue Sep 28 02:15:42 2010
@@ -29,6 +29,7 @@
#include <dns/message.h>
#include <dns/messagerenderer.h>
#include <dns/opcode.h>
+#include <dns/rcode.h>
#include <dns/rrclass.h>
#include <dns/rrtype.h>
#include <dns/rrset.h>
Modified: branches/trac351/src/lib/bench/benchmark_util.cc
==============================================================================
--- branches/trac351/src/lib/bench/benchmark_util.cc (original)
+++ branches/trac351/src/lib/bench/benchmark_util.cc Tue Sep 28 02:15:42 2010
@@ -27,6 +27,7 @@
#include <dns/message.h>
#include <dns/messagerenderer.h>
#include <dns/opcode.h>
+#include <dns/rcode.h>
#include <dns/rrtype.h>
#include <dns/rrclass.h>
#include <dns/question.h>
Modified: branches/trac351/src/lib/bench/tests/loadquery_unittest.cc
==============================================================================
--- branches/trac351/src/lib/bench/tests/loadquery_unittest.cc (original)
+++ branches/trac351/src/lib/bench/tests/loadquery_unittest.cc Tue Sep 28 02:15:42 2010
@@ -23,6 +23,7 @@
#include <dns/message.h>
#include <dns/name.h>
#include <dns/opcode.h>
+#include <dns/rcode.h>
#include <dns/rrclass.h>
#include <dns/rrtype.h>
@@ -80,7 +81,6 @@
// Check if the header part indicates an expected standard query.
EXPECT_EQ(0, message.getQid());
EXPECT_EQ(Opcode::QUERY(), message.getOpcode());
- EXPECT_EQ(Rcode::NOERROR(), message.getRcode());
EXPECT_EQ(Rcode::NOERROR(), message.getRcode());
EXPECT_FALSE(message.getHeaderFlag(MessageFlag::QR()));
EXPECT_FALSE(message.getHeaderFlag(MessageFlag::AA()));
Modified: branches/trac351/src/lib/datasrc/data_source.cc
==============================================================================
--- branches/trac351/src/lib/datasrc/data_source.cc (original)
+++ branches/trac351/src/lib/datasrc/data_source.cc Tue Sep 28 02:15:42 2010
@@ -32,6 +32,7 @@
#include <dns/buffer.h>
#include <dns/message.h>
#include <dns/name.h>
+#include <dns/rcode.h>
#include <dns/rdataclass.h>
#include <dns/rrset.h>
#include <dns/rrsetlist.h>
Modified: branches/trac351/src/lib/datasrc/tests/datasrc_unittest.cc
==============================================================================
--- branches/trac351/src/lib/datasrc/tests/datasrc_unittest.cc (original)
+++ branches/trac351/src/lib/datasrc/tests/datasrc_unittest.cc Tue Sep 28 02:15:42 2010
@@ -27,6 +27,7 @@
#include <dns/messagerenderer.h>
#include <dns/question.h>
#include <dns/opcode.h>
+#include <dns/rcode.h>
#include <dns/rdata.h>
#include <dns/rdataclass.h>
#include <dns/rrclass.h>
Modified: branches/trac351/src/lib/dns/Makefile.am
==============================================================================
--- branches/trac351/src/lib/dns/Makefile.am (original)
+++ branches/trac351/src/lib/dns/Makefile.am Tue Sep 28 02:15:42 2010
@@ -69,6 +69,7 @@
libdns___la_SOURCES += messagerenderer.h messagerenderer.cc
libdns___la_SOURCES += name.h name.cc
libdns___la_SOURCES += opcode.h opcode.cc
+libdns___la_SOURCES += rcode.h rcode.cc
libdns___la_SOURCES += rdata.h rdata.cc
libdns___la_SOURCES += rrclass.cc
libdns___la_SOURCES += rrparamregistry.h
Modified: branches/trac351/src/lib/dns/exceptions.cc
==============================================================================
--- branches/trac351/src/lib/dns/exceptions.cc (original)
+++ branches/trac351/src/lib/dns/exceptions.cc Tue Sep 28 02:15:42 2010
@@ -15,7 +15,7 @@
// $Id$
#include <dns/exceptions.h>
-#include <dns/message.h>
+#include <dns/rcode.h>
namespace isc {
namespace dns {
Modified: branches/trac351/src/lib/dns/message.cc
==============================================================================
--- branches/trac351/src/lib/dns/message.cc (original)
+++ branches/trac351/src/lib/dns/message.cc Tue Sep 28 02:15:42 2010
@@ -33,6 +33,7 @@
#include <dns/messagerenderer.h>
#include <dns/name.h>
#include <dns/opcode.h>
+#include <dns/rcode.h>
#include <dns/question.h>
#include <dns/rdataclass.h>
#include <dns/rrclass.h>
@@ -63,11 +64,11 @@
const flags_t FLAG_CD = 0x0010;
//
-// EDNS related constants
+// EDNS related constants (THESE SHOULD BE REMOVED ON MERGE)
//
+const uint32_t EXTRCODE_MASK = 0xff000000;
const flags_t EXTFLAG_MASK = 0xffff;
const flags_t EXTFLAG_DO = 0x8000;
-const uint32_t EXTRCODE_MASK = 0xff000000;
const uint32_t EDNSVERSION_MASK = 0x00ff0000;
const unsigned int OPCODE_MASK = 0x7800;
@@ -76,46 +77,6 @@
const unsigned int FLAG_MASK = 0x8ff0;
const unsigned int MESSAGE_REPLYPRESERVE = (FLAG_RD | FLAG_CD);
-
-const Rcode rcodes[] = {
- Rcode::NOERROR(),
- Rcode::FORMERR(),
- Rcode::SERVFAIL(),
- Rcode::NXDOMAIN(),
- Rcode::NOTIMP(),
- Rcode::REFUSED(),
- Rcode::YXDOMAIN(),
- Rcode::YXRRSET(),
- Rcode::NXRRSET(),
- Rcode::NOTAUTH(),
- Rcode::NOTZONE(),
- Rcode::RESERVED11(),
- Rcode::RESERVED12(),
- Rcode::RESERVED13(),
- Rcode::RESERVED14(),
- Rcode::RESERVED15(),
- Rcode::BADVERS()
-};
-
-const char *rcodetext[] = {
- "NOERROR",
- "FORMERR",
- "SERVFAIL",
- "NXDOMAIN",
- "NOTIMP",
- "REFUSED",
- "YXDOMAIN",
- "YXRRSET",
- "NXRRSET",
- "NOTAUTH",
- "NOTZONE",
- "RESERVED11",
- "RESERVED12",
- "RESERVED13",
- "RESERVED14",
- "RESERVED15",
- "BADVERS"
-};
const char *sectiontext[] = {
"QUESTION",
@@ -123,23 +84,6 @@
"AUTHORITY",
"ADDITIONAL"
};
-}
-
-Rcode::Rcode(uint16_t code) : code_(code) {
- if (code_ > MAX_RCODE) {
- isc_throw(OutOfRange, "Rcode is too large to construct");
- }
-}
-
-string
-Rcode::toText() const {
- if (code_ < sizeof(rcodetext) / sizeof (const char *)) {
- return (rcodetext[code_]);
- }
-
- ostringstream oss;
- oss << code_;
- return (oss.str());
}
namespace {
@@ -158,12 +102,16 @@
// for efficiency?
Message::Mode mode_;
qid_t qid_;
- Rcode rcode_;
- // We want to use NULL for opcode_ to mean Opcode isn't correctly parsed or
- // set. We store the real Opcode object in opcode_placeholder_ and have
- // opcode_ refer to it when the object is valid.
+
+ // We want to use NULL for [op,r]code_ to mean the code being not
+ // correctly parsed or set. We store the real code object in
+ // xxcode_placeholder_ and have xxcode_ refer to it when the object
+ // is valid.
+ const Rcode* rcode_;
+ Rcode rcode_placeholder_;
const Opcode* opcode_;
Opcode opcode_placeholder_;
+
flags_t flags_;
bool dnssec_ok_;
@@ -184,14 +132,15 @@
void init();
void setOpcode(const Opcode& opcode);
+ void setRcode(const Rcode& rcode);
int parseQuestion(InputBuffer& buffer);
int parseSection(const Section& section, InputBuffer& buffer);
};
MessageImpl::MessageImpl(Message::Mode mode) :
mode_(mode),
- rcode_(Rcode::NOERROR()),
- opcode_placeholder_(Opcode(0)) // as a placeholder the value doesn't matter
+ rcode_placeholder_(Rcode(0)), // as a placeholder the value doesn't matter
+ opcode_placeholder_(Opcode(0)) // ditto
{
init();
}
@@ -200,7 +149,7 @@
MessageImpl::init() {
flags_ = 0;
qid_ = 0;
- rcode_ = Rcode::NOERROR(); // XXX
+ rcode_ = NULL;
opcode_ = NULL;
dnssec_ok_ = false;
remote_edns_ = RRsetPtr();
@@ -225,6 +174,12 @@
opcode_ = &opcode_placeholder_;
}
+void
+MessageImpl::setRcode(const Rcode& rcode) {
+ rcode_placeholder_ = rcode;
+ rcode_ = &rcode_placeholder_;
+}
+
Message::Message(Mode mode) :
impl_(new MessageImpl(mode))
{}
@@ -304,7 +259,7 @@
const Rcode&
Message::getRcode() const {
- return (impl_->rcode_);
+ return (*impl_->rcode_);
}
void
@@ -313,7 +268,7 @@
isc_throw(InvalidMessageOperation,
"setRcode performed in non-render mode");
}
- impl_->rcode_ = rcode;
+ impl_->setRcode(rcode);
}
const Opcode&
@@ -421,7 +376,8 @@
// if the Rcode is BADVERS, which is EDNS specific.
// XXX: this logic is tricky. We should revisit this later.
if (!is_query) {
- if (mimpl->remote_edns_ == NULL && mimpl->rcode_ != Rcode::BADVERS()) {
+ if (mimpl->remote_edns_ == NULL &&
+ *mimpl->rcode_ != Rcode::BADVERS()) {
return (false);
}
} else {
@@ -431,7 +387,7 @@
// Extended Rcode is to be specified.
if (mimpl->udpsize_ == Message::DEFAULT_MAX_UDPSIZE &&
!mimpl->dnssec_ok_ &&
- mimpl->rcode_.getCode() < 0x10) {
+ mimpl->rcode_->getCode() < 0x10) {
return (false);
}
}
@@ -444,7 +400,7 @@
}
// Render EDNS OPT RR
- uint32_t extrcode_flags = ((mimpl->rcode_.getCode() & 0xff0) << 24);
+ uint32_t extrcode_flags = ((mimpl->rcode_->getCode() & 0xff0) << 24);
if (mimpl->dnssec_ok_) {
extrcode_flags |= 0x8000; // set DO bit
}
@@ -465,6 +421,14 @@
if (impl_->mode_ != Message::RENDER) {
isc_throw(InvalidMessageOperation,
"Message rendering attempted in non render mode");
+ }
+ if (impl_->rcode_ == NULL) {
+ isc_throw(InvalidMessageOperation,
+ "Message rendering attempted without Rcode");
+ }
+ if (impl_->opcode_ == NULL) {
+ isc_throw(InvalidMessageOperation,
+ "Message rendering attempted without Opcode");
}
// reserve room for the header
@@ -524,7 +488,7 @@
uint16_t codes_and_flags =
(impl_->opcode_->getCode() << OPCODE_SHIFT) & OPCODE_MASK;
- codes_and_flags |= (impl_->rcode_.getCode() & RCODE_MASK);
+ codes_and_flags |= (impl_->rcode_->getCode() & RCODE_MASK);
codes_and_flags |= (impl_->flags_ & FLAG_MASK);
renderer.writeUint16At(codes_and_flags, header_pos);
header_pos += sizeof(uint16_t);
@@ -554,7 +518,7 @@
impl_->qid_ = buffer.readUint16();
const uint16_t codes_and_flags = buffer.readUint16();
impl_->setOpcode(Opcode((codes_and_flags & OPCODE_MASK) >> OPCODE_SHIFT));
- impl_->rcode_ = rcodes[(codes_and_flags & RCODE_MASK)];
+ impl_->setRcode(Rcode(codes_and_flags & RCODE_MASK));
impl_->flags_ = (codes_and_flags & FLAG_MASK);
impl_->counts_[Section::QUESTION().getCode()] = buffer.readUint16();
impl_->counts_[Section::ANSWER().getCode()] = buffer.readUint16();
@@ -685,8 +649,8 @@
if (rrclass.getCode() > Message::DEFAULT_MAX_UDPSIZE) {
udpsize_ = rrclass.getCode();
}
- rcode_ = Rcode(((ttl.getValue() & EXTRCODE_MASK) >> 20) |
- rcode_.getCode());
+ setRcode(Rcode(((ttl.getValue() & EXTRCODE_MASK) >> 20) |
+ rcode_->getCode()));
continue;
}
@@ -730,7 +694,7 @@
s += ";; ->>HEADER<<- opcode: " + impl_->opcode_->toText();
// for simplicity we don't consider extended rcode (unlike BIND9)
- s += ", status: " + impl_->rcode_.toText();
+ s += ", status: " + impl_->rcode_->toText();
s += ", id: " + boost::lexical_cast<string>(impl_->qid_);
s += "\n;; flags: ";
if (getHeaderFlag(MessageFlag::QR()))
@@ -976,11 +940,6 @@
}
ostream&
-operator<<(ostream& os, const Rcode& rcode) {
- return (os << rcode.toText());
-}
-
-ostream&
operator<<(ostream& os, const Message& message) {
return (os << message.toText());
}
Modified: branches/trac351/src/lib/dns/message.h
==============================================================================
--- branches/trac351/src/lib/dns/message.h (original)
+++ branches/trac351/src/lib/dns/message.h Tue Sep 28 02:15:42 2010
@@ -82,6 +82,7 @@
class Message;
class MessageImpl;
class Opcode;
+class Rcode;
template <typename T>
struct SectionIteratorImpl;
@@ -160,162 +161,6 @@
return (f);
}
-/// \brief The \c Rcode class objects represent standard Response Codes
-/// (RCODEs) of the header section of DNS messages, and extended response
-/// codes as defined in the EDNS specification.
-///
-/// Constant objects are defined for standard flags.
-class Rcode {
-public:
- Rcode(uint16_t code);
- uint16_t getCode() const { return (code_); }
- bool operator==(const Rcode& other) const { return (code_ == other.code_); }
- bool operator!=(const Rcode& other) const { return (code_ != other.code_); }
- std::string toText() const;
- static const Rcode& NOERROR();
- static const Rcode& FORMERR();
- static const Rcode& SERVFAIL();
- static const Rcode& NXDOMAIN();
- static const Rcode& NOTIMP();
- static const Rcode& REFUSED();
- static const Rcode& YXDOMAIN();
- static const Rcode& YXRRSET();
- static const Rcode& NXRRSET();
- static const Rcode& NOTAUTH();
- static const Rcode& NOTZONE();
- static const Rcode& RESERVED11();
- static const Rcode& RESERVED12();
- static const Rcode& RESERVED13();
- static const Rcode& RESERVED14();
- static const Rcode& RESERVED15();
- // Extended Rcodes follow (EDNS required):
- static const Rcode& BADVERS();
-private:
- uint16_t code_;
-
- // EDNS-extended RCODEs are 12-bit unsigned integers.
- static const uint16_t MAX_RCODE = 0xfff;
-};
-
-inline const Rcode&
-Rcode::NOERROR()
-{
- static Rcode c(0);
- return (c);
-}
-
-inline const Rcode&
-Rcode::FORMERR()
-{
- static Rcode c(1);
- return (c);
-}
-
-inline const Rcode&
-Rcode::SERVFAIL()
-{
- static Rcode c(2);
- return (c);
-}
-
-inline const Rcode&
-Rcode::NXDOMAIN()
-{
- static Rcode c(3);
- return (c);
-}
-
-inline const Rcode&
-Rcode::NOTIMP()
-{
- static Rcode c(4);
- return (c);
-}
-
-inline const Rcode&
-Rcode::REFUSED()
-{
- static Rcode c(5);
- return (c);
-}
-
-inline const Rcode&
-Rcode::YXDOMAIN()
-{
- static Rcode c(6);
- return (c);
-}
-
-inline const Rcode&
-Rcode::YXRRSET()
-{
- static Rcode c(7);
- return (c);
-}
-
-inline const Rcode&
-Rcode::NXRRSET()
-{
- static Rcode c(8);
- return (c);
-}
-
-inline const Rcode&
-Rcode::NOTAUTH()
-{
- static Rcode c(9);
- return (c);
-}
-
-inline const Rcode&
-Rcode::NOTZONE()
-{
- static Rcode c(10);
- return (c);
-}
-
-inline const Rcode&
-Rcode::RESERVED11()
-{
- static Rcode c(11);
- return (c);
-}
-
-inline const Rcode&
-Rcode::RESERVED12()
-{
- static Rcode c(12);
- return (c);
-}
-
-inline const Rcode&
-Rcode::RESERVED13()
-{
- static Rcode c(13);
- return (c);
-}
-
-inline const Rcode&
-Rcode::RESERVED14()
-{
- static Rcode c(14);
- return (c);
-}
-
-inline const Rcode&
-Rcode::RESERVED15()
-{
- static Rcode c(15);
- return (c);
-}
-
-inline const Rcode&
-Rcode::BADVERS()
-{
- static Rcode c(16);
- return (c);
-}
-
/// \brief The \c Section class objects represent DNS message sections such
/// as the header, question, or answer.
///
@@ -651,8 +496,6 @@
MessageImpl* impl_;
};
-std::ostream& operator<<(std::ostream& os, const Opcode& opcode);
-std::ostream& operator<<(std::ostream& os, const Rcode& rcode);
std::ostream& operator<<(std::ostream& os, const Message& message);
}
}
Modified: branches/trac351/src/lib/dns/opcode.h
==============================================================================
--- branches/trac351/src/lib/dns/opcode.h (original)
+++ branches/trac351/src/lib/dns/opcode.h Tue Sep 28 02:15:42 2010
@@ -15,6 +15,8 @@
*/
/* $Id$ */
+
+#include <stdint.h>
#include <ostream>
@@ -186,7 +188,7 @@
/// \brief Insert the \c Opcode as a string into stream.
///
-/// This method convert \c edns into a string and inserts it into the
+/// This method convert \c opcode into a string and inserts it into the
/// output stream \c os.
///
/// \param os A \c std::ostream object on which the insertion operation is
Modified: branches/trac351/src/lib/dns/python/Makefile.am
==============================================================================
--- branches/trac351/src/lib/dns/python/Makefile.am (original)
+++ branches/trac351/src/lib/dns/python/Makefile.am Tue Sep 28 02:15:42 2010
@@ -16,6 +16,7 @@
EXTRA_DIST += rrclass_python.cc
EXTRA_DIST += name_python.cc
EXTRA_DIST += opcode_python.cc
+EXTRA_DIST += rcode_python.cc
EXTRA_DIST += rrset_python.cc
EXTRA_DIST += question_python.cc
EXTRA_DIST += rrttl_python.cc
Modified: branches/trac351/src/lib/dns/python/message_python.cc
==============================================================================
--- branches/trac351/src/lib/dns/python/message_python.cc (original)
+++ branches/trac351/src/lib/dns/python/message_python.cc Tue Sep 28 02:15:42 2010
@@ -190,311 +190,6 @@
//
// End of MessageFlag wrapper
//
-
-//
-// Rcode
-//
-
-// We added a helper variable static_code here
-// Since we can create Rcodes dynamically with Rcode(int), but also
-// use the static globals (Rcode::NOERROR() etc), we use this
-// variable to see if the code came from one of the latter, in which
-// case Rcode_destroy should not free it (the other option is to
-// allocate new Rcodes for every use of the static ones, but this
-// seems more efficient).
-class s_Rcode : public PyObject {
-public:
- const Rcode* rcode;
- bool static_code;
-};
-
-static int Rcode_init(s_Rcode* self, PyObject* args);
-static void Rcode_destroy(s_Rcode* self);
-
-static PyObject* Rcode_getCode(s_Rcode* self);
-static PyObject* Rcode_toText(s_Rcode* self);
-static PyObject* Rcode_str(PyObject* self);
-static PyObject* Rcode_NOERROR(s_Rcode* self);
-static PyObject* Rcode_FORMERR(s_Rcode* self);
-static PyObject* Rcode_SERVFAIL(s_Rcode* self);
-static PyObject* Rcode_NXDOMAIN(s_Rcode* self);
-static PyObject* Rcode_NOTIMP(s_Rcode* self);
-static PyObject* Rcode_REFUSED(s_Rcode* self);
-static PyObject* Rcode_YXDOMAIN(s_Rcode* self);
-static PyObject* Rcode_YXRRSET(s_Rcode* self);
-static PyObject* Rcode_NXRRSET(s_Rcode* self);
-static PyObject* Rcode_NOTAUTH(s_Rcode* self);
-static PyObject* Rcode_NOTZONE(s_Rcode* self);
-static PyObject* Rcode_RESERVED11(s_Rcode* self);
-static PyObject* Rcode_RESERVED12(s_Rcode* self);
-static PyObject* Rcode_RESERVED13(s_Rcode* self);
-static PyObject* Rcode_RESERVED14(s_Rcode* self);
-static PyObject* Rcode_RESERVED15(s_Rcode* self);
-static PyObject* Rcode_BADVERS(s_Rcode* self);
-static PyObject* Rcode_richcmp(s_Rcode* self, s_Rcode* other, int op);
-
-static PyMethodDef Rcode_methods[] = {
- { "get_code", reinterpret_cast<PyCFunction>(Rcode_getCode), METH_NOARGS, "Returns the code value" },
- { "to_text", reinterpret_cast<PyCFunction>(Rcode_toText), METH_NOARGS, "Returns the text representation" },
- { "NOERROR", reinterpret_cast<PyCFunction>(Rcode_NOERROR), METH_NOARGS | METH_STATIC, "Creates a NOERROR Rcode" },
- { "FORMERR", reinterpret_cast<PyCFunction>(Rcode_FORMERR), METH_NOARGS | METH_STATIC, "Creates a FORMERR Rcode" },
- { "SERVFAIL", reinterpret_cast<PyCFunction>(Rcode_SERVFAIL), METH_NOARGS | METH_STATIC, "Creates a SERVFAIL Rcode" },
- { "NXDOMAIN", reinterpret_cast<PyCFunction>(Rcode_NXDOMAIN), METH_NOARGS | METH_STATIC, "Creates a NXDOMAIN Rcode" },
- { "NOTIMP", reinterpret_cast<PyCFunction>(Rcode_NOTIMP), METH_NOARGS | METH_STATIC, "Creates a NOTIMP Rcode" },
- { "REFUSED", reinterpret_cast<PyCFunction>(Rcode_REFUSED), METH_NOARGS | METH_STATIC, "Creates a REFUSED Rcode" },
- { "YXDOMAIN", reinterpret_cast<PyCFunction>(Rcode_YXDOMAIN), METH_NOARGS | METH_STATIC, "Creates a RESERVED Rcode" },
- { "YXRRSET", reinterpret_cast<PyCFunction>(Rcode_YXRRSET), METH_NOARGS | METH_STATIC, "Creates a RESERVED Rcode" },
- { "NXRRSET", reinterpret_cast<PyCFunction>(Rcode_NXRRSET), METH_NOARGS | METH_STATIC, "Creates a RESERVED Rcode" },
- { "NOTAUTH", reinterpret_cast<PyCFunction>(Rcode_NOTAUTH), METH_NOARGS | METH_STATIC, "Creates a RESERVED Rcode" },
- { "NOTZONE", reinterpret_cast<PyCFunction>(Rcode_NOTZONE), METH_NOARGS | METH_STATIC, "Creates a RESERVED Rcode" },
- { "RESERVED11", reinterpret_cast<PyCFunction>(Rcode_RESERVED11), METH_NOARGS | METH_STATIC, "Creates a RESERVED Rcode" },
- { "RESERVED12", reinterpret_cast<PyCFunction>(Rcode_RESERVED12), METH_NOARGS | METH_STATIC, "Creates a RESERVED Rcode" },
- { "RESERVED13", reinterpret_cast<PyCFunction>(Rcode_RESERVED13), METH_NOARGS | METH_STATIC, "Creates a RESERVED Rcode" },
- { "RESERVED14", reinterpret_cast<PyCFunction>(Rcode_RESERVED14), METH_NOARGS | METH_STATIC, "Creates a RESERVED Rcode" },
- { "RESERVED15", reinterpret_cast<PyCFunction>(Rcode_RESERVED15), METH_NOARGS | METH_STATIC, "Creates a RESERVED Rcode" },
- { "BADVERS", reinterpret_cast<PyCFunction>(Rcode_BADVERS), METH_NOARGS | METH_STATIC, "Creates a BADVERS Rcode" },
- { NULL, NULL, 0, NULL }
-};
-
-static PyTypeObject rcode_type = {
- PyVarObject_HEAD_INIT(NULL, 0)
- "pydnspp.Rcode",
- sizeof(s_Rcode), // tp_basicsize
- 0, // tp_itemsize
- (destructor)Rcode_destroy, // tp_dealloc
- NULL, // tp_print
- NULL, // tp_getattr
- NULL, // tp_setattr
- NULL, // tp_reserved
- NULL, // tp_repr
- NULL, // tp_as_number
- NULL, // tp_as_sequence
- NULL, // tp_as_mapping
- NULL, // tp_hash
- NULL, // tp_call
- Rcode_str, // tp_str
- NULL, // tp_getattro
- NULL, // tp_setattro
- NULL, // tp_as_buffer
- Py_TPFLAGS_DEFAULT, // tp_flags
- "The Rcode class objects represent standard RCODEs"
- "of the header section of DNS messages.",
- NULL, // tp_traverse
- NULL, // tp_clear
- (richcmpfunc)Rcode_richcmp, // tp_richcompare
- 0, // tp_weaklistoffset
- NULL, // tp_iter
- NULL, // tp_iternext
- Rcode_methods, // tp_methods
- NULL, // tp_members
- NULL, // tp_getset
- NULL, // tp_base
- NULL, // tp_dict
- NULL, // tp_descr_get
- NULL, // tp_descr_set
- 0, // tp_dictoffset
- (initproc)Rcode_init, // tp_init
- NULL, // tp_alloc
- PyType_GenericNew, // tp_new
- NULL, // tp_free
- NULL, // tp_is_gc
- NULL, // tp_bases
- NULL, // tp_mro
- NULL, // tp_cache
- NULL, // tp_subclasses
- NULL, // tp_weaklist
- NULL, // tp_del
- 0 // tp_version_tag
-};
-
-
-static int
-Rcode_init(s_Rcode* self UNUSED_PARAM, PyObject* args UNUSED_PARAM) {
- uint16_t code = 0;
- if (PyArg_ParseTuple(args, "h", &code)) {
- try {
- self->rcode = new Rcode(code);
- self->static_code = false;
- } catch (const isc::OutOfRange&) {
- PyErr_SetString(PyExc_OverflowError,
- "rcode out of range");
- return (-1);
- }
- return (0);
- } else {
- return (-1);
- }
-}
-
-static void
-Rcode_destroy(s_Rcode* self) {
- // Depending on whether we created the rcode or are referring
- // to a global static one, we do or do not delete self->rcode here
- if (!self->static_code) {
- delete self->rcode;
- }
- self->rcode = NULL;
- Py_TYPE(self)->tp_free(self);
-}
-
-static PyObject*
-Rcode_getCode(s_Rcode* self) {
- return (Py_BuildValue("I", self->rcode->getCode()));
-}
-
-static PyObject*
-Rcode_toText(s_Rcode* self) {
- return (Py_BuildValue("s", self->rcode->toText().c_str()));
-}
-
-static PyObject*
-Rcode_str(PyObject* self) {
- // Simply call the to_text method we already defined
- return (PyObject_CallMethod(self,
- const_cast<char*>("to_text"),
- const_cast<char*>("")));
-}
-
-static PyObject*
-Rcode_createStatic(const Rcode& rcode) {
- s_Rcode* ret = PyObject_New(s_Rcode, &rcode_type);
- if (ret != NULL) {
- ret->rcode = &rcode;
- ret->static_code = true;
- }
- return (ret);
-}
-
-static PyObject*
-Rcode_NOERROR(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::NOERROR()));
-}
-
-static PyObject*
-Rcode_FORMERR(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::FORMERR()));
-}
-
-static PyObject*
-Rcode_SERVFAIL(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::SERVFAIL()));
-}
-
-static PyObject*
-Rcode_NXDOMAIN(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::NXDOMAIN()));
-}
-
-static PyObject*
-Rcode_NOTIMP(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::NOTIMP()));
-}
-
-static PyObject*
-Rcode_REFUSED(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::REFUSED()));
-}
-
-static PyObject*
-Rcode_YXDOMAIN(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::YXDOMAIN()));
-}
-
-static PyObject*
-Rcode_YXRRSET(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::YXRRSET()));
-}
-
-static PyObject*
-Rcode_NXRRSET(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::NXRRSET()));
-}
-
-static PyObject*
-Rcode_NOTAUTH(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::NOTAUTH()));
-}
-
-static PyObject*
-Rcode_NOTZONE(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::NOTZONE()));
-}
-
-static PyObject*
-Rcode_RESERVED11(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::RESERVED11()));
-}
-
-static PyObject*
-Rcode_RESERVED12(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::RESERVED12()));
-}
-
-static PyObject*
-Rcode_RESERVED13(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::RESERVED13()));
-}
-
-static PyObject*
-Rcode_RESERVED14(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::RESERVED14()));
-}
-
-static PyObject*
-Rcode_RESERVED15(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::RESERVED15()));
-}
-
-static PyObject*
-Rcode_BADVERS(s_Rcode* self UNUSED_PARAM) {
- return (Rcode_createStatic(Rcode::BADVERS()));
-}
-
-static PyObject*
-Rcode_richcmp(s_Rcode* self, s_Rcode* other, int op) {
- bool c = false;
-
- // Check for null and if the types match. If different type,
- // simply return False
- if (!other || (self->ob_type != other->ob_type)) {
- Py_RETURN_FALSE;
- }
-
- // Only equals and not equals here, unorderable type
- switch (op) {
- case Py_LT:
- PyErr_SetString(PyExc_TypeError, "Unorderable type; Rcode");
- return (NULL);
- break;
- case Py_LE:
- PyErr_SetString(PyExc_TypeError, "Unorderable type; Rcode");
- return (NULL);
- break;
- case Py_EQ:
- c = (*self->rcode == *other->rcode);
- break;
- case Py_NE:
- c = (*self->rcode != *other->rcode);
- break;
- case Py_GT:
- PyErr_SetString(PyExc_TypeError, "Unorderable type; Rcode");
- return (NULL);
- break;
- case Py_GE:
- PyErr_SetString(PyExc_TypeError, "Unorderable type; Rcode");
- return (NULL);
- break;
- }
- if (c)
- Py_RETURN_TRUE;
- else
- Py_RETURN_FALSE;
-}
-
-//
-// End of Rcode wrapper
-//
-
//
// Section
Modified: branches/trac351/src/lib/dns/python/opcode_python.cc
==============================================================================
--- branches/trac351/src/lib/dns/python/opcode_python.cc (original)
+++ branches/trac351/src/lib/dns/python/opcode_python.cc Tue Sep 28 02:15:42 2010
@@ -46,22 +46,22 @@
PyObject* Opcode_getCode(const s_Opcode* const self);
PyObject* Opcode_toText(const s_Opcode* const self);
PyObject* Opcode_str(PyObject* const self);
-PyObject* Opcode_QUERY(s_Opcode* self);
-PyObject* Opcode_IQUERY(s_Opcode* self);
-PyObject* Opcode_STATUS(s_Opcode* self);
-PyObject* Opcode_RESERVED3(s_Opcode* self);
-PyObject* Opcode_NOTIFY(s_Opcode* self);
-PyObject* Opcode_UPDATE(s_Opcode* self);
-PyObject* Opcode_RESERVED6(s_Opcode* self);
-PyObject* Opcode_RESERVED7(s_Opcode* self);
-PyObject* Opcode_RESERVED8(s_Opcode* self);
-PyObject* Opcode_RESERVED9(s_Opcode* self);
-PyObject* Opcode_RESERVED10(s_Opcode* self);
-PyObject* Opcode_RESERVED11(s_Opcode* self);
-PyObject* Opcode_RESERVED12(s_Opcode* self);
-PyObject* Opcode_RESERVED13(s_Opcode* self);
-PyObject* Opcode_RESERVED14(s_Opcode* self);
-PyObject* Opcode_RESERVED15(s_Opcode* self);
+PyObject* Opcode_QUERY(const s_Opcode* self);
+PyObject* Opcode_IQUERY(const s_Opcode* self);
+PyObject* Opcode_STATUS(const s_Opcode* self);
+PyObject* Opcode_RESERVED3(const s_Opcode* self);
+PyObject* Opcode_NOTIFY(const s_Opcode* self);
+PyObject* Opcode_UPDATE(const s_Opcode* self);
+PyObject* Opcode_RESERVED6(const s_Opcode* self);
+PyObject* Opcode_RESERVED7(const s_Opcode* self);
+PyObject* Opcode_RESERVED8(const s_Opcode* self);
+PyObject* Opcode_RESERVED9(const s_Opcode* self);
+PyObject* Opcode_RESERVED10(const s_Opcode* self);
+PyObject* Opcode_RESERVED11(const s_Opcode* self);
+PyObject* Opcode_RESERVED12(const s_Opcode* self);
+PyObject* Opcode_RESERVED13(const s_Opcode* self);
+PyObject* Opcode_RESERVED14(const s_Opcode* self);
+PyObject* Opcode_RESERVED15(const s_Opcode* self);
PyObject* Opcode_richcmp(const s_Opcode* const self,
const s_Opcode* const other, int op);
@@ -220,82 +220,82 @@
}
PyObject*
-Opcode_QUERY(s_Opcode* self UNUSED_PARAM) {
+Opcode_QUERY(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::QUERY()));
}
PyObject*
-Opcode_IQUERY(s_Opcode* self UNUSED_PARAM) {
+Opcode_IQUERY(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::IQUERY()));
}
PyObject*
-Opcode_STATUS(s_Opcode* self UNUSED_PARAM) {
+Opcode_STATUS(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::STATUS()));
}
PyObject*
-Opcode_RESERVED3(s_Opcode* self UNUSED_PARAM) {
+Opcode_RESERVED3(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::RESERVED3()));
}
PyObject*
-Opcode_NOTIFY(s_Opcode* self UNUSED_PARAM) {
+Opcode_NOTIFY(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::NOTIFY()));
}
PyObject*
-Opcode_UPDATE(s_Opcode* self UNUSED_PARAM) {
+Opcode_UPDATE(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::UPDATE()));
}
PyObject*
-Opcode_RESERVED6(s_Opcode* self UNUSED_PARAM) {
+Opcode_RESERVED6(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::RESERVED6()));
}
PyObject*
-Opcode_RESERVED7(s_Opcode* self UNUSED_PARAM) {
+Opcode_RESERVED7(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::RESERVED7()));
}
PyObject*
-Opcode_RESERVED8(s_Opcode* self UNUSED_PARAM) {
+Opcode_RESERVED8(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::RESERVED8()));
}
PyObject*
-Opcode_RESERVED9(s_Opcode* self UNUSED_PARAM) {
+Opcode_RESERVED9(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::RESERVED9()));
}
PyObject*
-Opcode_RESERVED10(s_Opcode* self UNUSED_PARAM) {
+Opcode_RESERVED10(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::RESERVED10()));
}
PyObject*
-Opcode_RESERVED11(s_Opcode* self UNUSED_PARAM) {
+Opcode_RESERVED11(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::RESERVED11()));
}
PyObject*
-Opcode_RESERVED12(s_Opcode* self UNUSED_PARAM) {
+Opcode_RESERVED12(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::RESERVED12()));
}
PyObject*
-Opcode_RESERVED13(s_Opcode* self UNUSED_PARAM) {
+Opcode_RESERVED13(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::RESERVED13()));
}
PyObject*
-Opcode_RESERVED14(s_Opcode* self UNUSED_PARAM) {
+Opcode_RESERVED14(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::RESERVED14()));
}
PyObject*
-Opcode_RESERVED15(s_Opcode* self UNUSED_PARAM) {
+Opcode_RESERVED15(const s_Opcode* self UNUSED_PARAM) {
return (Opcode_createStatic(Opcode::RESERVED15()));
}
@@ -337,9 +337,6 @@
else
Py_RETURN_FALSE;
}
-
-} // end of unnamed namespace
-// end of Opcode
// Module Initialization, all statics are initialized here
bool
@@ -394,3 +391,4 @@
return (true);
}
+} // end of unnamed namespace
Modified: branches/trac351/src/lib/dns/python/pydnspp.cc
==============================================================================
--- branches/trac351/src/lib/dns/python/pydnspp.cc (original)
+++ branches/trac351/src/lib/dns/python/pydnspp.cc Tue Sep 28 02:15:42 2010
@@ -54,6 +54,7 @@
#include <dns/python/question_python.cc> // needs RRClass, RRType, RRTTL,
// Name
#include <dns/python/opcode_python.cc>
+#include <dns/python/rcode_python.cc>
#include <dns/python/message_python.cc> // needs RRset, Question
//
@@ -123,6 +124,10 @@
return (NULL);
}
+ if (!initModulePart_Rcode(mod)) {
+ return (NULL);
+ }
+
if (!initModulePart_Message(mod)) {
return (NULL);
}
Modified: branches/trac351/src/lib/dns/python/tests/Makefile.am
==============================================================================
--- branches/trac351/src/lib/dns/python/tests/Makefile.am (original)
+++ branches/trac351/src/lib/dns/python/tests/Makefile.am Tue Sep 28 02:15:42 2010
@@ -3,6 +3,7 @@
PYTESTS += name_python_test.py
PYTESTS += question_python_test.py
PYTESTS += opcode_python_test.py
+PYTESTS += rcode_python_test.py
PYTESTS += rdata_python_test.py
PYTESTS += rrclass_python_test.py
PYTESTS += rrset_python_test.py
Modified: branches/trac351/src/lib/dns/python/tests/message_python_test.py
==============================================================================
--- branches/trac351/src/lib/dns/python/tests/message_python_test.py (original)
+++ branches/trac351/src/lib/dns/python/tests/message_python_test.py Tue Sep 28 02:15:42 2010
@@ -34,91 +34,6 @@
self.assertEqual(0x0080, MessageFlag.RA().get_bit())
self.assertEqual(0x0020, MessageFlag.AD().get_bit())
self.assertEqual(0x0010, MessageFlag.CD().get_bit())
-
-class RcodeTest(unittest.TestCase):
- def test_init(self):
- self.assertRaises(TypeError, Rcode, "wrong")
- self.assertRaises(OverflowError, Rcode, 65536)
- self.assertEqual(Rcode(0).get_code(), 0)
-
- self.assertEqual(0, Rcode(0).get_code())
- self.assertEqual(0xfff, Rcode(0xfff).get_code()) # possible max code
-
- # should fail on attempt of construction with an out of range code
- self.assertRaises(OverflowError, Rcode, 0x1000)
- self.assertRaises(OverflowError, Rcode, 0xffff)
-
- def test_get_code(self):
- self.assertEqual(0, Rcode.NOERROR().get_code())
- self.assertEqual(1, Rcode.FORMERR().get_code())
- self.assertEqual(2, Rcode.SERVFAIL().get_code())
- self.assertEqual(3, Rcode.NXDOMAIN().get_code())
- self.assertEqual(4, Rcode.NOTIMP().get_code())
- self.assertEqual(5, Rcode.REFUSED().get_code())
- self.assertEqual(6, Rcode.YXDOMAIN().get_code())
- self.assertEqual(7, Rcode.YXRRSET().get_code())
- self.assertEqual(8, Rcode.NXRRSET().get_code())
- self.assertEqual(9, Rcode.NOTAUTH().get_code())
- self.assertEqual(10, Rcode.NOTZONE().get_code())
- self.assertEqual(11, Rcode.RESERVED11().get_code())
- self.assertEqual(12, Rcode.RESERVED12().get_code())
- self.assertEqual(13, Rcode.RESERVED13().get_code())
- self.assertEqual(14, Rcode.RESERVED14().get_code())
- self.assertEqual(15, Rcode.RESERVED15().get_code())
- self.assertEqual(16, Rcode.BADVERS().get_code())
-
- def test_to_text(self):
- self.assertEqual("NOERROR", Rcode(0).to_text())
- self.assertEqual("NOERROR", str(Rcode(0)))
- self.assertEqual("FORMERR", Rcode(1).to_text())
- self.assertEqual("SERVFAIL", Rcode(2).to_text())
- self.assertEqual("NXDOMAIN", Rcode(3).to_text())
- self.assertEqual("NOTIMP", Rcode(4).to_text())
- self.assertEqual("REFUSED", Rcode(5).to_text())
- self.assertEqual("YXDOMAIN", Rcode(6).to_text())
- self.assertEqual("YXRRSET", Rcode(7).to_text())
- self.assertEqual("NXRRSET", Rcode(8).to_text())
- self.assertEqual("NOTAUTH", Rcode(9).to_text())
- self.assertEqual("NOTZONE", Rcode(10).to_text())
- self.assertEqual("RESERVED11", Rcode(11).to_text())
- self.assertEqual("RESERVED12", Rcode(12).to_text())
- self.assertEqual("RESERVED13", Rcode(13).to_text())
- self.assertEqual("RESERVED14", Rcode(14).to_text())
- self.assertEqual("RESERVED15", Rcode(15).to_text())
- self.assertEqual("BADVERS", Rcode(16).to_text())
-
- self.assertEqual("17", Rcode(Rcode.BADVERS().get_code() + 1).to_text())
- self.assertEqual("4095", Rcode(0xfff).to_text())
-
- def test_richcmp(self):
- r1 = Rcode.NOERROR()
- r2 = Rcode.FORMERR()
- r3 = Rcode.FORMERR()
- self.assertTrue(r2 == r3)
- self.assertTrue(r1 != r2)
- self.assertFalse(r1 == r2)
- self.assertFalse(r1 != 1)
- # can't use assertRaises here...
- try:
- r1 < r2
- self.fail("operation that should have raised an error unexpectedly succeeded")
- except Exception as err:
- self.assertEqual(TypeError, type(err))
- try:
- r1 <= r2
- self.fail("operation that should have raised an error unexpectedly succeeded")
- except Exception as err:
- self.assertEqual(TypeError, type(err))
- try:
- r1 > r2
- self.fail("operation that should have raised an error unexpectedly succeeded")
- except Exception as err:
- self.assertEqual(TypeError, type(err))
- try:
- r1 >= r2
- self.fail("operation that should have raised an error unexpectedly succeeded")
- except Exception as err:
- self.assertEqual(TypeError, type(err))
class SectionTest(unittest.TestCase):
Modified: branches/trac351/src/lib/dns/python/tests/messagerenderer_python_test.py
==============================================================================
--- branches/trac351/src/lib/dns/python/tests/messagerenderer_python_test.py (original)
+++ branches/trac351/src/lib/dns/python/tests/messagerenderer_python_test.py Tue Sep 28 02:15:42 2010
@@ -32,6 +32,7 @@
message = Message(Message.RENDER)
message.set_qid(123)
message.set_opcode(Opcode.QUERY())
+ message.set_rcode(Rcode.NOERROR())
message.add_question(Question(name, c, t))
self.message1 = message
Modified: branches/trac351/src/lib/dns/tests/Makefile.am
==============================================================================
--- branches/trac351/src/lib/dns/tests/Makefile.am (original)
+++ branches/trac351/src/lib/dns/tests/Makefile.am Tue Sep 28 02:15:42 2010
@@ -19,6 +19,7 @@
run_unittests_SOURCES += rrttl_unittest.cc
run_unittests_SOURCES += dnssectime_unittest.cc
run_unittests_SOURCES += opcode_unittest.cc
+run_unittests_SOURCES += rcode_unittest.cc
run_unittests_SOURCES += rdata_unittest.h rdata_unittest.cc
run_unittests_SOURCES += rdata_in_a_unittest.cc rdata_in_aaaa_unittest.cc
run_unittests_SOURCES += rdata_ns_unittest.cc rdata_soa_unittest.cc
Modified: branches/trac351/src/lib/dns/tests/message_unittest.cc
==============================================================================
--- branches/trac351/src/lib/dns/tests/message_unittest.cc (original)
+++ branches/trac351/src/lib/dns/tests/message_unittest.cc Tue Sep 28 02:15:42 2010
@@ -22,6 +22,7 @@
#include <dns/messagerenderer.h>
#include <dns/question.h>
#include <dns/opcode.h>
+#include <dns/rcode.h>
#include <dns/rdataclass.h>
#include <dns/rrclass.h>
#include <dns/rrttl.h>
@@ -77,24 +78,6 @@
message.fromWire(buffer);
}
-TEST_F(MessageTest, RcodeConstruct) {
- // normal cases
- EXPECT_EQ(0, Rcode(0).getCode());
- EXPECT_EQ(0xfff, Rcode(0xfff).getCode()); // possible max code
-
- // should fail on attempt of construction with an out of range code
- EXPECT_THROW(Rcode(0x1000), isc::OutOfRange);
- EXPECT_THROW(Rcode(0xffff), isc::OutOfRange);
-}
-
-TEST_F(MessageTest, RcodeToText) {
- EXPECT_EQ("NOERROR", Rcode::NOERROR().toText());
- EXPECT_EQ("BADVERS", Rcode::BADVERS().toText());
- EXPECT_EQ("17", Rcode(Rcode::BADVERS().getCode() + 1).toText());
- EXPECT_EQ("4095", Rcode(Rcode(0xfff)).toText());
-}
-
-
TEST_F(MessageTest, fromWire) {
factoryFromFile(message_parse, "message_fromWire1");
EXPECT_EQ(0x1035, message_parse.getQid());
More information about the bind10-changes
mailing list