Commit 6dd3cc5d authored by JINMEI Tatuya's avatar JINMEI Tatuya
Browse files

allow the python binding of libdns to be built using automake.

additional related cleanups were made as well.


git-svn-id: svn://bind10.isc.org/svn/bind10/trunk@1617 e5f2f494-b856-4b98-b285-d166d9295462
parent 5778e9be
......@@ -44,6 +44,24 @@ else
AC_SUBST(pkgpyexecdir)
fi
PYTHON_INCLUDES=`${PYTHON}-config --includes`
AC_SUBST(PYTHON_INCLUDES)
for flag in `${PYTHON}-config --ldflags`; do
PYTHON_LDFLAGS="$PYTHON_LDFLAGS `echo $flag | sed -ne 's/^\(\-L.*\)$/\1/p'`"
done
AC_SUBST(PYTHON_LDFLAGS)
# Check for python library (not absolutely mandatory, but needed for
# Boost.Python when we use it. See below.)
LDFLAGS_SAVED="$LDFLAGS"
LDFLAGS="$LDFLAGS $PYTHON_LDFLAGS"
python_bin="python${PYTHON_VERSION}"
AC_CHECK_LIB($python_bin, main, python_lib=$python_bin, python_lib=no)
if test $python_lib != "no"; then
PYTHON_LIB="-l$python_lib"
fi
AC_SUBST(PYTHON_LIB)
# TODO: check for _sqlite3.py module
# default compiler warning settings
......@@ -139,25 +157,29 @@ AC_ARG_WITH([boost-include],
[specify exact directory for Boost headers]),
[boost_include_path="$withval"])
if test "${boost_include_path}" ; then
CPPFLAGS="$CPPFLAGS -I${boost_include_path}"
else
# abs_top_srcdir not defined yet
# so this is only useful to check but not to use later
CPPFLAGS="$CPPFLAGS -Iext"
BOOST_INCLUDES="-I${boost_include_path}"
CPPFLAGS="$CPPFLAGS $BOOST_INCLUDES"
fi
AC_SUBST(BOOST_INCLUDES)
# Check availability of the Boost System library
AC_MSG_CHECKING([for boost::system library])
AC_ARG_WITH([boostlib],
AC_HELP_STRING([--with-boostlib=PATH],
[specify a path to boost libraries if it is not automatically found, or "no" to disable it]),
AC_ARG_WITH([boost-lib],
AC_HELP_STRING([--with-boost-lib=PATH],
[specify exact directory for Boost libraries]),
[boostlib_path="$withval"], [boostlib_path="auto"])
if test "$boostlib_path" != "no" -a "$boostlib_path" != "auto" -a "$boostlib_path" != "yes"; then
if test "$boostlib_path" != "no"; then
BOOST_LDFLAGS="-L$boostlib_path"
fi
AC_SUBST(BOOST_LDFLAGS)
if test "$boostlib_path" != "no"; then
# Check availability of the Boost System library
AC_MSG_CHECKING([for boost::system library])
AC_ARG_WITH([boost-system],
AC_HELP_STRING([--with-boost-system],
[specify whether to use the boost system library]),
[with_boost_system="$withval"], [with_boost_system="auto"])
if test "$with_boost_system" != "no"; then
LDFLAGS_SAVED="$LDFLAGS"
LIBS_SAVED="$LIBS"
CPPFLAGS_SAVED="$CPPFLAGS"
......@@ -185,14 +207,64 @@ fi
if test "X${BOOST_SYSTEM_LIB}" = X; then
AC_MSG_RESULT(no)
if test "$with_boost_system" = "yes"; then
AC_MSG_ERROR([boost system library is requested but not found])
fi
else
AC_DEFINE(HAVE_BOOSTLIB, 1, Define to 1 if boost libraries are available)
AC_DEFINE(HAVE_BOOST_SYSTEM, 1, Define to 1 if boost system library is available)
fi
AM_CONDITIONAL(HAVE_BOOSTLIB, test "X${BOOST_SYSTEM_LIB}" != X)
AC_SUBST(BOOST_LDFLAGS)
AM_CONDITIONAL(HAVE_BOOST_SYSTEM, test "X${BOOST_SYSTEM_LIB}" != X)
AC_SUBST(BOOST_SYSTEM_LIB)
# Check availability of the Boost Python library
AC_MSG_CHECKING([for boost::python library])
AC_ARG_WITH([boost-python],
AC_HELP_STRING([--with-boost-python],
[specify whether to use the boost python library]),
[with_boost_python="$withval"], [with_boost_python="auto"])
if test "$with_boost_python" != "no"; then
if test "$with_boost_python" != "auto" -a "X$PYTHON_LIB" = X; then
AC_MSG_ERROR([Boost.Python requested but python library is not available])
fi
LDFLAGS_SAVED="$LDFLAGS"
LIBS_SAVED="$LIBS"
CPPFLAGS_SAVED="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
for BOOST_TRY_LIB in boost_python boost_python-mt; do
LDFLAGS="$LDFLAGS_SAVED ${BOOST_LDFLAGS} ${PYTHON_LDFLAGS}"
LIBS="$LIBS_SAVED -l${BOOST_TRY_LIB} ${PYTHON_LIB}"
AC_TRY_LINK([#include <boost/python/module.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(test) { throw "Boost::Python test."; }],
[ return 0; ],
[ AC_MSG_RESULT(yes)
BOOST_PYTHON_LIB="-l${BOOST_TRY_LIB}"
],[])
if test "X${BOOST_PYTHON_LIB}" != X; then
break
fi
done
LDFLAGS="$LDFLAGS_SAVED"
CPPFLAGS="$CPPFLAGS_SAVED"
LIBS="$LIBS_SAVED"
fi
if test "X${BOOST_PYTHON_LIB}" = X; then
AC_MSG_RESULT(no)
if test "$with_boost_python" = "yes"; then
AC_MSG_ERROR([boost python library is requested but not found])
fi
else
AC_DEFINE(HAVE_BOOST_PYTHON, 1, Define to 1 if boost python library is available)
fi
AM_CONDITIONAL(HAVE_BOOST_PYTHON, test "X${BOOST_PYTHON_LIB}" != X)
AC_SUBST(BOOST_PYTHON_LIB)
#
# Check availability of gtest, which will be used for unit tests.
#
......@@ -248,8 +320,18 @@ PKG_CHECK_MODULES(SQLITE, sqlite3 >= 3.3.9)
# Check for headers from required devel kits.
# boost/shared_ptr.hpp is in ext in svn but not in tarball.
CPPFLAGS_SAVED=$CPPFLAGS
if test "X$BOOST_INCLUDES" = "X"; then
# abs_top_srcdir not defined yet
# so this is only useful to check. We'll replace it after the check.
CPPFLAGS="$CPPFLAGS -Iext"
fi
AC_CHECK_HEADERS([boost/shared_ptr.hpp boost/foreach.hpp],,
AC_MSG_ERROR([Missing required header files.]))
CPPFLAGS=$CPPFLAGS_SAVED
if test "X$BOOST_INCLUDES" = "X"; then
CPPFLAGS="$CPPFLAGS -I\$(top_srcdir)/ext"
fi
AC_ARG_ENABLE(man, [AC_HELP_STRING([--enable-man],
[regenerate man pages [default=no]])] ,enable_man=yes, enable_man=no)
......
......@@ -2,7 +2,6 @@ SUBDIRS = . tests
AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_builddir)/src/lib
AM_CPPFLAGS += -I$(top_srcdir)/src/lib/dns -I$(top_builddir)/src/lib/dns
AM_CPPFLAGS += -I$(top_srcdir)/ext
if GCC_WERROR_OK
AM_CPPFLAGS += -Werror
endif
......@@ -34,7 +33,7 @@ b10_auth_LDADD += $(top_builddir)/src/lib/config/.libs/libcfgclient.a
b10_auth_LDADD += $(top_builddir)/src/lib/cc/libcc.a
b10_auth_LDADD += $(top_builddir)/src/lib/exceptions/.libs/libexceptions.a
b10_auth_LDADD += $(SQLITE_LIBS)
if HAVE_BOOSTLIB
if HAVE_BOOST_SYSTEM
b10_auth_LDFLAGS = $(AM_LDFLAGS) $(BOOST_LDFLAGS)
b10_auth_LDADD += $(BOOST_SYSTEM_LIB)
endif
......
......@@ -28,10 +28,10 @@
#include <iostream>
#include <boost/foreach.hpp>
#ifdef HAVE_BOOSTLIB
#ifdef HAVE_BOOST_SYSTEM
#include <boost/bind.hpp>
#include <boost/asio.hpp>
#endif // HAVE_BOOSTLIB
#endif // HAVE_BOOST_SYSTEM
#include <exceptions/exceptions.h>
......@@ -49,11 +49,11 @@
using namespace std;
#ifdef HAVE_BOOSTLIB
#ifdef HAVE_BOOST_SYSTEM
using namespace boost::asio;
using ip::udp;
using ip::tcp;
#endif // HAVE_BOOSTLIB
#endif // HAVE_BOOST_SYSTEM
using namespace isc::data;
using namespace isc::cc;
......@@ -71,13 +71,13 @@ const char* DNSPORT = "5300";
* todo: turn this around, and put handlers in the authserver
* class itself? */
AuthSrv *auth_server;
#ifdef HAVE_BOOSTLIB
#ifdef HAVE_BOOST_SYSTEM
// TODO: this should be a property of AuthSrv, and AuthSrv needs
// a stop() method (so the shutdown command can be handled)
boost::asio::io_service io_service_;
#else
bool running;
#endif // HAVE_BOOSTLIB
#endif // HAVE_BOOST_SYSTEM
ElementPtr
my_config_handler(ElementPtr new_config) {
......@@ -93,17 +93,17 @@ my_command_handler(const string& command, const ElementPtr args) {
/* let's add that message to our answer as well */
answer->get("result")->add(args);
} else if (command == "shutdown") {
#ifdef HAVE_BOOSTLIB
#ifdef HAVE_BOOST_SYSTEM
io_service_.stop();
#else
running = false;
#endif // HAVE_BOOSTLIB
#endif // HAVE_BOOST_SYSTEM
}
return answer;
}
#ifdef HAVE_BOOSTLIB
#ifdef HAVE_BOOST_SYSTEM
//
// Helper classes for asynchronous I/O using boost::asio
//
......@@ -349,7 +349,7 @@ run_server(const char* port, const bool use_ipv4, const bool use_ipv6,
cout << "Server started." << endl;
io_service_.run();
}
#else // !HAVE_BOOSTLIB
#else // !HAVE_BOOST_SYSTEM
struct SocketSet {
SocketSet() : ups4(-1), tps4(-1), ups6(-1), tps6(-1) {}
~SocketSet() {
......@@ -638,7 +638,7 @@ run_server(const char* port, const bool use_ipv4, const bool use_ipv6,
}
}
}
#endif // HAVE_BOOSTLIB
#endif // HAVE_BOOST_SYSTEM
void
usage() {
......@@ -701,7 +701,7 @@ main(int argc, char* argv[]) {
auth_server = new AuthSrv;
auth_server->setVerbose(verbose_mode);
#ifdef HAVE_BOOSTLIB
#ifdef HAVE_BOOST_SYSTEM
ModuleCCSession cs(specfile, io_service_, my_config_handler,
my_command_handler);
#else
......
AM_CPPFLAGS = -I$(top_builddir)/src/lib -I$(top_builddir)/src/bin -I$(top_srcdir)/ext
AM_CPPFLAGS = -I$(top_builddir)/src/lib -I$(top_builddir)/src/bin
CLEANFILES = *.gcno *.gcda
......@@ -19,7 +19,7 @@ run_unittests_LDADD += $(top_builddir)/src/lib/dns/.libs/libdns.a
run_unittests_LDADD += $(top_builddir)/src/lib/config/.libs/libcfgclient.a
run_unittests_LDADD += $(top_builddir)/src/lib/cc/libcc.a
run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/.libs/libexceptions.a
if HAVE_BOOSTLIB
if HAVE_BOOST_SYSTEM
run_unittests_LDFLAGS += $(BOOST_LDFLAGS)
run_unittests_LDADD += $(BOOST_SYSTEM_LIB)
endif
......
AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_builddir)/src/lib
AM_CPPFLAGS += -I$(top_srcdir)/src/lib/dns -I$(top_builddir)/src/lib/dns
AM_CPPFLAGS += -I$(top_srcdir)/ext
CLEANFILES = *.gcno *.gcda
......
......@@ -28,7 +28,7 @@ import random
from optparse import OptionParser, OptionValueError
from isc.config.ccsession import *
try:
from bind10_message import *
from bind10_dns import *
except:
pass
......@@ -399,8 +399,8 @@ class Xfrin():
def xfrin_start(self, zone_name, db_file, master_addr,
port = 53,
check_soa = True):
if "bind10_message" not in sys.modules:
return (1, "xfrin failed, can't load dns message python library: 'bind10_message'")
if "bind10_dns" not in sys.modules:
return (1, "xfrin failed, can't load dns message python library: 'bind10_dns'")
# check max_transfer_in, else return quota error
if self.recorder.count() >= self._max_transfers_in:
......
......@@ -2,7 +2,7 @@ SUBDIRS = . tests
AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_builddir)/src/lib
AM_CPPFLAGS += -I$(top_srcdir)/src/lib/dns -I$(top_builddir)/src/lib/dns
AM_CPPFLAGS += -I$(top_srcdir)/ext $(SQLITE_CFLAGS)
AM_CPPFLAGS += $(SQLITE_CFLAGS)
CLEANFILES = *.gcno *.gcda
......
AM_CPPFLAGS = -I$(top_builddir)/src/lib -I$(top_srcdir)/ext
AM_CPPFLAGS = -I$(top_builddir)/src/lib
CLEANFILES = *.gcno *.gcda
......
AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_builddir)/src/lib
AM_CPPFLAGS += -I$(top_srcdir)/ext
lib_LIBRARIES = libcc.a
libcc_a_SOURCES = data.cc data.h session.cc session.h
......
......@@ -23,7 +23,7 @@
#include <iostream>
#include <sstream>
#ifdef HAVE_BOOSTLIB
#ifdef HAVE_BOOST_SYSTEM
#include <boost/bind.hpp>
#include <boost/function.hpp>
#include <boost/asio.hpp>
......@@ -38,7 +38,7 @@ using namespace std;
using namespace isc::cc;
using namespace isc::data;
#ifdef HAVE_BOOSTLIB
#ifdef HAVE_BOOST_SYSTEM
// some of the boost::asio names conflict with socket API system calls
// (e.g. write(2)) so we don't import the entire boost::asio namespace.
using boost::asio::io_service;
......@@ -68,7 +68,7 @@ public:
std::string lname_;
};
#ifdef HAVE_BOOSTLIB
#ifdef HAVE_BOOST_SYSTEM
class ASIOSession : public SessionImpl {
public:
ASIOSession(io_service& io_service) :
......@@ -270,7 +270,7 @@ SocketSession::readData(void* data, const size_t datalen) {
Session::Session() : impl_(new SocketSession)
{}
#ifdef HAVE_BOOSTLIB
#ifdef HAVE_BOOST_SYSTEM
Session::Session(io_service& io_service) : impl_(new ASIOSession(io_service))
{}
#endif
......
AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_builddir)/src/lib -Wno-strict-aliasing
AM_CPPFLAGS += -I$(top_srcdir)/ext
lib_LTLIBRARIES = libcfgclient.la
libcfgclient_la_SOURCES = config_data.h config_data.cc module_spec.h module_spec.cc ccsession.cc ccsession.h
......
......@@ -32,7 +32,7 @@
#include <sstream>
#include <cerrno>
#ifdef HAVE_BOOSTLIB
#ifdef HAVE_BOOST_SYSTEM
#include <boost/bind.hpp>
#endif
#include <boost/foreach.hpp>
......@@ -188,7 +188,7 @@ ModuleCCSession::readModuleSpecification(const std::string& filename) {
return module_spec;
}
#ifdef HAVE_BOOSTLIB
#ifdef HAVE_BOOST_SYSTEM
void
ModuleCCSession::startCheck() {
// data available on the command channel. process it in the synchronous
......
AM_CPPFLAGS = -I$(top_builddir)/src/lib -I$(top_srcdir)/ext
AM_CPPFLAGS = -I$(top_builddir)/src/lib
CLEANFILES = *.gcno *.gcda
......@@ -18,7 +18,7 @@ run_unittests_LDADD += $(top_builddir)/src/lib/config/libcfgclient.la
run_unittests_LDADD += $(top_builddir)/src/lib/cc/data.o
run_unittests_LDADD += libfake_session.la
if HAVE_BOOSTLIB
if HAVE_BOOST_SYSTEM
run_unittests_LDFLAGS += $(AM_LDFLAGS) $(BOOST_LDFLAGS)
run_unittests_LDADD += $(BOOST_SYSTEM_LIB)
endif
......
......@@ -23,7 +23,7 @@
#include <iostream>
#include <sstream>
#ifdef HAVE_BOOSTLIB
#ifdef HAVE_BOOST_SYSTEM
#include <boost/bind.hpp>
#include <boost/function.hpp>
#include <boost/asio.hpp>
......@@ -40,7 +40,7 @@ using namespace std;
using namespace isc::cc;
using namespace isc::data;
#ifdef HAVE_BOOSTLIB
#ifdef HAVE_BOOST_SYSTEM
// some of the boost::asio names conflict with socket API system calls
// (e.g. write(2)) so we don't import the entire boost::asio namespace.
using boost::asio::io_service;
......@@ -144,7 +144,7 @@ Session::Session()
{
}
#ifdef HAVE_BOOSTLIB
#ifdef HAVE_BOOST_SYSTEM
Session::Session(io_service& io_service UNUSED_PARAM)
{
}
......
SUBDIRS = . tests
AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_builddir)/src/lib
AM_CPPFLAGS += -I$(top_srcdir)/ext
if GCC_WERROR_OK
AM_CPPFLAGS += -Werror
endif
......@@ -59,23 +58,46 @@ BUILT_SOURCES = rrclass.h rrtype.h rrparamregistry.cc
#TODO: check this###BUILT_SOURCES = rdataclass.h rdataclass.cc
lib_LTLIBRARIES = libdns.la
libdns_la_SOURCES = buffer.h name.cc name.h messagerenderer.h messagerenderer.cc
libdns_la_SOURCES = base32.h base32.cc
libdns_la_SOURCES += base64.h base64.cc
libdns_la_SOURCES += buffer.h
libdns_la_SOURCES += dnssectime.h dnssectime.cc
libdns_la_SOURCES += exceptions.h exceptions.cc
libdns_la_SOURCES += rrparamregistry.h
libdns_la_SOURCES += rrclass.cc
libdns_la_SOURCES += rrtype.cc
libdns_la_SOURCES += rrttl.h rrttl.cc
libdns_la_SOURCES += hex.h hex.cc
libdns_la_SOURCES += message.h message.cc
libdns_la_SOURCES += messagerenderer.h messagerenderer.cc
libdns_la_SOURCES += name.h name.cc
libdns_la_SOURCES += rdata.h rdata.cc
libdns_la_SOURCES += rrclass.h rrclass.cc
libdns_la_SOURCES += rrset.h rrset.cc
libdns_la_SOURCES += rrsetlist.h rrsetlist.cc
libdns_la_SOURCES += rrttl.h rrttl.cc
libdns_la_SOURCES += rrtype.h rrtype.cc
libdns_la_SOURCES += question.h question.cc
libdns_la_SOURCES += message.h message.cc
libdns_la_SOURCES += base32.h base32.cc
libdns_la_SOURCES += base64.h base64.cc
libdns_la_SOURCES += sha1.h sha1.cc
libdns_la_SOURCES += tsig.h tsig.cc
libdns_la_SOURCES += dnssectime.h dnssectime.cc
libdns_la_SOURCES += hex.h hex.cc
if HAVE_BOOST_PYTHON
# This is a loadable module for python scripts, so we use the prefix "pyexec"
# to make sure the object files will be installed in the appropriate place
# for this purpose.
pyexec_LTLIBRARIES = bind10_dns.la
bind10_dns_la_SOURCES = python_dns.cc
bind10_dns_la_CPPFLAGS = $(AM_CPPFLAGS) $(PYTHON_INCLUDES)
if GCC_WERROR_OK
# XXX: Boost.Python triggers strict aliasing violation, so if we use -Werror
# we need to suppress the warnings.
bind10_dns_la_CPPFLAGS += -fno-strict-aliasing
endif
bind10_dns_la_LDFLAGS = $(BOOST_LDFLAGS) $(PYTHON_LDFLAGS)
# Python prefers .so, while some OSes (specifically MacOS) use a different
# suffix for dynamic objects. -module is necessary to work this around.
bind10_dns_la_LDFLAGS += -module
bind10_dns_la_LIBADD = $(top_builddir)/src/lib/dns/libdns.la
bind10_dns_la_LIBADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
bind10_dns_la_LIBADD += $(BOOST_PYTHON_LIB) $(PYTHON_LIB)
endif
nodist_libdns_la_SOURCES = rrparamregistry.cc
nodist_libdns_la_SOURCES += rdataclass.cc
......
SRC = ../exceptions/exceptions.cc exceptions.cc name.cc messagerenderer.cc rrtype.cc rdata.cc rrclass.cc rrsetlist.cc \
rrttl.cc rrset.cc rrparamregistry.cc rdataclass.cc dnssectime.cc hex.cc base32.cc base64.cc question.cc message.cc
CFLAGS = -I/usr/local/include -I/usr/local/include/python3.1 -I/root/trunk/src/lib/
all : bind10_message.so message_python.cc
bind10_message.so : message_python.o $(SRC)
g++ -shared -o bind10_message.so message_python.o $(CFLAGS) $(SRC) -L/usr/local/lib -lboost_python3
message_python.o : message_python.cc
g++ -c -fPIC $(CFLAGS) message_python.cc -L/usr/local/lib -lboost_python3
......@@ -207,6 +207,11 @@ public:
private:
size_t position_;
// XXX: The following must be private, but for a short term workaround with
// Boost.Python binding, we changed it to protected. We should soon
// revisit it.
protected:
const uint8_t* data_;
size_t len_;
};
......
from bind10_message import *
import sys; sys.path.append ('/Users/jinmei/opt/lib/python3.1/site-packages')
from bind10_dns import *
from struct import *
id = ["10","35"]
......
......@@ -14,7 +14,8 @@
// $Id: message_python.cc 2010-03-08 18:44:00 feng $
#include <string>
#include <cassert>
#include <boost/python.hpp>
#include <boost/python/class.hpp>
#include <boost/python/module.hpp>
......@@ -25,6 +26,7 @@
#include <boost/shared_ptr.hpp>
#include <exceptions/exceptions.h>
#include "buffer.h"
#include "name.h"
#include "messagerenderer.h"
......@@ -89,8 +91,12 @@ namespace
public:
PyInputBuffer(object bytes) : InputBuffer(0,0)
{
if (PyBytes_Check(bytes.ptr()))
PyBytes_AsStringAndSize(bytes.ptr(), (char **)&data_, (int *)&len_);
if (PyBytes_Check(bytes.ptr())) {
Py_ssize_t len = 0;
PyBytes_AsStringAndSize(bytes.ptr(), (char **)&data_, &len);
assert(len >= 0);
len_ = len;
}
}
};
......@@ -109,8 +115,10 @@ namespace
if (PyBytes_Check(bytes.ptr()))
{
uint8_t *raw_data = NULL;
int raw_data_len = 0;
PyBytes_AsStringAndSize(bytes.ptr(), (char **)&raw_data, &raw_data_len);
Py_ssize_t raw_data_len = 0;
PyBytes_AsStringAndSize(bytes.ptr(), (char **)&raw_data,
&raw_data_len);
assert(raw_data_len >= 0);
writeData(raw_data, raw_data_len);
}
......@@ -134,8 +142,10 @@ namespace
if (PyBytes_Check(bytes.ptr()))
{
uint8_t *raw_data = NULL;
int raw_data_len = 0;
PyBytes_AsStringAndSize(bytes.ptr(), (char **)&raw_data, &raw_data_len);
Py_ssize_t raw_data_len = 0;
PyBytes_AsStringAndSize(bytes.ptr(), (char **)&raw_data,
&raw_data_len);
assert(raw_data_len >= 0);
writeData(raw_data, raw_data_len);
}
}
......@@ -201,7 +211,7 @@ namespace
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(add_rrset_overloads, addRRset, 2, 3)
}
BOOST_PYTHON_MODULE(bind10_message)
BOOST_PYTHON_MODULE(bind10_dns)
{
REGISTER_EXCEPTION(Exception);
REGISTER_EXCEPTION(OutOfRange);
......
AM_CPPFLAGS = -I$(top_builddir)/src/lib -I$(top_srcdir)/ext
AM_CPPFLAGS = -I$(top_builddir)/src/lib -I$(top_builddir)/src/lib
CLEANFILES = *.gcno *.gcda
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment