Move configuration checking to libbind9.

This commit is contained in:
Mark Andrews
2001-09-20 15:17:07 +00:00
parent ae5df22719
commit c2bc56dc65
44 changed files with 350 additions and 100 deletions

View File

@@ -13,13 +13,17 @@
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# $Id: Makefile.in,v 1.15 2001/03/27 00:53:21 bwelling Exp $
# $Id: Makefile.in,v 1.16 2001/09/20 15:16:50 marka Exp $
srcdir = @srcdir@
VPATH = @srcdir@
top_srcdir = @top_srcdir@
SUBDIRS = isc isccc isccfg dns lwres tests
# Note: the order of SUBDIRS is important.
# Attempt to disable parallel processing.
.NOTPARALLEL:
.NO_PARALLEL:
SUBDIRS = isc isccc isccfg dns bind9 lwres tests
TARGETS =
@BIND9_MAKE_RULES@

View File

@@ -13,7 +13,7 @@
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# $Id: Makefile.in,v 1.12 2001/08/09 05:59:34 marka Exp $
# $Id: Makefile.in,v 1.13 2001/09/20 15:16:52 marka Exp $
srcdir = @srcdir@
VPATH = @srcdir@
@@ -114,6 +114,7 @@ install:: timestamp installdirs
clean distclean::
rm -f libbind.@SA@ libbind.la
distclean::
rm -f config.cache config.h config.log config.status libtool
rm -f port_before.h port_after.h

5
lib/bind9/.cvsignore Normal file
View File

@@ -0,0 +1,5 @@
Makefile
timestamp
.libs
*.la
*.lo

76
lib/bind9/Makefile.in Normal file
View File

@@ -0,0 +1,76 @@
# Copyright (C) 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
# INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# $Id: Makefile.in,v 1.1 2001/09/20 15:17:06 marka Exp $
srcdir = @srcdir@
VPATH = @srcdir@
top_srcdir = @top_srcdir@
@BIND9_VERSION@
@LIBBIND9_API@
@BIND9_MAKE_INCLUDES@
CINCLUDES = -I. ${BIND9_INCLUDES} ${DNS_INCLUDES} ${ISC_INCLUDES} \
${ISCCFG_INCLUDES}
CDEFINES =
CWARNINGS =
LIBS = @LIBS@
SUBDIRS = include
# Alphabetically
OBJS = check.@O@ version.@O@
# Alphabetically
SRCS = check.c version.c
TARGETS = timestamp
@BIND9_MAKE_RULES@
version.@O@: version.c
${LIBTOOL} ${CC} ${ALL_CFLAGS} \
-DVERSION=\"${VERSION}\" \
-DLIBINTERFACE=${LIBINTERFACE} \
-DLIBREVISION=${LIBREVISION} \
-DLIBAGE=${LIBAGE} \
-c ${srcdir}/version.c
libbind9.@SA@: ${OBJS}
${AR} ${ARFLAGS} $@ ${OBJS}
${RANLIB} $@
libbind9.la: ${OBJS}
${LIBTOOL} --mode=link \
${CC} ${ALL_CFLAGS} -o libbind9.la -rpath ${libdir} \
-version-info ${LIBINTERFACE}:${LIBREVISION}:${LIBAGE} \
${OBJS} ${LIBS}
timestamp: libbind9.@A@
touch timestamp
installdirs:
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir}
install:: timestamp installdirs
${LIBTOOL} ${INSTALL_DATA} libbind9.@A@ ${DESTDIR}${libdir}
clean distclean::
rm -f libbind9.@A@ timestamp

3
lib/bind9/api Normal file
View File

@@ -0,0 +1,3 @@
LIBINTERFACE = 0
LIBREVISION = 0
LIBAGE = 0

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: check.c,v 1.17 2001/09/18 18:43:16 gson Exp $ */
/* $Id: check.c,v 1.1 2001/09/20 15:17:06 marka Exp $ */
#include <config.h>
@@ -26,9 +26,13 @@
#include <isc/result.h>
#include <isc/symtab.h>
#include <isc/util.h>
#include <isc/region.h>
#include <dns/rdataclass.h>
#include <isccfg/cfg.h>
#include <isccfg/check.h>
#include <bind9/check.h>
static isc_result_t
check_forward(cfg_obj_t *options, isc_log_t *logctx) {
@@ -101,7 +105,9 @@ typedef struct {
} optionstable;
static isc_result_t
check_zoneconf(cfg_obj_t *zconfig, isc_symtab_t *symtab, isc_log_t *logctx) {
check_zoneconf(cfg_obj_t *zconfig, isc_symtab_t *symtab,
dns_rdataclass_t defclass, isc_log_t *logctx)
{
const char *zname;
const char *typestr;
unsigned int ztype;
@@ -111,6 +117,7 @@ check_zoneconf(cfg_obj_t *zconfig, isc_symtab_t *symtab, isc_log_t *logctx) {
isc_result_t result = ISC_R_SUCCESS;
isc_result_t tresult;
unsigned int i;
dns_rdataclass_t zclass;
static optionstable options[] = {
{ "allow-query", MASTERZONE | SLAVEZONE | STUBZONE },
@@ -182,6 +189,28 @@ check_zoneconf(cfg_obj_t *zconfig, isc_symtab_t *symtab, isc_log_t *logctx) {
return (ISC_R_FAILURE);
}
obj = cfg_tuple_get(zconfig, "class");
if (cfg_obj_isstring(obj)) {
isc_textregion_t r;
DE_CONST(cfg_obj_asstring(obj), r.base);
r.length = strlen(r.base);
result = dns_rdataclass_fromtext(&zclass, &r);
if (result != ISC_R_SUCCESS) {
cfg_obj_log(obj, logctx, ISC_LOG_ERROR,
"zone '%s': invalid class %s",
zname, r.base);
return (ISC_R_FAILURE);
}
if (zclass != defclass) {
cfg_obj_log(obj, logctx, ISC_LOG_ERROR,
"zone '%s': class '%s' does not "
"match view/default class",
zname, r.base);
return (ISC_R_FAILURE);
}
}
/*
* Look for an already existing zone.
*/
@@ -295,7 +324,7 @@ check_zoneconf(cfg_obj_t *zconfig, isc_symtab_t *symtab, isc_log_t *logctx) {
}
isc_result_t
cfg_check_key(cfg_obj_t *key, isc_log_t *logctx) {
bind9_check_key(cfg_obj_t *key, isc_log_t *logctx) {
cfg_obj_t *algobj = NULL;
cfg_obj_t *secretobj = NULL;
const char *keyname = cfg_obj_asstring(cfg_map_getname(key));
@@ -313,8 +342,8 @@ cfg_check_key(cfg_obj_t *key, isc_log_t *logctx) {
}
static isc_result_t
check_viewconf(cfg_obj_t *vconfig, const char *vname, isc_log_t *logctx,
isc_mem_t *mctx)
check_viewconf(cfg_obj_t *vconfig, const char *vname, dns_rdataclass_t vclass,
isc_log_t *logctx, isc_mem_t *mctx)
{
cfg_obj_t *zones = NULL;
cfg_obj_t *keys = NULL;
@@ -332,13 +361,16 @@ check_viewconf(cfg_obj_t *vconfig, const char *vname, isc_log_t *logctx,
return (ISC_R_NOMEMORY);
(void)cfg_map_get(vconfig, "zone", &zones);
for (element = cfg_list_first(zones);
element != NULL;
element = cfg_list_next(element))
{
isc_result_t tresult;
cfg_obj_t *zone = cfg_listelt_value(element);
if (check_zoneconf(zone, symtab, logctx) != ISC_R_SUCCESS)
tresult = check_zoneconf(zone, symtab, vclass, logctx);
if (tresult != ISC_R_SUCCESS)
result = ISC_R_FAILURE;
}
@@ -373,7 +405,7 @@ check_viewconf(cfg_obj_t *vconfig, const char *vname, isc_log_t *logctx,
return (tresult);
}
tresult = cfg_check_key(key, logctx);
tresult = bind9_check_key(key, logctx);
if (result != ISC_R_SUCCESS) {
isc_symtab_destroy(&symtab);
return (tresult);
@@ -405,7 +437,7 @@ check_viewconf(cfg_obj_t *vconfig, const char *vname, isc_log_t *logctx,
isc_result_t
cfg_check_namedconf(cfg_obj_t *config, isc_log_t *logctx, isc_mem_t *mctx) {
bind9_check_namedconf(cfg_obj_t *config, isc_log_t *logctx, isc_mem_t *mctx) {
cfg_obj_t *options = NULL;
cfg_obj_t *views = NULL;
cfg_obj_t *obj;
@@ -421,8 +453,8 @@ cfg_check_namedconf(cfg_obj_t *config, isc_log_t *logctx, isc_mem_t *mctx) {
(void)cfg_map_get(config, "view", &views);
if (views == NULL) {
if (check_viewconf(config, "_default", logctx, mctx)
!= ISC_R_SUCCESS)
if (check_viewconf(config, "_default", dns_rdataclass_in,
logctx, mctx) != ISC_R_SUCCESS)
result = ISC_R_FAILURE;
} else {
cfg_obj_t *zones = NULL;
@@ -443,9 +475,26 @@ cfg_check_namedconf(cfg_obj_t *config, isc_log_t *logctx, isc_mem_t *mctx) {
cfg_obj_t *view = cfg_listelt_value(velement);
cfg_obj_t *vname = cfg_tuple_get(view, "name");
cfg_obj_t *voptions = cfg_tuple_get(view, "options");
cfg_obj_t *vclassobj = cfg_tuple_get(view, "class");
dns_rdataclass_t vclass = dns_rdataclass_in;
isc_result_t tresult = ISC_R_SUCCESS;
if (check_viewconf(voptions, cfg_obj_asstring(vname), logctx,
mctx) != ISC_R_SUCCESS)
if (cfg_obj_isstring(vclassobj)) {
isc_textregion_t r;
DE_CONST(cfg_obj_asstring(vclassobj), r.base);
r.length = strlen(r.base);
tresult = dns_rdataclass_fromtext(&vclass, &r);
if (tresult != ISC_R_SUCCESS)
cfg_obj_log(obj, logctx, ISC_LOG_ERROR,
"view '%s': invalid class %s",
cfg_obj_asstring(vname), r.base);
}
if (tresult == ISC_R_SUCCESS)
tresult = check_viewconf(voptions,
cfg_obj_asstring(vname),
vclass, logctx, mctx);
if (tresult != ISC_R_SUCCESS)
result = ISC_R_FAILURE;
}

View File

@@ -0,0 +1,25 @@
# Copyright (C) 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
# INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# $Id: Makefile.in,v 1.1 2001/09/20 15:17:06 marka Exp $
srcdir = @srcdir@
VPATH = @srcdir@
top_srcdir = @top_srcdir@
SUBDIRS = bind9
TARGETS =
@BIND9_MAKE_RULES@

View File

@@ -0,0 +1 @@
Makefile

View File

@@ -0,0 +1,42 @@
# Copyright (C) 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
# INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# $Id: Makefile.in,v 1.1 2001/09/20 15:17:07 marka Exp $
srcdir = @srcdir@
VPATH = @srcdir@
top_srcdir = @top_srcdir@
@BIND9_VERSION@
#
# Only list headers that are to be installed and are not
# machine generated. The latter are handled specially in the
# install target below.
#
HEADERS = cfg.h check.h log.h
SUBDIRS =
TARGETS =
@BIND9_MAKE_RULES@
installdirs:
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${includedir}/isccfg
install:: installdirs
for i in ${HEADERS}; do \
${INSTALL_DATA} ${srcdir}/$$i ${DESTDIR}${includedir}/isccfg ; \
done

View File

@@ -15,10 +15,10 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: check.h,v 1.4 2001/08/03 17:24:11 gson Exp $ */
/* $Id: check.h,v 1.1 2001/09/20 15:17:07 marka Exp $ */
#ifndef ISCCFG_CHECK_H
#define ISCCFG_CHECK_H 1
#ifndef BIND9_CHECK_H
#define BIND9_CHECK_H 1
#include <isc/lang.h>
#include <isc/types.h>
@@ -28,7 +28,7 @@
ISC_LANG_BEGINDECLS
isc_result_t
cfg_check_namedconf(cfg_obj_t *config, isc_log_t *logctx, isc_mem_t *mctx);
bind9_check_namedconf(cfg_obj_t *config, isc_log_t *logctx, isc_mem_t *mctx);
/*
* Check the syntactic validity of a configuration parse tree generated from
* a named.conf file.
@@ -44,11 +44,11 @@ cfg_check_namedconf(cfg_obj_t *config, isc_log_t *logctx, isc_mem_t *mctx);
*/
isc_result_t
cfg_check_key(cfg_obj_t *config, isc_log_t *logctx);
bind9_check_key(cfg_obj_t *config, isc_log_t *logctx);
/*
* As above, but for a single 'key' statement.
*/
ISC_LANG_ENDDECLS
#endif /* ISCCFG_CHECK_H */
#endif /* BIND9_CHECK_H */

24
lib/bind9/version.c Normal file
View File

@@ -0,0 +1,24 @@
/*
* Copyright (C) 1998-2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
* INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: version.c,v 1.1 2001/09/20 15:17:06 marka Exp $ */
char bind9_version[] = VERSION;
unsigned int bind9_libinterface = LIBINTERFACE;
unsigned int bind9_librevision = LIBREVISION;
unsigned int bind9_libage = LIBAGE;

View File

@@ -13,7 +13,7 @@
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# $Id: Makefile.in,v 1.126 2001/07/10 21:37:55 bwelling Exp $
# $Id: Makefile.in,v 1.127 2001/09/20 15:16:53 marka Exp $
srcdir = @srcdir@
VPATH = @srcdir@
@@ -23,7 +23,7 @@ top_srcdir = @top_srcdir@
@LIBDNS_API@
@BIND9_INCLUDES@
@BIND9_MAKE_INCLUDES@
CINCLUDES = -I. ${DNS_INCLUDES} ${ISC_INCLUDES}

View File

@@ -13,13 +13,13 @@
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# $Id: Makefile.in,v 1.25 2001/07/10 21:37:59 bwelling Exp $
# $Id: Makefile.in,v 1.26 2001/09/20 15:16:54 marka Exp $
srcdir = @srcdir@
VPATH = @srcdir@
top_srcdir = @top_srcdir@
@BIND9_INCLUDES@
@BIND9_MAKE_INCLUDES@
CINCLUDES = -I${srcdir} \
${DNS_INCLUDES} ${ISC_INCLUDES} \

View File

@@ -13,7 +13,7 @@
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# $Id: Makefile.in,v 1.2 2001/07/09 22:25:26 gson Exp $
# $Id: Makefile.in,v 1.3 2001/09/20 15:16:56 marka Exp $
srcdir = @srcdir@
VPATH = @srcdir@
@@ -23,7 +23,7 @@ top_srcdir = @top_srcdir@
@LIBISCCC_API@
@BIND9_INCLUDES@
@BIND9_MAKE_INCLUDES@
CINCLUDES = -I. ${DNS_INCLUDES} ${ISC_INCLUDES} ${ISCCC_INCLUDES}

View File

@@ -13,7 +13,7 @@
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# $Id: Makefile.in,v 1.6 2001/07/09 22:25:27 gson Exp $
# $Id: Makefile.in,v 1.7 2001/09/20 15:16:57 marka Exp $
srcdir = @srcdir@
VPATH = @srcdir@
@@ -23,7 +23,7 @@ top_srcdir = @top_srcdir@
@LIBISCCFG_API@
@BIND9_INCLUDES@
@BIND9_MAKE_INCLUDES@
CINCLUDES = -I. ${DNS_INCLUDES} ${ISC_INCLUDES} ${ISCCFG_INCLUDES}
@@ -41,10 +41,10 @@ LIBS = @LIBS@
SUBDIRS = include
# Alphabetically
OBJS = check.@O@ log.@O@ parser.@O@ version.@O@
OBJS = log.@O@ parser.@O@ version.@O@
# Alphabetically
SRCS = check.c log.c parser.c version.c
SRCS = log.c parser.c version.c
TARGETS = timestamp

View File

@@ -13,7 +13,7 @@
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# $Id: Makefile.in,v 1.25 2001/07/10 18:25:37 gson Exp $
# $Id: Makefile.in,v 1.26 2001/09/20 15:17:00 marka Exp $
srcdir = @srcdir@
VPATH = @srcdir@
@@ -23,7 +23,7 @@ top_srcdir = @top_srcdir@
@LIBLWRES_API@
@BIND9_INCLUDES@
@BIND9_MAKE_INCLUDES@
CINCLUDES = -I${srcdir}/unix/include \
-I. -I./include -I${srcdir}/include ${ISC_INCLUDES}

View File

@@ -13,13 +13,13 @@
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# $Id: Makefile.in,v 1.14 2001/01/09 22:00:34 bwelling Exp $
# $Id: Makefile.in,v 1.15 2001/09/20 15:17:01 marka Exp $
srcdir = @srcdir@
VPATH = @srcdir@
top_srcdir = @top_srcdir@
@BIND9_INCLUDES@
@BIND9_MAKE_INCLUDES@
CINCLUDES = ${DNS_INCLUDES} ${ISC_INCLUDES} ${TEST_INCLUDES}
CDEFINES =