COMMON_SRC=$(wildcard services/*.c util/*.c)
COMMON_OBJ=$(addprefix $(BUILD),$(COMMON_SRC:.c=.o) $(LIBOBJS))
-UNITTEST_SRC=$(wildcard testcode/*.c)
+UNITTEST_SRC=testcode/unitmain.c
UNITTEST_OBJ=$(addprefix $(BUILD),$(UNITTEST_SRC:.c=.o))
DAEMON_SRC=$(wildcard daemon/*.c)
DAEMON_OBJ=$(addprefix $(BUILD),$(DAEMON_SRC:.c=.o))
-ALL_SRC=$(COMMON_SRC) $(UNITTEST_SRC) $(DAEMON_SRC)
+TESTBOUND_SRC=testcode/testbound.c
+TESTBOUND_OBJ=$(addprefix $(BUILD),$(TESTBOUND_SRC:.c=.o))
+ALL_SRC=$(COMMON_SRC) $(UNITTEST_SRC) $(DAEMON_SRC) $(TESTBOUND_SRC)
ALL_OBJ=$(addprefix $(BUILD),$(ALL_SRC:.c=.o) $(LIBOBJS))
COMPILE=$(LIBTOOL) --tag=CC --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS)
.PHONY: clean realclean doc lint all
-all: $(COMMON_OBJ) unbound unittest
+all: $(COMMON_OBJ) unbound unittest testbound
unbound: $(COMMON_OBJ) $(DAEMON_OBJ)
$(INFO) Link $@
$(INFO) Link $@
$Q$(LINK) -o $@ $^ $(LIBS)
+testbound: $(COMMON_OBJ) $(TESTBOUND_OBJ)
+ $(INFO) Link $@
+ $Q$(LINK) -o $@ $^ $(LIBS)
+
clean:
rm -f *.o *.d *.lo *~ tags
rm -rf autom4te.cache .libs build doc/html
if [ $$? -ne 0 ] ; then exit 1 ; fi ; \
done
-tags: $(srcdir)/*.c ldns/*.[ch]
- ctags -f $(srcdir)/tags $(srcdir)/*.[ch] ldns/*.[ch]
+tags: $(srcdir)/*.[ch] $(srcdir)/*/*.[ch]
+ ctags -f $(srcdir)/tags $(srcdir)/*.[ch] $(srcdir)/*/*.[ch]
doc:
ifdef doxygen
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005 Free Software Foundation, Inc.
+# This file 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.
+
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-## Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
-## Free Software Foundation, Inc.
-## Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-##
-## This file 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.
# serial 48 AC_PROG_LIBTOOL
_LT_COMPILER_BOILERPLATE
_LT_LINKER_BOILERPLATE
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
AC_LIBTOOL_PROG_COMPILER_PIC($1)
AC_LIBTOOL_PROG_CC_C_O($1)
_LT_AC_TAGVAR(GCC, $1)="$GXX"
_LT_AC_TAGVAR(LD, $1)="$LD"
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
AC_LIBTOOL_POSTDEP_PREDEP($1)
AC_LIBTOOL_PROG_COMPILER_PIC($1)
AC_LIBTOOL_PROG_CC_C_O($1)
_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
AC_LIBTOOL_PROG_COMPILER_PIC($1)
AC_LIBTOOL_PROG_CC_C_O($1)
[AC_CHECK_TOOL(RC, windres, no)
])
-############################################################
# NOTE: This macro has been submitted for inclusion into #
# GNU Autoconf as AC_PROG_SED. When it is available in #
# a released version of Autoconf we should remove this #
# macro and use it instead. #
-############################################################
# LT_AC_PROG_SED
# --------------
# Check for a fully-functional sed program, that truncates
SED=$lt_cv_path_SED
AC_MSG_RESULT([$SED])
])
+
26 January 2007: Wouter
- fixed memleak.
- make lint works on BSD and Linux (openssl defines).
+ - make tags works.
+ - testbound program start.
25 January 2007: Wouter
- fixed lint so it may work on BSD.
--- /dev/null
+/*
+ * testcode/testbound.c - test program for unbound.
+ *
+ * Copyright (c) 2007, NLnet Labs. All rights reserved.
+ *
+ * This software is open source.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * Neither the name of the NLNET LABS nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+/**
+ * \file
+ * Exits with code 1 on a failure. 0 if all unit tests are successfull.
+ */
+
+#include "config.h"
+
+/**
+ * include the main program from the unbound daemon.
+ * rename main to daemon_main to call it
+ */
+#define main daemon_main
+#include "daemon/unbound.c"
+#undef main
+
+/** give commandline usage for testbound. */
+static void
+testbound_usage()
+{
+ printf("usage: testbound [options]\n");
+ printf("\ttest the unbound daemon.\n");
+ printf("-h this help\n");
+ printf("-o str unbound commandline options separated by spaces.\n");
+ printf("Version %s\n", PACKAGE_VERSION);
+ printf("BSD licensed, see LICENSE file in source package.\n");
+ printf("Report bugs to %s.\n", PACKAGE_BUGREPORT);
+}
+
+/** Max number of arguments to pass to unbound. */
+#define MAXARG 100
+
+/**
+ * Add options from string to passed argc. splits on whitespace.
+ * @param optarg: the option argument, "-v -p 12345" or so.
+ * @param pass_argc: ptr to the argc for unbound. Modified.
+ * @param pass_argv: the argv to pass to unbound. Modified.
+ */
+static void
+add_opts(char* optarg, int* pass_argc, char* pass_argv[])
+{
+ char *p = optarg, *np;
+ size_t len;
+ while(p && isspace(*p))
+ p++;
+ while(p && *p) {
+ /* find location of next string and length of this one */
+ if((np = strchr(p, ' ')))
+ len = (size_t)(np-p);
+ else len = strlen(p);
+ /* allocate and copy option */
+ if(*pass_argc >= MAXARG-1) {
+ printf("too many arguments: '%s'\n", p);
+ exit(1);
+ }
+ pass_argv[*pass_argc] = (char*)malloc(len+1);
+ if(!pass_argv[*pass_argc]) {
+ printf("out of memory\n");
+ exit(1);
+ }
+ memcpy(pass_argv[*pass_argc], p, len);
+ pass_argv[*pass_argc][len] = 0;
+ (*pass_argc)++;
+ /* go to next option */
+ p = np;
+ while(p && isspace(*p))
+ p++;
+ }
+}
+
+/** pretty print commandline for unbound in this test. */
+static void
+echo_cmdline(int argc, char* argv[])
+{
+ int i;
+ printf("starting:");
+ for(i=0; i<argc; i++) {
+ printf(" [%s]", argv[i]);
+ }
+ printf("\n");
+}
+
+/**
+ * Main unit test program. Setup, teardown and report errors.
+ * @param argc: arg count.
+ * @param argv: array of commandline arguments.
+ */
+int main(int argc, char* argv[])
+{
+ int c, res;
+ int pass_argc = 0;
+ char* pass_argv[MAXARG];
+ int init_optind = optind;
+ char* init_optarg = optarg;
+
+ printf("Start of %s testbound program.\n", PACKAGE_STRING);
+ /* determine commandline options for the daemon */
+ pass_argc = 1;
+ pass_argv[0] = "unbound";
+ while( (c=getopt(argc, argv, "ho:")) != -1) {
+ switch(c) {
+ case 'o':
+ add_opts(optarg, &pass_argc, pass_argv);
+ break;
+ case '?':
+ case 'h':
+ default:
+ testbound_usage();
+ return 1;
+ }
+ }
+ argc -= optind;
+ argv += optind;
+ if(argc != 0) {
+ testbound_usage();
+ return 1;
+ }
+
+ /* setup test environment */
+
+ pass_argv[pass_argc] = NULL;
+ echo_cmdline(pass_argc, pass_argv);
+
+ /* reset getopt processing */
+ optind = init_optind;
+ optarg = init_optarg;
+
+ /* run the normal daemon */
+ res = daemon_main(pass_argc, pass_argv);
+
+ for(c=1; c<pass_argc; c++)
+ free(pass_argv[c]);
+ return res;
+}
*
* Copyright (c) 2007, NLnet Labs. All rights reserved.
*
- * See LICENSE for the license.
+ * This software is open source.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * Neither the name of the NLNET LABS nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
*
*/
/**