Browse Source

[1239] Changes after review:

- DHCPv4 tests now simulate detection of 127.0.0.1 address
- DHCPv4 tests now open sockets on loopback
- Option::getUintX() now uses code from isc::util::getUintX
- Option::getUintX() methods are now documented
- Test for option::getUintX() implemented
- src/lib/dns/benchmarks/Makefile that was added by mistake removed
Tomek Mrugalski 13 years ago
parent
commit
09f2de75e9

+ 8 - 6
src/bin/dhcp4/dhcp4_srv.cc

@@ -44,6 +44,7 @@ Dhcpv4Srv::Dhcpv4Srv(uint16_t port) {
 
 
 Dhcpv4Srv::~Dhcpv4Srv() {
 Dhcpv4Srv::~Dhcpv4Srv() {
     cout << "DHCPv4 server shutdown." << endl;
     cout << "DHCPv4 server shutdown." << endl;
+    IfaceMgr::instance().closeSockets();
 }
 }
 
 
 bool
 bool
@@ -55,16 +56,16 @@ Dhcpv4Srv::run() {
         query = IfaceMgr::instance().receive4();
         query = IfaceMgr::instance().receive4();
 
 
 #if defined(ECHO_SERVER)
 #if defined(ECHO_SERVER)
-	query->repack();
+        query->repack();
         IfaceMgr::instance().send(query);
         IfaceMgr::instance().send(query);
         continue;
         continue;
 #endif
 #endif
 
 
         if (query) {
         if (query) {
-	    try {
-		query->unpack();
-	    } catch (const std::exception& e) {
-		/// TODO: Printout reasons of failed parsing
+            try {
+                query->unpack();
+            } catch (const std::exception& e) {
+                /// TODO: Printout reasons of failed parsing
                 cout << "Failed to parse incoming packet " << endl;
                 cout << "Failed to parse incoming packet " << endl;
                 continue;
                 continue;
             }
             }
@@ -104,7 +105,8 @@ Dhcpv4Srv::run() {
                 rsp->setIface(query->getIface());
                 rsp->setIface(query->getIface());
                 rsp->setIndex(query->getIndex());
                 rsp->setIndex(query->getIndex());
 
 
-                cout << "Replying with message type " << (int)rsp->getType() << ":" << endl;
+                cout << "Replying with message type "
+                     << static_cast<int>(rsp->getType()) << ":" << endl;
                 cout << rsp->toText();
                 cout << rsp->toText();
                 cout << "----" << endl;
                 cout << "----" << endl;
                 if (rsp->pack()) {
                 if (rsp->pack()) {

+ 8 - 8
src/bin/dhcp4/tests/dhcp4_srv_unittest.cc

@@ -34,7 +34,7 @@ const char* const INTERFACE_FILE = "interfaces.txt";
 class NakedDhcpv4Srv: public Dhcpv4Srv {
 class NakedDhcpv4Srv: public Dhcpv4Srv {
     // "naked" Interface Manager, exposes internal fields
     // "naked" Interface Manager, exposes internal fields
 public:
 public:
-    NakedDhcpv4Srv() { }
+    NakedDhcpv4Srv():Dhcpv4Srv(DHCP4_SERVER_PORT + 10000) { }
 
 
     boost::shared_ptr<Pkt4> processDiscover(boost::shared_ptr<Pkt4>& discover) {
     boost::shared_ptr<Pkt4> processDiscover(boost::shared_ptr<Pkt4>& discover) {
         return Dhcpv4Srv::processDiscover(discover);
         return Dhcpv4Srv::processDiscover(discover);
@@ -56,12 +56,12 @@ public:
 class Dhcpv4SrvTest : public ::testing::Test {
 class Dhcpv4SrvTest : public ::testing::Test {
 public:
 public:
     Dhcpv4SrvTest() {
     Dhcpv4SrvTest() {
-       unlink(INTERFACE_FILE);
-        fstream fakeifaces(INTERFACE_FILE, ios::out|ios::trunc);
-        if (if_nametoindex("lo")>0) {
-            fakeifaces << "lo ::1";
-        } else if (if_nametoindex("lo0")>0) {
-            fakeifaces << "lo0 ::1";
+        unlink(INTERFACE_FILE);
+        fstream fakeifaces(INTERFACE_FILE, ios::out | ios::trunc);
+        if (if_nametoindex("lo") > 0) {
+            fakeifaces << "lo 127.0.0.1";
+        } else if (if_nametoindex("lo0") > 0) {
+            fakeifaces << "lo0 127.0.0.1";
         }
         }
         fakeifaces.close();
         fakeifaces.close();
     }
     }
@@ -77,7 +77,7 @@ TEST_F(Dhcpv4SrvTest, basic) {
 
 
     Dhcpv4Srv* srv = 0;
     Dhcpv4Srv* srv = 0;
     ASSERT_NO_THROW({
     ASSERT_NO_THROW({
-        srv = new Dhcpv4Srv();
+        srv = new Dhcpv4Srv(DHCP4_SERVER_PORT + 10000);
     });
     });
 
 
     if (srv) {
     if (srv) {

+ 3 - 3
src/bin/dhcp6/tests/dhcp6_srv_unittest.cc

@@ -52,10 +52,10 @@ class Dhcpv6SrvTest : public ::testing::Test {
 public:
 public:
     Dhcpv6SrvTest() {
     Dhcpv6SrvTest() {
         unlink(INTERFACE_FILE);
         unlink(INTERFACE_FILE);
-        fstream fakeifaces(INTERFACE_FILE, ios::out|ios::trunc);
-        if (if_nametoindex("lo")>0) {
+        fstream fakeifaces(INTERFACE_FILE, ios::out | ios::trunc);
+        if (if_nametoindex("lo") > 0) {
             fakeifaces << "lo ::1";
             fakeifaces << "lo ::1";
-        } else if (if_nametoindex("lo0")>0) {
+        } else if (if_nametoindex("lo0") > 0) {
             fakeifaces << "lo0 ::1";
             fakeifaces << "lo0 ::1";
         }
         }
         fakeifaces.close();
         fakeifaces.close();

+ 3 - 5
src/lib/dhcp/option.cc

@@ -341,7 +341,8 @@ uint16_t Option::getUint16() {
         isc_throw(OutOfRange, "Attempt to read uint16 from option " << type_
         isc_throw(OutOfRange, "Attempt to read uint16 from option " << type_
                   << " that has size " << data_.size());
                   << " that has size " << data_.size());
     }
     }
-    return ( ((uint16_t)data_[0]) << 8 ) + data_[1];
+
+    return ( readUint16(&data_[0]) );
 }
 }
 
 
 uint32_t Option::getUint32() {
 uint32_t Option::getUint32() {
@@ -349,10 +350,7 @@ uint32_t Option::getUint32() {
         isc_throw(OutOfRange, "Attempt to read uint32 from option " << type_
         isc_throw(OutOfRange, "Attempt to read uint32 from option " << type_
                   << " that has size " << data_.size());
                   << " that has size " << data_.size());
     }
     }
-    return (((uint32_t)data_[0]) << 24)
-      + (((uint32_t)data_[1]) << 16)
-      + (((uint32_t)data_[2]) << 8)
-      + (((uint32_t)data_[3]));
+    return ( readUint32(&data_[0]) );
 }
 }
 
 
 Option::~Option() {
 Option::~Option() {

+ 16 - 2
src/lib/dhcp/option.h

@@ -237,15 +237,29 @@ public:
     bool
     bool
     delOption(unsigned short type);
     delOption(unsigned short type);
 
 
+    /// @brief Returns content of first byte.
+    ///
+    /// This method will throw OutOfRange if option has 0 length.
+    ///
+    /// @return value of the first byte
     uint8_t getUint8();
     uint8_t getUint8();
 
 
+    /// @brief Returns content of first word.
+    ///
+    /// This method will throw OutOfRange if option has less than 2 length.
+    ///
+    /// @return uint16_t value stored on first two bytes
     uint16_t getUint16();
     uint16_t getUint16();
 
 
+    /// @brief Returns content of first double word.
+    ///
+    /// This method will throw OutOfRange if option has less than 4 length.
+    ///
+    /// @return uint14_t value stored on first four bytes
     uint32_t getUint32();
     uint32_t getUint32();
 
 
     /// just to force that every option has virtual dtor
     /// just to force that every option has virtual dtor
-    virtual
-    ~Option();
+    virtual ~Option();
 
 
 protected:
 protected:
 
 

+ 1 - 1
src/lib/dhcp/pkt4.cc

@@ -131,7 +131,7 @@ Pkt4::unpack() {
     // input buffer (used during message reception)
     // input buffer (used during message reception)
     isc::util::InputBuffer bufferIn(&data_[0], data_.size());
     isc::util::InputBuffer bufferIn(&data_[0], data_.size());
 
 
-    if (bufferIn.getLength()<DHCPV4_PKT_HDR_LEN) {
+    if (bufferIn.getLength() < DHCPV4_PKT_HDR_LEN) {
         isc_throw(OutOfRange, "Received truncated DHCPv4 packet (len="
         isc_throw(OutOfRange, "Received truncated DHCPv4 packet (len="
                   << bufferIn.getLength() << " received, at least "
                   << bufferIn.getLength() << " received, at least "
                   << DHCPV4_PKT_HDR_LEN << "is expected");
                   << DHCPV4_PKT_HDR_LEN << "is expected");

+ 38 - 0
src/lib/dhcp/tests/option_unittest.cc

@@ -419,3 +419,41 @@ TEST_F(OptionTest, v6_toText) {
 
 
     EXPECT_EQ("type=258, len=3: 00:0f:ff", opt->toText());
     EXPECT_EQ("type=258, len=3: 00:0f:ff", opt->toText());
 }
 }
+
+TEST_F(OptionTest, getUintX) {
+    boost::shared_array<uint8_t> buf(new uint8_t[5]);
+    buf[0] = 0x5;
+    buf[1] = 0x4;
+    buf[2] = 0x3;
+    buf[3] = 0x2;
+    buf[4] = 0x1;
+
+    // five options with varying lengths
+    boost::shared_ptr<Option> opt1(new Option(Option::V6, 258, buf, 0, 1));
+    boost::shared_ptr<Option> opt2(new Option(Option::V6, 258, buf, 0, 2));
+    boost::shared_ptr<Option> opt3(new Option(Option::V6, 258, buf, 0, 3));
+    boost::shared_ptr<Option> opt4(new Option(Option::V6, 258, buf, 0, 4));
+    boost::shared_ptr<Option> opt5(new Option(Option::V6, 258, buf, 0, 5));
+
+    EXPECT_EQ(5, opt1->getUint8());
+    EXPECT_THROW(opt1->getUint16(), OutOfRange);
+    EXPECT_THROW(opt1->getUint32(), OutOfRange);
+
+    EXPECT_EQ(5, opt2->getUint8());
+    EXPECT_EQ(0x0504, opt2->getUint16());
+    EXPECT_THROW(opt2->getUint32(), OutOfRange);
+
+    EXPECT_EQ(5, opt3->getUint8());
+    EXPECT_EQ(0x0504, opt3->getUint16());
+    EXPECT_THROW(opt3->getUint32(), OutOfRange);
+
+    EXPECT_EQ(5, opt4->getUint8());
+    EXPECT_EQ(0x0504, opt4->getUint16());
+    EXPECT_EQ(0x05040302, opt4->getUint32());
+
+    // the same as for 4-byte long, just get first 1,2 or 4 bytes
+    EXPECT_EQ(5, opt5->getUint8());
+    EXPECT_EQ(0x0504, opt5->getUint16());
+    EXPECT_EQ(0x05040302, opt5->getUint32());
+
+}

+ 0 - 531
src/lib/dns/benchmarks/Makefile

@@ -1,531 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# src/lib/dns/benchmarks/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-
-pkgdatadir = $(datadir)/bind10-devel
-pkgincludedir = $(includedir)/bind10-devel
-pkglibdir = $(libdir)/bind10-devel
-pkglibexecdir = $(libexecdir)/bind10-devel
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-unknown-linux-gnu
-host_triplet = x86_64-unknown-linux-gnu
-noinst_PROGRAMS = rdatarender_bench$(EXEEXT)
-subdir = src/lib/dns/benchmarks
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_rdatarender_bench_OBJECTS = rdatarender_bench.$(OBJEXT)
-rdatarender_bench_OBJECTS = $(am_rdatarender_bench_OBJECTS)
-am__DEPENDENCIES_1 =
-rdatarender_bench_DEPENDENCIES =  \
-	$(top_builddir)/src/lib/dns/libdns++.la \
-	$(top_builddir)/src/lib/util/libutil.la \
-	$(top_builddir)/src/lib/exceptions/libexceptions.la \
-	$(am__DEPENDENCIES_1)
-DEFAULT_INCLUDES = -I. -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
-SOURCES = $(rdatarender_bench_SOURCES)
-DIST_SOURCES = $(rdatarender_bench_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /home/thomson/devel/bind10/missing --run aclocal-1.11
-AMTAR = ${SHELL} /home/thomson/devel/bind10/missing --run tar
-AR = ar
-AUTOCONF = ${SHELL} /home/thomson/devel/bind10/missing --run autoconf
-AUTOHEADER = ${SHELL} /home/thomson/devel/bind10/missing --run autoheader
-AUTOMAKE = ${SHELL} /home/thomson/devel/bind10/missing --run automake-1.11
-AWK = /usr/bin/gawk
-B10_CXXFLAGS = -Wall -Wextra -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -Werror -fPIC
-BOOST_INCLUDES = 
-BOTAN_CONFIG = /usr/bin/pkg-config botan-1.8
-BOTAN_INCLUDES =  
-BOTAN_LDFLAGS = -lbotan  
-BOTAN_RPATH =  
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CFLAGS = 
-COMMON_PYTHON_PATH = $(abs_top_builddir)/src/lib/python/isc/log_messages:$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/lib/python
-CPP = gcc -E
-CPPFLAGS =  -I$(top_srcdir)/ext/asio -I$(top_srcdir)/ext/coroutine -DASIO_DISABLE_THREADS=1
-CXX = g++
-CXXCPP = g++ -E
-CXXDEPMODE = depmode=gcc3
-CXXFLAGS = -g -O2
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DISTCHECK_GTEST_CONFIGURE_FLAG = --with-gtest="/home/thomson/devel/gtest-1.6.0"
-DSYMUTIL = 
-DUMPBIN = 
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /bin/grep -E
-ENV_LIBRARY_PATH = LD_LIBRARY_PATH
-EXEEXT = 
-FGREP = /bin/grep -F
-GENHTML = 
-GREP = /bin/grep
-GTEST_CONFIG = 
-GTEST_INCLUDES = -I/home/thomson/devel/gtest-1.6.0/include
-GTEST_LDADD = -lgtest
-GTEST_LDFLAGS = -L/home/thomson/devel/gtest-1.6.0/lib
-HAVE_PKG_CONFIG = yes
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-LCOV = 
-LD = /usr/bin/ld -m elf_x86_64
-LDFLAGS =   
-LIBOBJS = 
-LIBS = 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIPO = 
-LN_S = ln -s
-LOG4CPLUS_INCLUDES = -I/usr/local/include
-LOG4CPLUS_LDFLAGS = -L/usr/local/lib -llog4cplus -pthread
-LTLIBOBJS = 
-MAKEINFO = ${SHELL} /home/thomson/devel/bind10/missing --run makeinfo
-MKDIR_P = /bin/mkdir -p
-MULTITHREADING_FLAG = -pthread
-NM = /usr/bin/nm -B
-NMEDIT = 
-OBJDUMP = objdump
-OBJEXT = o
-OTOOL = 
-OTOOL64 = 
-PACKAGE = bind10-devel
-PACKAGE_BUGREPORT = bind10-dev@isc.org
-PACKAGE_NAME = bind10-devel
-PACKAGE_STRING = bind10-devel 20111021
-PACKAGE_TARNAME = bind10-devel
-PACKAGE_URL = 
-PACKAGE_VERSION = 20111021
-PATH_SEPARATOR = :
-PERL = /usr/bin/perl
-PKG_CONFIG = /usr/bin/pkg-config
-PKG_CONFIG_LIBDIR = 
-PKG_CONFIG_PATH = 
-PTHREAD_LDFLAGS = -lpthread
-PYCOVERAGE = 
-PYCOVERAGE_RUN = /usr/bin/python3.1
-PYTHON = /usr/bin/python3.1
-PYTHON_CXXFLAGS = 
-PYTHON_EXEC_PREFIX = ${exec_prefix}
-PYTHON_INCLUDES = -I/usr/include/python3.1 -I/usr/include/python3.1
-PYTHON_LDFLAGS =  -L/usr/lib/python3.1/config  -R/usr/lib/python3.1/config
-PYTHON_LIB = -lpython3.1
-PYTHON_LOGMSGPKG_DIR = $(top_builddir)/src/lib/python/isc/log_messages
-PYTHON_PLATFORM = linux2
-PYTHON_PREFIX = ${prefix}
-PYTHON_SITEPKG_DIR = ${exec_prefix}/lib/python3/dist-packages
-PYTHON_VERSION = 3.1
-RANLIB = ranlib
-SED = /bin/sed
-SET_ENV_LIBRARY_PATH = no
-SET_MAKE = 
-SHELL = /bin/bash
-SQLITE_CFLAGS =  
-SQLITE_LIBS = -L/usr/lib/x86_64-linux-gnu -lsqlite3  
-STRIP = strip
-USE_LCOV = no
-USE_PYCOVERAGE = no
-VERSION = 20111021
-WARNING_NO_MISSING_FIELD_INITIALIZERS_CFLAG = -Wno-missing-field-initializers
-abs_builddir = /home/thomson/devel/bind10/src/lib/dns/benchmarks
-abs_srcdir = /home/thomson/devel/bind10/src/lib/dns/benchmarks
-abs_top_builddir = /home/thomson/devel/bind10
-abs_top_srcdir = /home/thomson/devel/bind10
-ac_ct_CC = gcc
-ac_ct_CXX = g++
-ac_ct_DUMPBIN = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = ${AMTAR} chof - "$$tardir"
-am__untar = ${AMTAR} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-unknown-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = unknown
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-unknown-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = unknown
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /home/thomson/devel/bind10/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-lt_ECHO = echo
-mandir = ${datarootdir}/man
-mkdir_p = /bin/mkdir -p
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgpyexecdir = ${pyexecdir}/bind10-devel
-pkgpythondir = ${pythondir}/bind10-devel
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-pyexecdir = ${exec_prefix}/lib/python3/dist-packages
-pythondir = ${prefix}/lib/python3/dist-packages
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../../../../
-top_builddir = ../../../..
-top_srcdir = ../../../..
-AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_builddir)/src/lib \
-	$(BOOST_INCLUDES)
-AM_CXXFLAGS = $(B10_CXXFLAGS)
-#AM_LDFLAGS = -static
-CLEANFILES = *.gcno *.gcda
-rdatarender_bench_SOURCES = rdatarender_bench.cc
-rdatarender_bench_LDADD = $(top_builddir)/src/lib/dns/libdns++.la \
-	$(top_builddir)/src/lib/util/libutil.la \
-	$(top_builddir)/src/lib/exceptions/libexceptions.la \
-	$(SQLITE_LIBS)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/lib/dns/benchmarks/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/lib/dns/benchmarks/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-rdatarender_bench$(EXEEXT): $(rdatarender_bench_OBJECTS) $(rdatarender_bench_DEPENDENCIES) 
-	@rm -f rdatarender_bench$(EXEEXT)
-	$(CXXLINK) $(rdatarender_bench_OBJECTS) $(rdatarender_bench_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-include ./$(DEPDIR)/rdatarender_bench.Po
-
-.cc.o:
-	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-#	$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
-	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-#	source='$<' object='$@' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-#	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
-	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-#	source='$<' object='$@' libtool=yes \
-#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-#	$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT: