[svn] commit: r3034 - in /branches/trac351/src: bin/auth/ bin/auth/tests/ bin/host/ lib/bench/ lib/bench/tests/ 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:14:43 UTC 2010
Author: jinmei
Date: Tue Sep 28 02:14:42 2010
New Revision: 3034
Log:
moved the Opcode class declarations and definitions to separate files.
also fixed a potential bug in pydnspp where message.set_opcode() could leave a dangling reference.
Added:
branches/trac351/src/lib/dns/opcode.cc
branches/trac351/src/lib/dns/opcode.h
branches/trac351/src/lib/dns/python/tests/opcode_python_test.py
branches/trac351/src/lib/dns/tests/opcode_unittest.cc
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/tests/datasrc_unittest.cc
branches/trac351/src/lib/datasrc/tests/query_unittest.cc
branches/trac351/src/lib/dns/Makefile.am
branches/trac351/src/lib/dns/message.cc
branches/trac351/src/lib/dns/message.h
branches/trac351/src/lib/dns/python/Makefile.am
branches/trac351/src/lib/dns/python/message_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/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:14:42 2010
@@ -28,6 +28,7 @@
#include <dns/messagerenderer.h>
#include <dns/name.h>
#include <dns/question.h>
+#include <dns/opcode.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:14:42 2010
@@ -22,6 +22,7 @@
#include <dns/name.h>
#include <dns/message.h>
#include <dns/messagerenderer.h>
+#include <dns/opcode.h>
#include <dns/rrclass.h>
#include <dns/rrtype.h>
@@ -114,7 +115,7 @@
AuthSrvTest() : server(true, xfrout),
request_message(Message::RENDER),
parse_message(Message::PARSE), default_qid(0x1035),
- opcode(Opcode(Opcode::QUERY())), qname("www.example.com"),
+ opcode(Opcode::QUERY()), qname("www.example.com"),
qclass(RRClass::IN()), qtype(RRType::A()),
io_message(NULL), endpoint(NULL), request_obuffer(0),
request_renderer(request_obuffer),
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:14:42 2010
@@ -28,6 +28,7 @@
#include <dns/name.h>
#include <dns/message.h>
#include <dns/messagerenderer.h>
+#include <dns/opcode.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:14:42 2010
@@ -26,6 +26,7 @@
#include <dns/name.h>
#include <dns/message.h>
#include <dns/messagerenderer.h>
+#include <dns/opcode.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:14:42 2010
@@ -22,6 +22,7 @@
#include <dns/buffer.h>
#include <dns/message.h>
#include <dns/name.h>
+#include <dns/opcode.h>
#include <dns/rrclass.h>
#include <dns/rrtype.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:14:42 2010
@@ -26,6 +26,7 @@
#include <dns/message.h>
#include <dns/messagerenderer.h>
#include <dns/question.h>
+#include <dns/opcode.h>
#include <dns/rdata.h>
#include <dns/rdataclass.h>
#include <dns/rrclass.h>
Modified: branches/trac351/src/lib/datasrc/tests/query_unittest.cc
==============================================================================
--- branches/trac351/src/lib/datasrc/tests/query_unittest.cc (original)
+++ branches/trac351/src/lib/datasrc/tests/query_unittest.cc Tue Sep 28 02:14:42 2010
@@ -19,6 +19,7 @@
#include <dns/buffer.h>
#include <dns/message.h>
#include <dns/name.h>
+#include <dns/opcode.h>
#include <dns/rrtype.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:14:42 2010
@@ -68,6 +68,7 @@
libdns___la_SOURCES += message.h message.cc
libdns___la_SOURCES += messagerenderer.h messagerenderer.cc
libdns___la_SOURCES += name.h name.cc
+libdns___la_SOURCES += opcode.h opcode.cc
libdns___la_SOURCES += rdata.h rdata.cc
libdns___la_SOURCES += rrclass.cc
libdns___la_SOURCES += rrparamregistry.h
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:14:42 2010
@@ -32,6 +32,7 @@
#include <dns/message.h>
#include <dns/messagerenderer.h>
#include <dns/name.h>
+#include <dns/opcode.h>
#include <dns/question.h>
#include <dns/rdataclass.h>
#include <dns/rrclass.h>
@@ -135,36 +136,12 @@
&Opcode::RESERVED15()
};
-const char *opcodetext[] = {
- "QUERY",
- "IQUERY",
- "STATUS",
- "RESERVED3",
- "NOTIFY",
- "UPDATE",
- "RESERVED6",
- "RESERVED7",
- "RESERVED8",
- "RESERVED9",
- "RESERVED10",
- "RESERVED11",
- "RESERVED12",
- "RESERVED13",
- "RESERVED14",
- "RESERVED15"
-};
-
const char *sectiontext[] = {
"QUESTION",
"ANSWER",
"AUTHORITY",
"ADDITIONAL"
};
-}
-
-string
-Opcode::toText() const {
- return (opcodetext[code_]);
}
Rcode::Rcode(uint16_t code) : code_(code) {
@@ -202,6 +179,7 @@
qid_t qid_;
Rcode rcode_;
const Opcode* opcode_;
+ Opcode opcode_placeholder_;
flags_t flags_;
bool dnssec_ok_;
@@ -226,7 +204,7 @@
};
MessageImpl::MessageImpl(Message::Mode mode) :
- mode_(mode), rcode_(Rcode::NOERROR())
+ mode_(mode), rcode_(Rcode::NOERROR()), opcode_placeholder_(Opcode(0))
{
init();
}
@@ -356,7 +334,8 @@
isc_throw(InvalidMessageOperation,
"setOpcode performed in non-render mode");
}
- impl_->opcode_ = &opcode;
+ impl_->opcode_placeholder_ = opcode;
+ impl_->opcode_ = &impl_->opcode_placeholder_;
}
unsigned int
@@ -582,7 +561,9 @@
impl_->qid_ = buffer.readUint16();
const uint16_t codes_and_flags = buffer.readUint16();
- impl_->opcode_ = opcodes[((codes_and_flags & OPCODE_MASK) >> OPCODE_SHIFT)];
+ impl_->opcode_placeholder_ =
+ Opcode((codes_and_flags & OPCODE_MASK) >> OPCODE_SHIFT);
+ impl_->opcode_ = &impl_->opcode_placeholder_;
impl_->rcode_ = rcodes[(codes_and_flags & RCODE_MASK)];
impl_->flags_ = (codes_and_flags & FLAG_MASK);
impl_->counts_[Section::QUESTION().getCode()] = buffer.readUint16();
@@ -1005,11 +986,6 @@
}
ostream&
-operator<<(ostream& os, const Opcode& opcode) {
- return (os << opcode.toText());
-}
-
-ostream&
operator<<(ostream& os, const Rcode& rcode) {
return (os << rcode.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:14:42 2010
@@ -81,6 +81,7 @@
class MessageRenderer;
class Message;
class MessageImpl;
+class Opcode;
template <typename T>
struct SectionIteratorImpl;
@@ -157,154 +158,6 @@
{
static MessageFlag f(0x0010);
return (f);
-}
-
-/// \brief The \c Opcode class objects represent standard OPCODEs
-/// of the header section of DNS messages.
-///
-/// Note: since there are only 15 possible values, it may make more sense to
-/// simply define an enum type to represent these values.
-///
-/// Constant objects are defined for standard flags.
-class Opcode {
-public:
- uint16_t getCode() const { return (code_); }
- bool operator==(const Opcode& other) const
- { return (code_ == other.code_); }
- bool operator!=(const Opcode& other) const
- { return (code_ != other.code_); }
- std::string toText() const;
- static const Opcode& QUERY();
- static const Opcode& IQUERY();
- static const Opcode& STATUS();
- static const Opcode& RESERVED3();
- static const Opcode& NOTIFY();
- static const Opcode& UPDATE();
- static const Opcode& RESERVED6();
- static const Opcode& RESERVED7();
- static const Opcode& RESERVED8();
- static const Opcode& RESERVED9();
- static const Opcode& RESERVED10();
- static const Opcode& RESERVED11();
- static const Opcode& RESERVED12();
- static const Opcode& RESERVED13();
- static const Opcode& RESERVED14();
- static const Opcode& RESERVED15();
-private:
- Opcode(uint16_t code) : code_(code) {}
- uint16_t code_;
-};
-
-inline const Opcode&
-Opcode::QUERY()
-{
- static Opcode c(0);
- return (c);
-}
-
-inline const Opcode&
-Opcode::IQUERY()
-{
- static Opcode c(1);
- return (c);
-}
-
-inline const Opcode&
-Opcode::STATUS()
-{
- static Opcode c(2);
- return (c);
-}
-
-inline const Opcode&
-Opcode::RESERVED3()
-{
- static Opcode c(3);
- return (c);
-}
-
-inline const Opcode&
-Opcode::NOTIFY()
-{
- static Opcode c(4);
- return (c);
-}
-
-inline const Opcode&
-Opcode::UPDATE()
-{
- static Opcode c(5);
- return (c);
-}
-
-inline const Opcode&
-Opcode::RESERVED6()
-{
- static Opcode c(6);
- return (c);
-}
-
-inline const Opcode&
-Opcode::RESERVED7()
-{
- static Opcode c(7);
- return (c);
-}
-
-inline const Opcode&
-Opcode::RESERVED8()
-{
- static Opcode c(8);
- return (c);
-}
-
-inline const Opcode&
-Opcode::RESERVED9()
-{
- static Opcode c(9);
- return (c);
-}
-
-inline const Opcode&
-Opcode::RESERVED10()
-{
- static Opcode c(10);
- return (c);
-}
-
-inline const Opcode&
-Opcode::RESERVED11()
-{
- static Opcode c(11);
- return (c);
-}
-
-inline const Opcode&
-Opcode::RESERVED12()
-{
- static Opcode c(12);
- return (c);
-}
-
-inline const Opcode&
-Opcode::RESERVED13()
-{
- static Opcode c(13);
- return (c);
-}
-
-inline const Opcode&
-Opcode::RESERVED14()
-{
- static Opcode c(14);
- return (c);
-}
-
-inline const Opcode&
-Opcode::RESERVED15()
-{
- static Opcode c(15);
- return (c);
}
/// \brief The \c Rcode class objects represent standard Response Codes
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:14:42 2010
@@ -15,6 +15,7 @@
EXTRA_DIST += message_python.cc
EXTRA_DIST += rrclass_python.cc
EXTRA_DIST += name_python.cc
+EXTRA_DIST += opcode_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:14:42 2010
@@ -189,280 +189,6 @@
//
// End of MessageFlag wrapper
-//
-
-
-//
-// Opcode
-//
-class s_Opcode : public PyObject {
-public:
- const Opcode* opcode;
-};
-
-static int Opcode_init(s_Opcode* self, PyObject* args);
-static void Opcode_destroy(s_Opcode* self);
-
-static PyObject* Opcode_getCode(s_Opcode* self);
-static PyObject* Opcode_toText(s_Opcode* self);
-static PyObject* Opcode_str(PyObject* self);
-static PyObject* Opcode_QUERY(s_Opcode* self);
-static PyObject* Opcode_IQUERY(s_Opcode* self);
-static PyObject* Opcode_STATUS(s_Opcode* self);
-static PyObject* Opcode_RESERVED3(s_Opcode* self);
-static PyObject* Opcode_NOTIFY(s_Opcode* self);
-static PyObject* Opcode_UPDATE(s_Opcode* self);
-static PyObject* Opcode_RESERVED6(s_Opcode* self);
-static PyObject* Opcode_RESERVED7(s_Opcode* self);
-static PyObject* Opcode_RESERVED8(s_Opcode* self);
-static PyObject* Opcode_RESERVED9(s_Opcode* self);
-static PyObject* Opcode_RESERVED10(s_Opcode* self);
-static PyObject* Opcode_RESERVED11(s_Opcode* self);
-static PyObject* Opcode_RESERVED12(s_Opcode* self);
-static PyObject* Opcode_RESERVED13(s_Opcode* self);
-static PyObject* Opcode_RESERVED14(s_Opcode* self);
-static PyObject* Opcode_RESERVED15(s_Opcode* self);
-static PyObject* Opcode_richcmp(s_Opcode* self, s_Opcode* other, int op);
-
-static PyMethodDef Opcode_methods[] = {
- { "get_code", reinterpret_cast<PyCFunction>(Opcode_getCode), METH_NOARGS, "Returns the code value" },
- { "to_text", reinterpret_cast<PyCFunction>(Opcode_toText), METH_NOARGS, "Returns the text representation" },
- { "QUERY", reinterpret_cast<PyCFunction>(Opcode_QUERY), METH_NOARGS | METH_STATIC, "Creates a QUERY Opcode" },
- { "IQUERY", reinterpret_cast<PyCFunction>(Opcode_IQUERY), METH_NOARGS | METH_STATIC, "Creates a IQUERY Opcode" },
- { "STATUS", reinterpret_cast<PyCFunction>(Opcode_STATUS), METH_NOARGS | METH_STATIC, "Creates a STATUS Opcode" },
- { "RESERVED3", reinterpret_cast<PyCFunction>(Opcode_RESERVED3), METH_NOARGS | METH_STATIC, "Creates a RESERVED3 Opcode" },
- { "NOTIFY", reinterpret_cast<PyCFunction>(Opcode_NOTIFY), METH_NOARGS | METH_STATIC, "Creates a NOTIFY Opcode" },
- { "UPDATE", reinterpret_cast<PyCFunction>(Opcode_UPDATE), METH_NOARGS | METH_STATIC, "Creates a UPDATE Opcode" },
- { "RESERVED6", reinterpret_cast<PyCFunction>(Opcode_RESERVED6), METH_NOARGS | METH_STATIC, "Creates a RESERVED Opcode" },
- { "RESERVED7", reinterpret_cast<PyCFunction>(Opcode_RESERVED7), METH_NOARGS | METH_STATIC, "Creates a RESERVED Opcode" },
- { "RESERVED8", reinterpret_cast<PyCFunction>(Opcode_RESERVED8), METH_NOARGS | METH_STATIC, "Creates a RESERVED Opcode" },
- { "RESERVED9", reinterpret_cast<PyCFunction>(Opcode_RESERVED9), METH_NOARGS | METH_STATIC, "Creates a RESERVED Opcode" },
- { "RESERVED10", reinterpret_cast<PyCFunction>(Opcode_RESERVED10), METH_NOARGS | METH_STATIC, "Creates a RESERVED Opcode" },
- { "RESERVED11", reinterpret_cast<PyCFunction>(Opcode_RESERVED11), METH_NOARGS | METH_STATIC, "Creates a RESERVED Opcode" },
- { "RESERVED12", reinterpret_cast<PyCFunction>(Opcode_RESERVED12), METH_NOARGS | METH_STATIC, "Creates a RESERVED Opcode" },
- { "RESERVED13", reinterpret_cast<PyCFunction>(Opcode_RESERVED13), METH_NOARGS | METH_STATIC, "Creates a RESERVED Opcode" },
- { "RESERVED14", reinterpret_cast<PyCFunction>(Opcode_RESERVED14), METH_NOARGS | METH_STATIC, "Creates a RESERVED Opcode" },
- { "RESERVED15", reinterpret_cast<PyCFunction>(Opcode_RESERVED15), METH_NOARGS | METH_STATIC, "Creates a RESERVED Opcode" },
- { NULL, NULL, 0, NULL }
-};
-
-static PyTypeObject opcode_type = {
- PyVarObject_HEAD_INIT(NULL, 0)
- "pydnspp.Opcode",
- sizeof(s_Opcode), // tp_basicsize
- 0, // tp_itemsize
- (destructor)Opcode_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
- Opcode_str, // tp_str
- NULL, // tp_getattro
- NULL, // tp_setattro
- NULL, // tp_as_buffer
- Py_TPFLAGS_DEFAULT, // tp_flags
- "The Opcode class objects represent standard OPCODEs "
- "of the header section of DNS messages.",
- NULL, // tp_traverse
- NULL, // tp_clear
- (richcmpfunc)Opcode_richcmp, // tp_richcompare
- 0, // tp_weaklistoffset
- NULL, // tp_iter
- NULL, // tp_iternext
- Opcode_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)Opcode_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
-Opcode_init(s_Opcode* self UNUSED_PARAM, PyObject* args UNUSED_PARAM) {
- PyErr_SetString(PyExc_NotImplementedError,
- "Opcode can't be built directly");
- return (-1);
-}
-
-static void
-Opcode_destroy(s_Opcode* self) {
- // We only use the consts from Opcode, so don't
- // delete self->opcode here
- self->opcode = NULL;
- Py_TYPE(self)->tp_free(self);
-}
-
-static PyObject*
-Opcode_getCode(s_Opcode* self) {
- return (Py_BuildValue("I", self->opcode->getCode()));
-}
-
-static PyObject*
-Opcode_toText(s_Opcode* self) {
- return (Py_BuildValue("s", self->opcode->toText().c_str()));
-}
-
-static PyObject*
-Opcode_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*
-Opcode_createStatic(const Opcode& opcode) {
- s_Opcode* ret = PyObject_New(s_Opcode, &opcode_type);
- if (ret != NULL) {
- ret->opcode = &opcode;
- }
- return (ret);
-}
-
-static PyObject*
-Opcode_QUERY(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::QUERY()));
-}
-
-static PyObject*
-Opcode_IQUERY(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::IQUERY()));
-}
-
-static PyObject*
-Opcode_STATUS(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::STATUS()));
-}
-
-static PyObject*
-Opcode_RESERVED3(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::RESERVED3()));
-}
-
-static PyObject*
-Opcode_NOTIFY(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::NOTIFY()));
-}
-
-static PyObject*
-Opcode_UPDATE(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::UPDATE()));
-}
-
-static PyObject*
-Opcode_RESERVED6(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::RESERVED6()));
-}
-
-static PyObject*
-Opcode_RESERVED7(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::RESERVED7()));
-}
-
-static PyObject*
-Opcode_RESERVED8(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::RESERVED8()));
-}
-
-static PyObject*
-Opcode_RESERVED9(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::RESERVED9()));
-}
-
-static PyObject*
-Opcode_RESERVED10(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::RESERVED10()));
-}
-
-static PyObject*
-Opcode_RESERVED11(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::RESERVED11()));
-}
-
-static PyObject*
-Opcode_RESERVED12(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::RESERVED12()));
-}
-
-static PyObject*
-Opcode_RESERVED13(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::RESERVED13()));
-}
-
-static PyObject*
-Opcode_RESERVED14(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::RESERVED14()));
-}
-
-static PyObject*
-Opcode_RESERVED15(s_Opcode* self UNUSED_PARAM) {
- return (Opcode_createStatic(Opcode::RESERVED15()));
-}
-
-static PyObject*
-Opcode_richcmp(s_Opcode* self, s_Opcode* 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; Opcode");
- return (NULL);
- break;
- case Py_LE:
- PyErr_SetString(PyExc_TypeError, "Unorderable type; Opcode");
- return (NULL);
- break;
- case Py_EQ:
- c = (*self->opcode == *other->opcode);
- break;
- case Py_NE:
- c = (*self->opcode != *other->opcode);
- break;
- case Py_GT:
- PyErr_SetString(PyExc_TypeError, "Unorderable type; Opcode");
- return (NULL);
- break;
- case Py_GE:
- PyErr_SetString(PyExc_TypeError, "Unorderable type; Opcode");
- return (NULL);
- break;
- }
- if (c)
- Py_RETURN_TRUE;
- else
- Py_RETURN_FALSE;
-}
-
-//
-// End of Opcode wrapper
//
//
@@ -1356,15 +1082,11 @@
opcode = static_cast<s_Opcode*>(opcode_type.tp_alloc(&opcode_type, 0));
if (opcode != NULL) {
- // Note that we do not new and delete for opcodes.
- // all rcodes point to the statics defined in
- // message.cc
- opcode->opcode = &self->message->getOpcode();
- if (opcode->opcode == NULL)
- {
+ opcode->opcode = new Opcode(self->message->getOpcode());
+ if (opcode->opcode == NULL) {
Py_DECREF(opcode);
return (NULL);
- }
+ }
}
return (opcode);
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:14:42 2010
@@ -53,6 +53,7 @@
#include <dns/python/rrset_python.cc> // needs Rdata, RRTTL
#include <dns/python/question_python.cc> // needs RRClass, RRType, RRTTL,
// Name
+#include <dns/python/opcode_python.cc>
#include <dns/python/message_python.cc> // needs RRset, Question
//
@@ -118,6 +119,10 @@
return (NULL);
}
+ if (!initModulePart_Opcode(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:14:42 2010
@@ -2,6 +2,7 @@
PYTESTS += messagerenderer_python_test.py
PYTESTS += name_python_test.py
PYTESTS += question_python_test.py
+PYTESTS += opcode_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:14:42 2010
@@ -34,78 +34,6 @@
self.assertEqual(0x0080, MessageFlag.RA().get_bit())
self.assertEqual(0x0020, MessageFlag.AD().get_bit())
self.assertEqual(0x0010, MessageFlag.CD().get_bit())
-
-class OpcodeTest(unittest.TestCase):
- def test_init(self):
- self.assertRaises(NotImplementedError, Opcode)
-
- def test_get_code(self):
- self.assertEqual(0, Opcode.QUERY().get_code())
- self.assertEqual(1, Opcode.IQUERY().get_code())
- self.assertEqual(2, Opcode.STATUS().get_code())
- self.assertEqual(3, Opcode.RESERVED3().get_code())
- self.assertEqual(4, Opcode.NOTIFY().get_code())
- self.assertEqual(5, Opcode.UPDATE().get_code())
- self.assertEqual(6, Opcode.RESERVED6().get_code())
- self.assertEqual(7, Opcode.RESERVED7().get_code())
- self.assertEqual(8, Opcode.RESERVED8().get_code())
- self.assertEqual(9, Opcode.RESERVED9().get_code())
- self.assertEqual(10, Opcode.RESERVED10().get_code())
- self.assertEqual(11, Opcode.RESERVED11().get_code())
- self.assertEqual(12, Opcode.RESERVED12().get_code())
- self.assertEqual(13, Opcode.RESERVED13().get_code())
- self.assertEqual(14, Opcode.RESERVED14().get_code())
- self.assertEqual(15, Opcode.RESERVED15().get_code())
-
- def test_to_text(self):
- self.assertEqual("QUERY", Opcode.QUERY().to_text())
- self.assertEqual("QUERY", str(Opcode.QUERY()))
- self.assertEqual("IQUERY", Opcode.IQUERY().to_text())
- self.assertEqual("STATUS", Opcode.STATUS().to_text())
- self.assertEqual("RESERVED3", Opcode.RESERVED3().to_text())
- self.assertEqual("NOTIFY", Opcode.NOTIFY().to_text())
- self.assertEqual("UPDATE", Opcode.UPDATE().to_text())
- self.assertEqual("RESERVED6", Opcode.RESERVED6().to_text())
- self.assertEqual("RESERVED7", Opcode.RESERVED7().to_text())
- self.assertEqual("RESERVED8", Opcode.RESERVED8().to_text())
- self.assertEqual("RESERVED9", Opcode.RESERVED9().to_text())
- self.assertEqual("RESERVED10", Opcode.RESERVED10().to_text())
- self.assertEqual("RESERVED11", Opcode.RESERVED11().to_text())
- self.assertEqual("RESERVED12", Opcode.RESERVED12().to_text())
- self.assertEqual("RESERVED13", Opcode.RESERVED13().to_text())
- self.assertEqual("RESERVED14", Opcode.RESERVED14().to_text())
- self.assertEqual("RESERVED15", Opcode.RESERVED15().to_text())
-
- def test_richcmp(self):
- o1 = Opcode.QUERY()
- o2 = Opcode.NOTIFY()
- o3 = Opcode.NOTIFY()
- self.assertTrue(o2 == o3)
- self.assertFalse(o2 != o3)
- self.assertTrue(o1 != o2)
- self.assertFalse(o1 == 1)
- self.assertFalse(o1 == o2)
- # can't use assertRaises here...
- try:
- o1 < o2
- self.fail("operation that should have raised an error unexpectedly succeeded")
- except Exception as err:
- self.assertEqual(TypeError, type(err))
- try:
- o1 <= o2
- self.fail("operation that should have raised an error unexpectedly succeeded")
- except Exception as err:
- self.assertEqual(TypeError, type(err))
- try:
- o1 > o2
- self.fail("operation that should have raised an error unexpectedly succeeded")
- except Exception as err:
- self.assertEqual(TypeError, type(err))
- try:
- o1 >= o2
- self.fail("operation that should have raised an error unexpectedly succeeded")
- except Exception as err:
- self.assertEqual(TypeError, type(err))
class RcodeTest(unittest.TestCase):
def test_init(self):
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:14:42 2010
@@ -18,6 +18,7 @@
run_unittests_SOURCES += rrclass_unittest.cc rrtype_unittest.cc
run_unittests_SOURCES += rrttl_unittest.cc
run_unittests_SOURCES += dnssectime_unittest.cc
+run_unittests_SOURCES += opcode_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:14:42 2010
@@ -21,6 +21,7 @@
#include <dns/message.h>
#include <dns/messagerenderer.h>
#include <dns/question.h>
+#include <dns/opcode.h>
#include <dns/rdataclass.h>
#include <dns/rrclass.h>
#include <dns/rrttl.h>
More information about the bind10-changes
mailing list