From: Wouter Wijngaards Date: Thu, 25 Jan 2007 12:39:51 +0000 (+0000) Subject: See changelog. X-Git-Tag: release-0.0~92 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=19555a95b02af74743d9870af027313e3e72dfe7;p=thirdparty%2Funbound.git See changelog. git-svn-id: file:///svn/unbound/trunk@33 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/configure.ac b/configure.ac index 76f0dd298..8f8d6a0b5 100644 --- a/configure.ac +++ b/configure.ac @@ -192,7 +192,7 @@ AC_ARG_WITH(ssl, AC_HELP_STRING([--with-ssl=pathname], AC_CHECK_HEADERS([openssl/ssl.h],,, [AC_INCLUDES_DEFAULT]) # check for libevent -AC_ARG_WITH(ssl, AC_HELP_STRING([--with-libevent=pathname], +AC_ARG_WITH(libevent, AC_HELP_STRING([--with-libevent=pathname], [set path to libevent (will check /usr/local /usr/lib /usr/pkg /usr/sfw /usr)]),[ ],[ withval="yes" @@ -221,6 +221,7 @@ AC_ARG_WITH(ssl, AC_HELP_STRING([--with-libevent=pathname], AC_SUBST(RUNTIME_PATH) fi AC_CHECK_HEADERS([event.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_FUNCS([event_base_free]) # only in libevent 1.2 and later # check to see if libraries are needed for these functions. AC_CHECK_LIB(socket, socket) diff --git a/daemon/unbound.c b/daemon/unbound.c index 04ae109b3..669880d23 100644 --- a/daemon/unbound.c +++ b/daemon/unbound.c @@ -3,7 +3,34 @@ * * 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. * */ @@ -15,6 +42,24 @@ #include "config.h" #include "util/log.h" +#include "util/netevent.h" + +/** print usage. + * @param argv: the argv passed to main(). + */ +static void usage() +{ + printf("usage: unbound [options]\n"); + printf("\tstart unbound daemon DNS resolver.\n"); + printf("\t-h\tthis help\n"); + printf("\t-v\tverbose (multiple times increase verbosity)\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); +} + +extern int optind; +extern char* optarg; /** * main program. Set options given commandline arguments. @@ -24,13 +69,37 @@ int main(int argc, char* argv[]) { - if(argc != 1) { - printf("usage: %s\n", argv[0]); - printf("\tstart unbound daemon DNS resolver.\n"); + struct comm_base *base = 0; + int c; + + log_init(); + /* parse the options */ + while( (c=getopt(argc, argv, "hv")) != -1) { + switch(c) { + case 'v': + verbosity ++; + break; + case '?': + case 'h': + default: + usage(); + return 1; + } + } + argc -= optind; + argv += optind; + + if(argc != 0) { + usage(); return 1; } - log_init(); + log_info("Start of %s.", PACKAGE_STRING); + base = comm_base_create(); + if(!base) + fatal_exit("could not create commbase"); + + comm_base_delete(base); return 0; } diff --git a/doc/Changelog b/doc/Changelog index e842e1489..a792750d4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,10 @@ 25 January 2007: Wouter - fixed lint so it may work on BSD. + - put license into header of every file. + - created verbosity flag. + - fixed libevent configure flag. + - detects event_base_free() in new libevent 1.2 version. + - getopt in daemon. fatal_exit() and verbose() logging funcs. 24 January 2007: Wouter - cleaned up configure.ac. diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c new file mode 100644 index 000000000..d80250463 --- /dev/null +++ b/services/listen_dnsport.c @@ -0,0 +1,43 @@ +/* + * services/listen_dnsport.c - listen on port 53 for incoming DNS queries. + * + * 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 + * + * This file has functions to get queries from clients. + */ + +#include "services/listen_dnsport.h" + diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h new file mode 100644 index 000000000..940180c74 --- /dev/null +++ b/services/listen_dnsport.h @@ -0,0 +1,81 @@ +/* + * services/listen_dnsport.h - listen on port 53 for incoming DNS queries. + * + * 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 + * + * This file has functions to get queries from clients. + */ + +#ifndef LISTEN_DNSPORT_H +#define LISTEN_DNSPORT_H + +#include "config.h" +struct comm_base; + +/** + * Listening for queries structure. + * Contains list of query-listen sockets. + */ +struct listen_dnsport { + /** Base for select calls */ + struct comm_base* base; +}; + +/** + * Getaddrinfo, create socket, bind and listen to zero or more + * interfaces for IP4 and/or IP6, for UDP and/or TCP. + * On the given port number. It creates the listening sockets. + * @param base: the comm_base that provides event functionality. + * @param num_ifs: number of interfaces to listen on. Can be 0, + * for default all ifs. + * @param ifs: array of strings with interface specs, IP addresses. + * @param port: the port number to bind to. + * @param do_ip4: listen to ip4 queries. + * @param do_ip6: listen to ip6 queries. + * @param do_udp: listen to udp queries. + * @param do_tcp: listen to tcp queries. + * @return: the malloced listening structure, ready for use. + */ +struct listen_dnsport* listen_create(struct comm_base* base, + int num_ifs, const char* ifs[], int port, + int do_ip4, int do_ip6, int do_udp, int do_tcp); + +/** + * delete the listening structure + */ +void listen_delete(struct listen_dnsport* listen); + +#endif /* LISTEN_DNSPORT_H */ diff --git a/util/log.c b/util/log.c index 3c20045bf..f0fabb691 100644 --- a/util/log.c +++ b/util/log.c @@ -3,8 +3,34 @@ * * 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. */ /** * \file @@ -17,6 +43,8 @@ #include #endif +enum verbosity_value verbosity = 3; + void log_init() { @@ -57,3 +85,33 @@ log_err(const char *format, ...) log_vmsg("error", format, args); va_end(args); } + +/** + * implementation of fatal_exit + * @param format: format string printf-style. + */ +void +fatal_exit(const char *format, ...) +{ + va_list args; + va_start(args, format); + log_vmsg("fatal error", format, args); + va_end(args); + exit(1); +} + +/** + * implementation of verbose + * @param level: verbose level for the message. + * @param format: format string printf-style. + */ +void +verbose(enum verbosity_value level, const char* format, ...) +{ + va_list args; + va_start(args, format); + if(verbosity >= level) + log_vmsg("note", format, args); + va_end(args); +} + diff --git a/util/log.h b/util/log.h index bffe11286..1c3c5405b 100644 --- a/util/log.h +++ b/util/log.h @@ -3,8 +3,34 @@ * * 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. */ /** @@ -21,6 +47,33 @@ #include #endif +/** + * verbosity value: + */ +enum verbosity_value { + /** 0 - no verbose messages */ + NO_VERBOSE = 0, + /** 1 - operational information */ + VERB_OPS, + /** 2 - query level information */ + VERB_DETAIL, + /** 3 - algorithm level information */ + VERB_ALGO +}; + +/** The global verbosity setting */ +extern enum verbosity_value verbosity; + +/** + * log a verbose message, pass the level for this message. + * It has printf formatted arguments. No trailing newline is needed. + * @param level: verbosity level for this message, compared to global + * verbosity setting. + * @param format: printf-style format string. Arguments follow. + */ +void verbose(enum verbosity_value level, + const char* format, ...) ATTR_FORMAT(printf, 2, 3); + /** * call this to initialize logging services. */ @@ -40,6 +93,13 @@ void log_info(const char* format, ...) ATTR_FORMAT(printf, 1, 2); */ void log_err(const char* format, ...) ATTR_FORMAT(printf, 1, 2); +/** + * Log fatal error message, and exit the current process. + * Pass printf formatted arguments. No trailing newline is needed. + * @param format: printf-style format string. Arguments follow. + */ +void fatal_exit(const char* format, ...) ATTR_FORMAT(printf, 1, 2); + /** * va_list argument version of log_info. * @param type: string to designate type of message (info, error). diff --git a/util/netevent.c b/util/netevent.c index 953da312a..b96d34550 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -3,8 +3,34 @@ * * 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. */ /** @@ -91,13 +117,17 @@ comm_base_create() free(b); return NULL; } + verbose(VERB_ALGO, "libevent uses %s method.", event_get_method()); return b; } void comm_base_delete(struct comm_base* b) { - /* No way to delete event_base! leaks. */ +#ifdef HAVE_EVENT_BASE_FREE + /* only libevent 1.2+ has it */ + event_base_free(b->eb->base); +#endif /* HAVE_EVENT_BASE_FREE */ b->eb->base = NULL; free(b->eb); free(b); diff --git a/util/netevent.h b/util/netevent.h index 42906f809..e9774fa9c 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -3,8 +3,34 @@ * * 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. */ /**