diff --git a/CHANGES b/CHANGES index a4350e8508..cc9a00d594 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +3725. [contrib] Updated zkt and nslint to newest versions, + cleaned up and rearranged the contrib + directory, and added a README. + --- 9.10.0a2 released --- 3724. [bug] win32: Fixed a bug that prevented dig and diff --git a/configure b/configure index 07f0f77f29..d33faf6127 100755 --- a/configure +++ b/configure @@ -20760,7 +20760,7 @@ ac_config_commands="$ac_config_commands chmod" # elsewhere if there's a good reason for doing so. # -ac_config_files="$ac_config_files make/Makefile make/mkdep Makefile bin/Makefile bin/check/Makefile bin/confgen/Makefile bin/confgen/unix/Makefile bin/dig/Makefile bin/dnssec/Makefile bin/named/Makefile bin/named/unix/Makefile bin/nsupdate/Makefile bin/pkcs11/Makefile bin/python/Makefile bin/python/dnssec-checkds.py bin/python/dnssec-coverage.py bin/rndc/Makefile bin/tests/Makefile bin/tests/atomic/Makefile bin/tests/db/Makefile bin/tests/dst/Makefile bin/tests/dst/Kdh.+002+18602.key bin/tests/dst/Kdh.+002+18602.private bin/tests/dst/Kdh.+002+48957.key bin/tests/dst/Kdh.+002+48957.private bin/tests/dst/Ktest.+001+00002.key bin/tests/dst/Ktest.+001+54622.key bin/tests/dst/Ktest.+001+54622.private bin/tests/dst/Ktest.+003+23616.key bin/tests/dst/Ktest.+003+23616.private bin/tests/dst/Ktest.+003+49667.key bin/tests/dst/dst_2_data bin/tests/dst/t2_data_1 bin/tests/dst/t2_data_2 bin/tests/dst/t2_dsasig bin/tests/dst/t2_rsasig bin/tests/hashes/Makefile bin/tests/headerdep_test.sh bin/tests/master/Makefile bin/tests/mem/Makefile bin/tests/names/Makefile bin/tests/net/Makefile bin/tests/pkcs11/Makefile bin/tests/pkcs11/benchmarks/Makefile bin/tests/rbt/Makefile bin/tests/resolver/Makefile bin/tests/sockaddr/Makefile bin/tests/system/Makefile bin/tests/system/conf.sh bin/tests/system/dlz/prereq.sh bin/tests/system/dlzexternal/Makefile bin/tests/system/dlzexternal/ns1/named.conf bin/tests/system/dlzredir/prereq.sh bin/tests/system/filter-aaaa/Makefile bin/tests/system/geoip/Makefile bin/tests/system/inline/checkdsa.sh bin/tests/system/lwresd/Makefile bin/tests/system/rpz/Makefile bin/tests/system/rsabigexponent/Makefile bin/tests/system/tkey/Makefile bin/tests/system/tsiggss/Makefile bin/tests/tasks/Makefile bin/tests/timers/Makefile bin/tests/virtual-time/Makefile bin/tests/virtual-time/conf.sh bin/tools/Makefile contrib/check-secure-delegation.pl contrib/zone-edit.sh doc/Makefile doc/arm/Makefile doc/doxygen/Doxyfile doc/doxygen/Makefile doc/doxygen/doxygen-input-filter doc/misc/Makefile doc/xsl/Makefile doc/xsl/isc-docbook-chunk.xsl doc/xsl/isc-docbook-html.xsl doc/xsl/isc-docbook-latex.xsl doc/xsl/isc-manpage.xsl isc-config.sh lib/Makefile lib/bind9/Makefile lib/bind9/include/Makefile lib/bind9/include/bind9/Makefile lib/dns/Makefile lib/dns/include/Makefile lib/dns/include/dns/Makefile lib/dns/include/dst/Makefile lib/dns/tests/Makefile lib/irs/Makefile lib/irs/include/Makefile lib/irs/include/irs/Makefile lib/irs/include/irs/netdb.h lib/irs/include/irs/platform.h lib/isc/$arch/Makefile lib/isc/$arch/include/Makefile lib/isc/$arch/include/isc/Makefile lib/isc/$thread_dir/Makefile lib/isc/$thread_dir/include/Makefile lib/isc/$thread_dir/include/isc/Makefile lib/isc/Makefile lib/isc/include/Makefile lib/isc/include/isc/Makefile lib/isc/include/isc/platform.h lib/isc/tests/Makefile lib/isc/nls/Makefile lib/isc/unix/Makefile lib/isc/unix/include/Makefile lib/isc/unix/include/isc/Makefile lib/isccc/Makefile lib/isccc/include/Makefile lib/isccc/include/isccc/Makefile lib/isccfg/Makefile lib/isccfg/include/Makefile lib/isccfg/include/isccfg/Makefile lib/iscpk11/Makefile lib/iscpk11/include/Makefile lib/iscpk11/include/iscpk11/Makefile lib/iscpk11/include/pkcs11/Makefile lib/iscpk11/unix/Makefile lib/iscpk11/unix/include/Makefile lib/iscpk11/unix/include/pkcs11/Makefile lib/lwres/Makefile lib/lwres/include/Makefile lib/lwres/include/lwres/Makefile lib/lwres/include/lwres/netdb.h lib/lwres/include/lwres/platform.h lib/lwres/man/Makefile lib/lwres/unix/Makefile lib/lwres/unix/include/Makefile lib/lwres/unix/include/lwres/Makefile lib/tests/Makefile lib/tests/include/Makefile lib/tests/include/tests/Makefile lib/samples/Makefile lib/samples/Makefile-postinstall unit/Makefile unit/unittest.sh" +ac_config_files="$ac_config_files make/Makefile make/mkdep Makefile bin/Makefile bin/check/Makefile bin/confgen/Makefile bin/confgen/unix/Makefile bin/dig/Makefile bin/dnssec/Makefile bin/named/Makefile bin/named/unix/Makefile bin/nsupdate/Makefile bin/pkcs11/Makefile bin/python/Makefile bin/python/dnssec-checkds.py bin/python/dnssec-coverage.py bin/rndc/Makefile bin/tests/Makefile bin/tests/atomic/Makefile bin/tests/db/Makefile bin/tests/dst/Makefile bin/tests/dst/Kdh.+002+18602.key bin/tests/dst/Kdh.+002+18602.private bin/tests/dst/Kdh.+002+48957.key bin/tests/dst/Kdh.+002+48957.private bin/tests/dst/Ktest.+001+00002.key bin/tests/dst/Ktest.+001+54622.key bin/tests/dst/Ktest.+001+54622.private bin/tests/dst/Ktest.+003+23616.key bin/tests/dst/Ktest.+003+23616.private bin/tests/dst/Ktest.+003+49667.key bin/tests/dst/dst_2_data bin/tests/dst/t2_data_1 bin/tests/dst/t2_data_2 bin/tests/dst/t2_dsasig bin/tests/dst/t2_rsasig bin/tests/hashes/Makefile bin/tests/headerdep_test.sh bin/tests/master/Makefile bin/tests/mem/Makefile bin/tests/names/Makefile bin/tests/net/Makefile bin/tests/pkcs11/Makefile bin/tests/pkcs11/benchmarks/Makefile bin/tests/rbt/Makefile bin/tests/resolver/Makefile bin/tests/sockaddr/Makefile bin/tests/system/Makefile bin/tests/system/conf.sh bin/tests/system/dlz/prereq.sh bin/tests/system/dlzexternal/Makefile bin/tests/system/dlzexternal/ns1/named.conf bin/tests/system/dlzredir/prereq.sh bin/tests/system/filter-aaaa/Makefile bin/tests/system/geoip/Makefile bin/tests/system/inline/checkdsa.sh bin/tests/system/lwresd/Makefile bin/tests/system/rpz/Makefile bin/tests/system/rsabigexponent/Makefile bin/tests/system/tkey/Makefile bin/tests/system/tsiggss/Makefile bin/tests/tasks/Makefile bin/tests/timers/Makefile bin/tests/virtual-time/Makefile bin/tests/virtual-time/conf.sh bin/tools/Makefile contrib/scripts/check-secure-delegation.pl contrib/scripts/zone-edit.sh doc/Makefile doc/arm/Makefile doc/doxygen/Doxyfile doc/doxygen/Makefile doc/doxygen/doxygen-input-filter doc/misc/Makefile doc/xsl/Makefile doc/xsl/isc-docbook-chunk.xsl doc/xsl/isc-docbook-html.xsl doc/xsl/isc-docbook-latex.xsl doc/xsl/isc-manpage.xsl isc-config.sh lib/Makefile lib/bind9/Makefile lib/bind9/include/Makefile lib/bind9/include/bind9/Makefile lib/dns/Makefile lib/dns/include/Makefile lib/dns/include/dns/Makefile lib/dns/include/dst/Makefile lib/dns/tests/Makefile lib/irs/Makefile lib/irs/include/Makefile lib/irs/include/irs/Makefile lib/irs/include/irs/netdb.h lib/irs/include/irs/platform.h lib/isc/$arch/Makefile lib/isc/$arch/include/Makefile lib/isc/$arch/include/isc/Makefile lib/isc/$thread_dir/Makefile lib/isc/$thread_dir/include/Makefile lib/isc/$thread_dir/include/isc/Makefile lib/isc/Makefile lib/isc/include/Makefile lib/isc/include/isc/Makefile lib/isc/include/isc/platform.h lib/isc/tests/Makefile lib/isc/nls/Makefile lib/isc/unix/Makefile lib/isc/unix/include/Makefile lib/isc/unix/include/isc/Makefile lib/isccc/Makefile lib/isccc/include/Makefile lib/isccc/include/isccc/Makefile lib/isccfg/Makefile lib/isccfg/include/Makefile lib/isccfg/include/isccfg/Makefile lib/iscpk11/Makefile lib/iscpk11/include/Makefile lib/iscpk11/include/iscpk11/Makefile lib/iscpk11/include/pkcs11/Makefile lib/iscpk11/unix/Makefile lib/iscpk11/unix/include/Makefile lib/iscpk11/unix/include/pkcs11/Makefile lib/lwres/Makefile lib/lwres/include/Makefile lib/lwres/include/lwres/Makefile lib/lwres/include/lwres/netdb.h lib/lwres/include/lwres/platform.h lib/lwres/man/Makefile lib/lwres/unix/Makefile lib/lwres/unix/include/Makefile lib/lwres/unix/include/lwres/Makefile lib/tests/Makefile lib/tests/include/Makefile lib/tests/include/tests/Makefile lib/samples/Makefile lib/samples/Makefile-postinstall unit/Makefile unit/unittest.sh" # @@ -21819,8 +21819,8 @@ do "bin/tests/virtual-time/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/virtual-time/Makefile" ;; "bin/tests/virtual-time/conf.sh") CONFIG_FILES="$CONFIG_FILES bin/tests/virtual-time/conf.sh" ;; "bin/tools/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tools/Makefile" ;; - "contrib/check-secure-delegation.pl") CONFIG_FILES="$CONFIG_FILES contrib/check-secure-delegation.pl" ;; - "contrib/zone-edit.sh") CONFIG_FILES="$CONFIG_FILES contrib/zone-edit.sh" ;; + "contrib/scripts/check-secure-delegation.pl") CONFIG_FILES="$CONFIG_FILES contrib/scripts/check-secure-delegation.pl" ;; + "contrib/scripts/zone-edit.sh") CONFIG_FILES="$CONFIG_FILES contrib/scripts/zone-edit.sh" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/arm/Makefile") CONFIG_FILES="$CONFIG_FILES doc/arm/Makefile" ;; "doc/doxygen/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/doxygen/Doxyfile" ;; diff --git a/configure.in b/configure.in index ed69c6a8aa..3f878cbd17 100644 --- a/configure.in +++ b/configure.in @@ -4030,8 +4030,8 @@ AC_CONFIG_FILES([ bin/tests/virtual-time/Makefile bin/tests/virtual-time/conf.sh bin/tools/Makefile - contrib/check-secure-delegation.pl - contrib/zone-edit.sh + contrib/scripts/check-secure-delegation.pl + contrib/scripts/zone-edit.sh doc/Makefile doc/arm/Makefile doc/doxygen/Doxyfile diff --git a/contrib/README b/contrib/README new file mode 100644 index 0000000000..b6f1b3e21b --- /dev/null +++ b/contrib/README @@ -0,0 +1,53 @@ +This directory contains contributed scripts, tools, libraries, +and other useful additions to BIND 9. It includes: + + - scripts/ + + Assorted useful scripts, including 'nanny' which monitors + named and restarts it in the event of a crash, 'zone-edit' + which enables editing of a dynamic zone, and others + + - queryperf/ + + A DNS query performance testing tool + + - dane/ + + mkdane.sh generates TLSA records for use with DNS-based + Authentication of Named Entities (DANE) + + - dlz/modules + + Dynamically linkable DLZ modules that can be configured into + named at runtime, enabling access to external data sources including + LDAP, MySQL, Berkeley DB, perl scripts, etc + + - dlz/drivers + + Old-style DLZ drivers that can be linked into named at compile + time. (These are no longer actively maintained and are expected + to be deprecated eventually.) + + - sdb/ + + SDB drivers: another mechanism for accessing external data + sources + + - idn/ + + Contains source for 'idnkit', which provides support for + Internationalized Domain Name processing. + + - nslint-3.0a2 + + A lint-like tool for checking DNS files + + - query-loc-0.4.0 + + A tool for retrieving location information stored in the DNS + + - zkt-1.1.2 + + DNSSEC Zone Key Tools, an alternate method for managing keys + and signatures + diff --git a/contrib/linux/coredump-patch b/contrib/linux/coredump-patch deleted file mode 100644 index d1792901ad..0000000000 --- a/contrib/linux/coredump-patch +++ /dev/null @@ -1,12 +0,0 @@ ---- binfmt_elf.c.old Mon Dec 11 10:49:57 2000 -+++ binfmt_elf.c Wed Nov 1 13:05:23 2000 -@@ -1091,7 +1091,8 @@ - - if (!current->dumpable || - limit < ELF_EXEC_PAGESIZE || -- atomic_read(¤t->mm->count) != 1) -+/* atomic_read(¤t->mm->count) != 1) */ -+ test_and_set_bit(31, ¤t->mm->def_flags) != 0) - return 0; - current->dumpable = 0; - diff --git a/contrib/nslint-2.1a3/VERSION b/contrib/nslint-2.1a3/VERSION deleted file mode 100644 index 375279c6d6..0000000000 --- a/contrib/nslint-2.1a3/VERSION +++ /dev/null @@ -1 +0,0 @@ -2.1a3 diff --git a/contrib/nslint-2.1a3/config.guess b/contrib/nslint-2.1a3/config.guess deleted file mode 100644 index e9e44559f8..0000000000 --- a/contrib/nslint-2.1a3/config.guess +++ /dev/null @@ -1,693 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc. -# -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Written by Per Bothner . -# The master version of this file is at the FSF in /home/gd/gnu/lib. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit system type (host/target name). -# -# Only a few systems have been added to this list; please add others -# (but try to keep the structure clean). -# - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 8/24/94.) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - alpha:OSF1:*:*) - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'` - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-cbm-sysv4 - exit 0;; - amiga:NetBSD:*:*) - echo m68k-cbm-netbsd${UNAME_RELEASE} - exit 0 ;; - amiga:OpenBSD:*:*) - echo m68k-cbm-openbsd${UNAME_RELEASE} - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - Pyramid*:OSx*:*:*|MIS*:OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - NILE:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit 0 ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; - atari*:NetBSD:*:*) - echo m68k-atari-netbsd${UNAME_RELEASE} - exit 0 ;; - atari*:OpenBSD:*:*) - echo m68k-atari-openbsd${UNAME_RELEASE} - exit 0 ;; - sun3*:NetBSD:*:*) - echo m68k-sun-netbsd${UNAME_RELEASE} - exit 0 ;; - sun3*:OpenBSD:*:*) - echo m68k-sun-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:NetBSD:*:*) - echo m68k-apple-netbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-apple-openbsd${UNAME_RELEASE} - exit 0 ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - sed 's/^ //' << EOF >dummy.c - int main (argc, argv) int argc; char **argv; { - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - ${CC-cc} dummy.c -o dummy \ - && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ - -o ${TARGET_BINARY_INTERFACE}x = x ] ; then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else echo i586-dg-dgux${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i?86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - sed 's/^ //' << EOF >dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:4) - if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=4.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[3478]??:HP-UX:*:*) - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;; - 9000/8?? ) HP_ARCH=hppa1.0 ;; - esac - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - sed 's/^ //' << EOF >dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - i?86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*X-MP:*:*:*) - echo xmp-cray-unicos - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} - exit 0 ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ - exit 0 ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} - exit 0 ;; - CRAY-2:*:*:*) - echo cray2-cray-unicos - exit 0 ;; - F300:UNIX_System_V:*:*) - FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; - F301:UNIX_System_V:*:*) - echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` - exit 0 ;; - hp3[0-9][05]:NetBSD:*:*) - echo m68k-hp-netbsd${UNAME_RELEASE} - exit 0 ;; - hp3[0-9][05]:OpenBSD:*:*) - echo m68k-hp-openbsd${UNAME_RELEASE} - exit 0 ;; - i?86:BSD/386:*:* | *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; - *:NetBSD:*:*) - echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - i*:CYGWIN*:*) - echo i386-pc-cygwin32 - exit 0 ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin32 - exit 0 ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - *:GNU:*:*) - echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - *:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. - ld_help_string=`ld --help 2>&1` - if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i.86"; then - echo "${UNAME_MACHINE}-pc-linux-gnu" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86linux"; then - echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86coff"; then - echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then - echo "${UNAME_MACHINE}-unknown-linux-gnu" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf32ppc"; then - echo "powerpc-unknown-linux-gnu" ; exit 0 - elif test "${UNAME_MACHINE}" = "alpha" ; then - echo alpha-unknown-linux-gnu ; exit 0 - elif test "${UNAME_MACHINE}" = "sparc" ; then - echo sparc-unknown-linux-gnu ; exit 0 - else - # Either a pre-BFD a.out linker (linux-gnuoldld) or one that does not give us - # useful --help. Gcc wants to distinguish between linux-gnuoldld and linux-gnuaout. - test ! -d /usr/lib/ldscripts/. \ - && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 - # Determine whether the default compiler is a.out or elf - cat >dummy.c </dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - fi ;; -# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions -# are messed up and put the nodename in both sysname and nodename. - i?86:DYNIX/ptx:4*:*) - echo i386-sequent-sysv4 - exit 0 ;; - i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} - fi - exit 0 ;; - i?86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit 0 ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - i?86:LynxOS:2.*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit 0 ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit 0 ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; - R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; - PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -cat >dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -#if !defined (ultrix) - printf ("vax-dec-bsd\n"); exit (0); -#else - printf ("vax-dec-ultrix\n"); exit (0); -#endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 -rm -f dummy.c dummy - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -#echo '(Unable to guess system type)' 1>&2 - -exit 1 diff --git a/contrib/nslint-2.1a3/configure b/contrib/nslint-2.1a3/configure deleted file mode 100644 index db5c53e8df..0000000000 --- a/contrib/nslint-2.1a3/configure +++ /dev/null @@ -1,1905 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.13 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: -ac_help="$ac_help - --without-gcc don't use gcc" - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 - -ac_prev= -for ac_option -do - - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$ac_optarg" ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir="$ac_optarg" ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.13" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=nslint.c - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -ac_exeext= -ac_objext=o -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - - -# Do some error checking and defaulting for the host and target type. -# The inputs are: -# configure --host=HOST --target=TARGET --build=BUILD NONOPT -# -# The rules are: -# 1. You are not allowed to specify --host, --target, and nonopt at the -# same time. -# 2. Host defaults to nonopt. -# 3. If nonopt is not specified, then host defaults to the current host, -# as determined by config.guess. -# 4. Target and build default to nonopt. -# 5. If nonopt is not specified, then target and build default to host. - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -case $host---$target---$nonopt in -NONE---*---* | *---NONE---* | *---*---NONE) ;; -*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;; -esac - - -# Make sure we can run config.sub. -if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : -else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } -fi - -echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:575: checking host system type" >&5 - -host_alias=$host -case "$host_alias" in -NONE) - case $nonopt in - NONE) - if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : - else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } - fi ;; - *) host_alias=$nonopt ;; - esac ;; -esac - -host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` -host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$host" 1>&6 - -echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:596: checking target system type" >&5 - -target_alias=$target -case "$target_alias" in -NONE) - case $nonopt in - NONE) target_alias=$host_alias ;; - *) target_alias=$nonopt ;; - esac ;; -esac - -target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias` -target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$target" 1>&6 - -echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:614: checking build system type" >&5 - -build_alias=$build -case "$build_alias" in -NONE) - case $nonopt in - NONE) build_alias=$host_alias ;; - *) build_alias=$nonopt ;; - esac ;; -esac - -build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias` -build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$build" 1>&6 - -test "$host_alias" != "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - - -umask 002 - -if test -z "$PWD" ; then - PWD=`pwd` -fi - - - - - - # Check whether --with-gcc or --without-gcc was given. -if test "${with_gcc+set}" = set; then - withval="$with_gcc" - : -fi - - V_CCOPT="-O" - V_INCLS="" - if test "${srcdir}" != "." ; then - V_INCLS="-I\$\(srcdir\)" - fi - if test "${CFLAGS+set}" = set; then - LBL_CFLAGS="$CFLAGS" - fi - if test -z "$CC" ; then - case "$target_os" in - - bsdi*) - # Extract the first word of "shlicc2", so it can be a program name with args. -set dummy shlicc2; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:668: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_SHLICC2'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$SHLICC2"; then - ac_cv_prog_SHLICC2="$SHLICC2" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_SHLICC2="yes" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_SHLICC2" && ac_cv_prog_SHLICC2="no" -fi -fi -SHLICC2="$ac_cv_prog_SHLICC2" -if test -n "$SHLICC2"; then - echo "$ac_t""$SHLICC2" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - if test $SHLICC2 = yes ; then - CC=shlicc2 - export CC - fi - ;; - esac - fi - if test -z "$CC" -a "$with_gcc" = no ; then - CC=cc - export CC - fi - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:709: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="gcc" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:739: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_prog_rejected=no - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - break - fi - done - IFS="$ac_save_ifs" -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# -gt 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - set dummy "$ac_dir/$ac_word" "$@" - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - if test -z "$CC"; then - case "`uname -s`" in - *win32* | *WIN32*) - # Extract the first word of "cl", so it can be a program name with args. -set dummy cl; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:790: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="cl" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - ;; - esac - fi - test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } -fi - -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:822: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -cat > conftest.$ac_ext << EOF - -#line 833 "configure" -#include "confdefs.h" - -main(){return(0);} -EOF -if { (eval echo configure:838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - ac_cv_prog_cc_works=yes - # If we can't run a trivial program, we are probably using a cross compiler. - if (./conftest; exit) 2>/dev/null; then - ac_cv_prog_cc_cross=no - else - ac_cv_prog_cc_cross=yes - fi -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_prog_cc_works=no -fi -rm -fr conftest* -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 -if test $ac_cv_prog_cc_works = no; then - { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } -fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:864: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 -echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 -cross_compiling=$ac_cv_prog_cc_cross - -echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:869: checking whether we are using GNU C" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes -else - ac_cv_prog_gcc=no -fi -fi - -echo "$ac_t""$ac_cv_prog_gcc" 1>&6 - -if test $ac_cv_prog_gcc = yes; then - GCC=yes -else - GCC= -fi - -ac_test_CFLAGS="${CFLAGS+set}" -ac_save_CFLAGS="$CFLAGS" -CFLAGS= -echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:897: checking whether ${CC-cc} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.c -if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then - ac_cv_prog_cc_g=yes -else - ac_cv_prog_cc_g=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi - - if test "$GCC" != yes ; then - echo $ac_n "checking that $CC handles ansi prototypes""... $ac_c" 1>&6 -echo "configure:930: checking that $CC handles ansi prototypes" >&5 - if eval "test \"`echo '$''{'ac_cv_lbl_cc_ansi_prototypes'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int main() { -int frob(int, char *) -; return 0; } -EOF -if { (eval echo configure:942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_lbl_cc_ansi_prototypes=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_lbl_cc_ansi_prototypes=no -fi -rm -f conftest* -fi - - echo "$ac_t""$ac_cv_lbl_cc_ansi_prototypes" 1>&6 - if test $ac_cv_lbl_cc_ansi_prototypes = no ; then - case "$target_os" in - - hpux*) - echo $ac_n "checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)""... $ac_c" 1>&6 -echo "configure:960: checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)" >&5 - savedcflags="$CFLAGS" - CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS" - if eval "test \"`echo '$''{'ac_cv_lbl_cc_hpux_cc_aa'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int main() { -int frob(int, char *) -; return 0; } -EOF -if { (eval echo configure:974: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_lbl_cc_hpux_cc_aa=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_lbl_cc_hpux_cc_aa=no -fi -rm -f conftest* -fi - - echo "$ac_t""$ac_cv_lbl_cc_hpux_cc_aa" 1>&6 - if test $ac_cv_lbl_cc_hpux_cc_aa = no ; then - { echo "configure: error: see the INSTALL doc for more info" 1>&2; exit 1; } - fi - CFLAGS="$savedcflags" - V_CCOPT="-Aa $V_CCOPT" - cat >> confdefs.h <<\EOF -#define _HPUX_SOURCE 1 -EOF - - ;; - - *) - { echo "configure: error: see the INSTALL doc for more info" 1>&2; exit 1; } - ;; - esac - fi - V_INCLS="$V_INCLS -I/usr/local/include" - LDFLAGS="$LDFLAGS -L/usr/local/lib" - - case "$target_os" in - - irix*) - V_CCOPT="$V_CCOPT -xansi -signed -g3" - ;; - - osf*) - V_CCOPT="$V_CCOPT -std1 -g3" - ;; - - ultrix*) - echo $ac_n "checking that Ultrix $CC hacks const in prototypes""... $ac_c" 1>&6 -echo "configure:1018: checking that Ultrix $CC hacks const in prototypes" >&5 - if eval "test \"`echo '$''{'ac_cv_lbl_cc_const_proto'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int main() { -struct a { int b; }; - void c(const struct a *) -; return 0; } -EOF -if { (eval echo configure:1031: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_lbl_cc_const_proto=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_lbl_cc_const_proto=no -fi -rm -f conftest* -fi - - echo "$ac_t""$ac_cv_lbl_cc_const_proto" 1>&6 - if test $ac_cv_lbl_cc_const_proto = no ; then - cat >> confdefs.h <<\EOF -#define const -EOF - - fi - ;; - esac - fi - - -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1056: checking how to run the C preprocessor" >&5 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1077: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1094: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -nologo -E" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1111: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP=/lib/cpp -fi -rm -f conftest* -fi -rm -f conftest* -fi -rm -f conftest* - ac_cv_prog_CPP="$CPP" -fi - CPP="$ac_cv_prog_CPP" -else - ac_cv_prog_CPP="$CPP" -fi -echo "$ac_t""$CPP" 1>&6 - -for ac_hdr in fcntl.h malloc.h memory.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1139: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1149: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - - -for ac_func in strerror -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1179: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:1207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" -fi -done - - -echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6 -echo "configure:1234: checking for main in -lnsl" >&5 -ac_lib_var=`echo nsl'_'main | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lnsl $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_lib=HAVE_LIB`echo nsl | sed -e 's/[^a-zA-Z0-9_]/_/g' \ - -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` - cat >> confdefs.h <&6 -fi - -echo $ac_n "checking for main in -lsocket""... $ac_c" 1>&6 -echo "configure:1277: checking for main in -lsocket" >&5 -ac_lib_var=`echo socket'_'main | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lsocket $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/[^a-zA-Z0-9_]/_/g' \ - -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` - cat >> confdefs.h <&6 -fi - - -echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1321: checking for ANSI C header files" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#include -#include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1334: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - ac_cv_header_stdc=yes -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -if test "$cross_compiling" = yes; then - : -else - cat > conftest.$ac_ext < -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int main () { int i; for (i = 0; i < 256; i++) -if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); -exit (0); } - -EOF -if { (eval echo configure:1401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_header_stdc=no -fi -rm -fr conftest* -fi - -fi -fi - -echo "$ac_t""$ac_cv_header_stdc" 1>&6 -if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF - -fi - -echo $ac_n "checking for int32_t""... $ac_c" 1>&6 -echo "configure:1425: checking for int32_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_int32_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])int32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_int32_t=yes -else - rm -rf conftest* - ac_cv_type_int32_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_int32_t" 1>&6 -if test $ac_cv_type_int32_t = no; then - cat >> confdefs.h <<\EOF -#define int32_t int -EOF - -fi - -echo $ac_n "checking for u_int32_t""... $ac_c" 1>&6 -echo "configure:1458: checking for u_int32_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_u_int32_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])u_int32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_u_int32_t=yes -else - rm -rf conftest* - ac_cv_type_u_int32_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_u_int32_t" 1>&6 -if test $ac_cv_type_u_int32_t = no; then - cat >> confdefs.h <<\EOF -#define u_int32_t u_int -EOF - -fi - - -rm -f os-proto.h - if test "${LBL_CFLAGS+set}" = set; then - V_CCOPT="$V_CCOPT ${LBL_CFLAGS}" - fi - if test -f .devel ; then - if test "$GCC" = yes ; then - if test "$SHLICC2" = yes ; then - ac_cv_lbl_gcc_vers=2 - V_CCOPT="`echo $V_CCOPT | sed -e 's/-O/-O2/'`" - else - echo $ac_n "checking gcc version""... $ac_c" 1>&6 -echo "configure:1502: checking gcc version" >&5 - if eval "test \"`echo '$''{'ac_cv_lbl_gcc_vers'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_cv_lbl_gcc_vers=`$CC --version 2>&1 | \ - sed -e 's/\..*//'` -fi - - echo "$ac_t""$ac_cv_lbl_gcc_vers" 1>&6 - if test $ac_cv_lbl_gcc_vers -gt 1 ; then - V_CCOPT="`echo $V_CCOPT | sed -e 's/-O/-O2/'`" - fi - fi - if test "${LBL_CFLAGS+set}" != set; then - if test "$ac_cv_prog_cc_g" = yes ; then - V_CCOPT="-g $V_CCOPT" - fi - V_CCOPT="$V_CCOPT -Wall" - if test $ac_cv_lbl_gcc_vers -gt 1 ; then - V_CCOPT="$V_CCOPT -Wmissing-prototypes -Wstrict-prototypes" - fi - fi - else - case "$target_os" in - - irix6*) - V_CCOPT="$V_CCOPT -fullwarn -n32" - ;; - - *) - ;; - esac - fi - os=`echo $target_os | sed -e 's/\([0-9][0-9]*\)[^0-9].*$/\1/'` - name="lbl/os-$os.h" - if test -f $name ; then - ln -s $name os-proto.h - cat >> confdefs.h <<\EOF -#define HAVE_OS_PROTO_H 1 -EOF - - else - echo "configure: warning: can't find $name" 1>&2 - fi - fi - -if test -r lbl/gnuc.h ; then - rm -f gnuc.h - ln -s lbl/gnuc.h gnuc.h -fi - - - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1568: checking for a BSD compatible install" >&5 -if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" - for ac_dir in $PATH; do - # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - if test -f $ac_dir/$ac_prog; then - if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - IFS="$ac_save_IFS" - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL="$ac_cv_path_install" - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL="$ac_install_sh" - fi -fi -echo "$ac_t""$INSTALL" 1>&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs - - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS </dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.13" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir -ac_given_INSTALL="$INSTALL" - -trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@host@%$host%g -s%@host_alias@%$host_alias%g -s%@host_cpu@%$host_cpu%g -s%@host_vendor@%$host_vendor%g -s%@host_os@%$host_os%g -s%@target@%$target%g -s%@target_alias@%$target_alias%g -s%@target_cpu@%$target_cpu%g -s%@target_vendor@%$target_vendor%g -s%@target_os@%$target_os%g -s%@build@%$build%g -s%@build_alias@%$build_alias%g -s%@build_cpu@%$build_cpu%g -s%@build_vendor@%$build_vendor%g -s%@build_os@%$build_os%g -s%@SHLICC2@%$SHLICC2%g -s%@CC@%$CC%g -s%@CPP@%$CPP%g -s%@LIBOBJS@%$LIBOBJS%g -s%@V_CCOPT@%$V_CCOPT%g -s%@V_INCLS@%$V_INCLS%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g -s%@INSTALL_DATA@%$INSTALL_DATA%g - -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# Split the substitutions into bite-sized pieces for seds with -# small command number limits, like on Digital OSF/1 and HP-UX. -ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # Line after last line for current file. -ac_more_lines=: -ac_sed_cmds="" -while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` - fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF - -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - - -if test -f .devel ; then - make depend -fi -exit 0 diff --git a/contrib/nslint-2.1a3/configure.in b/contrib/nslint-2.1a3/configure.in deleted file mode 100644 index 2bbb61450f..0000000000 --- a/contrib/nslint-2.1a3/configure.in +++ /dev/null @@ -1,47 +0,0 @@ -dnl @(#) $Header: /u0/home/explorer/proj/ISC/git-conversion/cvsroot/bind9/contrib/nslint-2.1a3/configure.in,v 1.1 2001/12/21 04:12:03 marka Exp $ (LBL) -dnl -dnl Copyright (c) 1995, 1996, 1997 -dnl The Regents of the University of California. All rights reserved. -dnl -dnl Process this file with autoconf to produce a configure script. -dnl - -AC_INIT(nslint.c) - -AC_CANONICAL_SYSTEM - -umask 002 - -if test -z "$PWD" ; then - PWD=`pwd` -fi - -AC_LBL_C_INIT(V_CCOPT, V_INCLS) - -AC_CHECK_HEADERS(fcntl.h malloc.h memory.h) - -AC_REPLACE_FUNCS(strerror) -AC_CHECK_LIB(nsl, main) -AC_CHECK_LIB(socket, main) - -AC_CHECK_TYPE(int32_t, int) -AC_CHECK_TYPE(u_int32_t, u_int) - -AC_LBL_DEVEL(V_CCOPT) - -if test -r lbl/gnuc.h ; then - rm -f gnuc.h - ln -s lbl/gnuc.h gnuc.h -fi - -AC_SUBST(V_CCOPT) -AC_SUBST(V_INCLS) - -AC_PROG_INSTALL - -AC_OUTPUT(Makefile) - -if test -f .devel ; then - make depend -fi -exit 0 diff --git a/contrib/nslint-2.1a3/install-sh b/contrib/nslint-2.1a3/install-sh deleted file mode 100644 index ebc66913e9..0000000000 --- a/contrib/nslint-2.1a3/install-sh +++ /dev/null @@ -1,250 +0,0 @@ -#! /bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# Permission to use, copy, modify, distribute, and sell this software and its -# documentation for any purpose is hereby granted without fee, provided that -# the above copyright notice appear in all copies and that both that -# copyright notice and this permission notice appear in supporting -# documentation, and that the name of M.I.T. not be used in advertising or -# publicity pertaining to distribution of the software without specific, -# written prior permission. M.I.T. makes no representations about the -# suitability of this software for any purpose. It is provided "as is" -# without express or implied warranty. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/contrib/nslint-2.1a3/lbl/os-irix5.h b/contrib/nslint-2.1a3/lbl/os-irix5.h deleted file mode 100644 index 238bdd8079..0000000000 --- a/contrib/nslint-2.1a3/lbl/os-irix5.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that: (1) source code distributions - * retain the above copyright notice and this paragraph in its entirety, (2) - * distributions including binary code include the above copyright notice and - * this paragraph in its entirety in the documentation or other materials - * provided with the distribution, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * @(#) $Header: /u0/home/explorer/proj/ISC/git-conversion/cvsroot/bind9/contrib/nslint-2.1a3/lbl/os-irix5.h,v 1.1 2001/12/21 04:12:05 marka Exp $ (LBL) - */ - -/* Prototypes missing in IRIX 5 */ -#ifdef __STDC__ -struct ether_addr; -#endif -int ether_hostton(char *, struct ether_addr *); -char *ether_ntoa(struct ether_addr *); -#ifdef __STDC__ -struct utmp; -#endif -void login(struct utmp *); -int setenv(const char *, const char *, int); -int sigblock(int); -int sigsetmask(int); -int snprintf(char *, size_t, const char *, ...); -time_t time(time_t *); diff --git a/contrib/nslint-2.1a3/lbl/os-osf3.h b/contrib/nslint-2.1a3/lbl/os-osf3.h deleted file mode 100644 index b3f19649c1..0000000000 --- a/contrib/nslint-2.1a3/lbl/os-osf3.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that: (1) source code distributions - * retain the above copyright notice and this paragraph in its entirety, (2) - * distributions including binary code include the above copyright notice and - * this paragraph in its entirety in the documentation or other materials - * provided with the distribution, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * @(#) $Header: /u0/home/explorer/proj/ISC/git-conversion/cvsroot/bind9/contrib/nslint-2.1a3/lbl/os-osf3.h,v 1.1 2001/12/21 04:12:05 marka Exp $ (LBL) - */ - -/* Prototypes missing in osf3 */ -int flock(int, int); -int ioctl(int, int, caddr_t); -int iruserok(u_int, int, char *, char *); -int pfopen(char *, int); -int rcmd(char **, u_short, const char *, const char *, const char *, int *); -int rresvport(int *); -int snprintf(char *, size_t, const char *, ...); -void sync(void); diff --git a/contrib/nslint-2.1a3/lbl/os-solaris2.h b/contrib/nslint-2.1a3/lbl/os-solaris2.h deleted file mode 100644 index ba91e71235..0000000000 --- a/contrib/nslint-2.1a3/lbl/os-solaris2.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 1993, 1994, 1995, 1996, 1997, 2000 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that: (1) source code distributions - * retain the above copyright notice and this paragraph in its entirety, (2) - * distributions including binary code include the above copyright notice and - * this paragraph in its entirety in the documentation or other materials - * provided with the distribution, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * @(#) $Id: os-solaris2.h,v 1.1 2001/12/21 04:12:05 marka Exp $ (LBL) - */ - -/* Prototypes missing in SunOS 5 */ -int daemon(int, int); -int dn_expand(const u_char *, const u_char *, const u_char *, char *, int); -int dn_skipname(const u_char *, const u_char *); -int flock(int, int); -int getdtablesize(void); -int gethostname(char *, int); -int getpagesize(void); -char *getusershell(void); -char *getwd(char *); -int iruserok(u_int, int, char *, char *); -#ifdef __STDC__ -struct utmp; -void login(struct utmp *); -#endif -int logout(const char *); -int res_query(const char *, int, int, u_char *, int); -int setenv(const char *, const char *, int); -#if defined(_STDIO_H) && defined(HAVE_SETLINEBUF) -int setlinebuf(FILE *); -#endif -int sigblock(int); -int sigsetmask(int); -char *strerror(int); -int snprintf(char *, size_t, const char *, ...); -int strcasecmp(const char *, const char *); -void unsetenv(const char *); diff --git a/contrib/nslint-2.1a3/lbl/os-sunos4.h b/contrib/nslint-2.1a3/lbl/os-sunos4.h deleted file mode 100644 index 47b022a89a..0000000000 --- a/contrib/nslint-2.1a3/lbl/os-sunos4.h +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright (c) 1989, 1990, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that: (1) source code distributions - * retain the above copyright notice and this paragraph in its entirety, (2) - * distributions including binary code include the above copyright notice and - * this paragraph in its entirety in the documentation or other materials - * provided with the distribution, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * @(#) $Header: /u0/home/explorer/proj/ISC/git-conversion/cvsroot/bind9/contrib/nslint-2.1a3/lbl/os-sunos4.h,v 1.1 2001/12/21 04:12:05 marka Exp $ (LBL) - */ - -/* Prototypes missing in SunOS 4 */ -#ifdef FILE -int _filbuf(FILE *); -int _flsbuf(u_char, FILE *); -int fclose(FILE *); -int fflush(FILE *); -int fgetc(FILE *); -int fprintf(FILE *, const char *, ...); -int fputc(int, FILE *); -int fputs(const char *, FILE *); -u_int fread(void *, u_int, u_int, FILE *); -int fseek(FILE *, long, int); -u_int fwrite(const void *, u_int, u_int, FILE *); -int pclose(FILE *); -void rewind(FILE *); -void setbuf(FILE *, char *); -int setlinebuf(FILE *); -int ungetc(int, FILE *); -int vfprintf(FILE *, const char *, ...); -int vprintf(const char *, ...); -#endif - -#if __GNUC__ <= 1 -int read(int, char *, u_int); -int write(int, char *, u_int); -#endif - -long a64l(const char *); -#ifdef __STDC__ -struct sockaddr; -#endif -int accept(int, struct sockaddr *, int *); -int bind(int, struct sockaddr *, int); -int bcmp(const void *, const void *, u_int); -void bcopy(const void *, void *, u_int); -void bzero(void *, int); -int chroot(const char *); -int close(int); -void closelog(void); -int connect(int, struct sockaddr *, int); -char *crypt(const char *, const char *); -int daemon(int, int); -int fchmod(int, int); -int fchown(int, int, int); -void endgrent(void); -void endpwent(void); -void endservent(void); -#ifdef __STDC__ -struct ether_addr; -#endif -struct ether_addr *ether_aton(const char *); -int flock(int, int); -#ifdef __STDC__ -struct stat; -#endif -int fstat(int, struct stat *); -#ifdef __STDC__ -struct statfs; -#endif -int fstatfs(int, struct statfs *); -int fsync(int); -#ifdef __STDC__ -struct timeb; -#endif -int ftime(struct timeb *); -int ftruncate(int, off_t); -int getdtablesize(void); -long gethostid(void); -int gethostname(char *, int); -int getopt(int, char * const *, const char *); -int getpagesize(void); -char *getpass(char *); -int getpeername(int, struct sockaddr *, int *); -int getpriority(int, int); -#ifdef __STDC__ -struct rlimit; -#endif -int getrlimit(int, struct rlimit *); -int getsockname(int, struct sockaddr *, int *); -int getsockopt(int, int, int, char *, int *); -#ifdef __STDC__ -struct timeval; -struct timezone; -#endif -int gettimeofday(struct timeval *, struct timezone *); -char *getusershell(void); -char *getwd(char *); -int initgroups(const char *, int); -int ioctl(int, int, caddr_t); -int iruserok(u_long, int, char *, char *); -int isatty(int); -int killpg(int, int); -int listen(int, int); -#ifdef __STDC__ -struct utmp; -#endif -void login(struct utmp *); -int logout(const char *); -off_t lseek(int, off_t, int); -int lstat(const char *, struct stat *); -int mkstemp(char *); -char *mktemp(char *); -int munmap(caddr_t, int); -void openlog(const char *, int, int); -void perror(const char *); -int printf(const char *, ...); -int puts(const char *); -long random(void); -int readlink(const char *, char *, int); -#ifdef __STDC__ -struct iovec; -#endif -int readv(int, struct iovec *, int); -int recv(int, char *, u_int, int); -int recvfrom(int, char *, u_int, int, struct sockaddr *, int *); -int rename(const char *, const char *); -int rcmd(char **, u_short, char *, char *, char *, int *); -int rresvport(int *); -int send(int, char *, u_int, int); -int sendto(int, char *, u_int, int, struct sockaddr *, int); -int setenv(const char *, const char *, int); -int seteuid(int); -int setpriority(int, int, int); -int select(int, fd_set *, fd_set *, fd_set *, struct timeval *); -int setpgrp(int, int); -void setpwent(void); -int setrlimit(int, struct rlimit *); -void setservent(int); -int setsockopt(int, int, int, char *, int); -int shutdown(int, int); -int sigblock(int); -void (*signal (int, void (*) (int))) (int); -int sigpause(int); -int sigsetmask(int); -#ifdef __STDC__ -struct sigvec; -#endif -int sigvec(int, struct sigvec *, struct sigvec*); -int snprintf(char *, size_t, const char *, ...); -int socket(int, int, int); -int socketpair(int, int, int, int *); -int symlink(const char *, const char *); -void srandom(int); -int sscanf(char *, const char *, ...); -int stat(const char *, struct stat *); -int statfs(char *, struct statfs *); -char *strerror(int); -int strcasecmp(const char *, const char *); -#ifdef __STDC__ -struct tm; -#endif -int strftime(char *, int, char *, struct tm *); -int strncasecmp(const char *, const char *, int); -long strtol(const char *, char **, int); -void sync(void); -void syslog(int, const char *, ...); -int system(const char *); -long tell(int); -time_t time(time_t *); -char *timezone(int, int); -int tolower(int); -int toupper(int); -int truncate(char *, off_t); -void unsetenv(const char *); -int vfork(void); -int vsprintf(char *, const char *, ...); -int writev(int, struct iovec *, int); -#ifdef __STDC__ -struct rusage; -#endif -int utimes(const char *, struct timeval *); -#if __GNUC__ <= 1 -int wait(int *); -pid_t wait3(int *, int, struct rusage *); -#endif - -/* Ugly signal hacking */ -#ifdef SIG_ERR -#undef SIG_ERR -#define SIG_ERR (void (*)(int))-1 -#undef SIG_DFL -#define SIG_DFL (void (*)(int))0 -#undef SIG_IGN -#define SIG_IGN (void (*)(int))1 - -#ifdef KERNEL -#undef SIG_CATCH -#define SIG_CATCH (void (*)(int))2 -#endif -#undef SIG_HOLD -#define SIG_HOLD (void (*)(int))3 -#endif diff --git a/contrib/nslint-2.1a3/lbl/os-ultrix4.h b/contrib/nslint-2.1a3/lbl/os-ultrix4.h deleted file mode 100644 index f1ad7078bb..0000000000 --- a/contrib/nslint-2.1a3/lbl/os-ultrix4.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 1990, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that: (1) source code distributions - * retain the above copyright notice and this paragraph in its entirety, (2) - * distributions including binary code include the above copyright notice and - * this paragraph in its entirety in the documentation or other materials - * provided with the distribution, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * @(#) $Header: /u0/home/explorer/proj/ISC/git-conversion/cvsroot/bind9/contrib/nslint-2.1a3/lbl/os-ultrix4.h,v 1.1 2001/12/21 04:12:05 marka Exp $ (LBL) - */ - -/* Prototypes missing in Ultrix 4 */ -int bcmp(const char *, const char *, u_int); -void bcopy(const void *, void *, u_int); -void bzero(void *, u_int); -void endservent(void); -int getopt(int, char * const *, const char *); -#ifdef __STDC__ -struct timeval; -struct timezone; -#endif -int gettimeofday(struct timeval *, struct timezone *); -int ioctl(int, int, caddr_t); -int pfopen(char *, int); -int setlinebuf(FILE *); -int socket(int, int, int); -int strcasecmp(const char *, const char *); diff --git a/contrib/nslint-2.1a3/CHANGES b/contrib/nslint-3.0a2/CHANGES similarity index 92% rename from contrib/nslint-2.1a3/CHANGES rename to contrib/nslint-3.0a2/CHANGES index c425e0171a..0e47d36f5f 100644 --- a/contrib/nslint-2.1a3/CHANGES +++ b/contrib/nslint-3.0a2/CHANGES @@ -1,6 +1,14 @@ -@(#) $Id: CHANGES,v 1.1 2001/12/21 04:12:02 marka Exp $ (LBL) +@(#) $Id: CHANGES 250 2009-10-16 23:26:47Z leres $ (LBL) -v2.1 Wed Aug 22 18:30:35 PDT 2001 +v3.0 Fri Oct 16 16:26:04 PDT 2009 + +- Add IPv6 support. + +v2.2 Fri Mar 13 22:29:52 PDT 2009 + +- Convert source tree to subversion + +v2.1 Fri Feb 15 20:45:01 PST 2008 - Handle "srv" records. @@ -8,6 +16,12 @@ v2.1 Wed Aug 22 18:30:35 PDT 2001 - Add "ignore" option +- Hack in support for "view" + +- Check for duplicate "cname" records. + +- Upgrade to autoconf 2.61 + v2.0.2 Tue Mar 20 17:49:13 PST 2001 - Allow missing trailing dot in certain special cases. @@ -16,6 +30,9 @@ v2.0.2 Tue Mar 20 17:49:13 PST 2001 - Document nslint.conf network keyword. +- Sort the network list so that we always pick the right network/mask + when the overlap. + v2.0.1 Tue Dec 14 11:24:31 PST 1999 - Handle $ttl. diff --git a/contrib/nslint-2.1a3/FILES b/contrib/nslint-3.0a2/FILES similarity index 69% rename from contrib/nslint-2.1a3/FILES rename to contrib/nslint-3.0a2/FILES index ddb8d44a68..376bdd39af 100644 --- a/contrib/nslint-2.1a3/FILES +++ b/contrib/nslint-3.0a2/FILES @@ -11,14 +11,10 @@ configure configure.in install-sh lbl/gnuc.h -lbl/os-irix5.h -lbl/os-osf3.h -lbl/os-solaris2.h -lbl/os-sunos4.h -lbl/os-ultrix4.h mkdep nslint.8 nslint.c savestr.c savestr.h strerror.c +version.h diff --git a/contrib/nslint-2.1a3/INSTALL b/contrib/nslint-3.0a2/INSTALL similarity index 88% rename from contrib/nslint-2.1a3/INSTALL rename to contrib/nslint-3.0a2/INSTALL index d451a976c2..d07822939f 100644 --- a/contrib/nslint-2.1a3/INSTALL +++ b/contrib/nslint-3.0a2/INSTALL @@ -1,4 +1,4 @@ -@(#) $Header: /u0/home/explorer/proj/ISC/git-conversion/cvsroot/bind9/contrib/nslint-2.1a3/INSTALL,v 1.1 2001/12/21 04:12:02 marka Exp $ (LBL) +@(#) $Id: INSTALL 238 2009-03-14 05:43:37Z leres $ (LBL) You will need an ANSI C compiler to build nslint. The configure script will abort if your compiler is not ANSI compliant. If this @@ -33,10 +33,10 @@ configure - configure script (run this first) configure.in - configure script source install-sh - BSD style install script lbl/gnuc.h - gcc macros and defines -lbl/os-*.h - os dependent defines and prototypes mkdep - construct Makefile dependency list nslint.8 - manual entry nslint.c - main program savestr.c - strdup() replacement savestr.h - savestr prototypes strerror.c - missing routine +version.h - prototypes, defines and struct definitions diff --git a/contrib/nslint-2.1a3/Makefile.in b/contrib/nslint-3.0a2/Makefile.in similarity index 74% rename from contrib/nslint-2.1a3/Makefile.in rename to contrib/nslint-3.0a2/Makefile.in index 60ed0173a4..0c265c75af 100644 --- a/contrib/nslint-2.1a3/Makefile.in +++ b/contrib/nslint-3.0a2/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 2000 +# Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 2000, 2008, 2009 # The Regents of the University of California. All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -17,7 +17,7 @@ # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # -# @(#) $Id: Makefile.in,v 1.2 2004/07/20 07:13:40 marka Exp $ (LBL) +# @(#) $Id: Makefile.in 242 2009-10-14 08:30:03Z leres $ (LBL) # # Various configurable paths (remember to edit Makefile.in, not Makefile) @@ -29,7 +29,9 @@ exec_prefix = @exec_prefix@ # Pathname of directory to install the binary BINDEST = @bindir@ # Pathname of directory to install the man page -MANDEST = @mandir@ +MANDEST = @prefix@/man +# The root of the directory tree for read-only +datarootdir = @datarootdir@ # VPATH srcdir = @srcdir@ @@ -48,6 +50,9 @@ DEFS = @DEFS@ # Standard CFLAGS CFLAGS = $(CCOPT) $(DEFS) $(INCLS) +# Standard LDFLAGS +LDFLAGS = @LDFLAGS@ + # Standard LIBS LIBS = @LIBS@ @@ -65,9 +70,9 @@ GENSRC = version.c SRC = $(CSRC) $(GENSRC) -# We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot +# We would like to say "OBJS = $(SRC:.c=.o)" but Ultrix's make cannot # hack the extra indirection -OBJ = $(CSRC:.c=.o) $(GENSRC:.c=.o) @LIBOBJS@ +OBJS = $(CSRC:.c=.o) $(GENSRC:.c=.o) @LIBOBJS@ TAGHDR = \ /usr/include/sys/types.h \ @@ -75,11 +80,15 @@ TAGHDR = \ TAGFILES = $(SRC) $(TAGHDR) -CLEANFILES = $(PROG) $(OBJ) $(GENSRC) +CLEANFILES = $(PROG) $(OBJS) $(GENSRC) purify $(OBJS:.o=_pure_*.o) -$(PROG): $(OBJ) +$(PROG): $(OBJS) @rm -f $@ - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) + +purify: $(OBJS) + @rm -f $@ + purify $(CC) $(CFLAGS) $(LDFLAGS) -static -o purify $(OBJS) $(LIBS) version.o: version.c version.c: $(srcdir)/VERSION @@ -88,17 +97,15 @@ version.c: $(srcdir)/VERSION install: force $(INSTALL) -m 555 -o bin -g bin $(PROG) $(DESTDIR)$(BINDEST)/$(PROG) - -install-man: force - $(INSTALL) -m 444 -o bin -g bin $(srcdir)/$(PROG).8 \ - $(DESTDIR)$(MANDEST)/man8/$(PROG).8 + @diff $(srcdir)/$(PROG).8 $(DESTDIR)$(MANDEST)/man8 >/dev/null 2>&1 || \ + $(INSTALL) -m 444 -o bin -g bin $(srcdir)/$(PROG).8 $(DESTDIR)$(MANDEST)/man8/ clean: force rm -f $(CLEANFILES) distclean: force - rm -f $(CLEANFILES) Makefile config.cache config.log config.status \ - gnuc.h os-proto.h + rm -rf $(CLEANFILES) Makefile config.cache config.log config.status \ + gnuc.h os-proto.h autom4te.cache tags: $(TAGFILES) ctags -wtd $(TAGFILES) @@ -117,6 +124,12 @@ tar: force "rm -f $$name" ; \ rm -f $$name +sign: + @name=${PROG}-`cat VERSION`.tar.gz; \ + set -x; \ + rm -f $${name}.asc; \ + gpg --armor --detach-sign $${name} + force: /tmp depend: $(GENSRC) force ./mkdep -c $(CC) $(DEFS) $(INCLS) $(SRC) diff --git a/contrib/nslint-2.1a3/README b/contrib/nslint-3.0a2/README similarity index 81% rename from contrib/nslint-2.1a3/README rename to contrib/nslint-3.0a2/README index 39f0202a31..d1c9177fa9 100644 --- a/contrib/nslint-2.1a3/README +++ b/contrib/nslint-3.0a2/README @@ -1,4 +1,4 @@ -@(#) $Id: README,v 1.1 2001/12/21 04:12:02 marka Exp $ (LBL) +@(#) $Id: README 237 2009-03-14 05:38:15Z leres $ (LBL) NSLINT 2.0 Lawrence Berkeley National Laboratory diff --git a/contrib/nslint-3.0a2/VERSION b/contrib/nslint-3.0a2/VERSION new file mode 100644 index 0000000000..57af7a33a3 --- /dev/null +++ b/contrib/nslint-3.0a2/VERSION @@ -0,0 +1 @@ +3.0a2 diff --git a/contrib/nslint-2.1a3/aclocal.m4 b/contrib/nslint-3.0a2/aclocal.m4 similarity index 71% rename from contrib/nslint-2.1a3/aclocal.m4 rename to contrib/nslint-3.0a2/aclocal.m4 index a5e3035bfa..ceff7c4054 100644 --- a/contrib/nslint-2.1a3/aclocal.m4 +++ b/contrib/nslint-3.0a2/aclocal.m4 @@ -1,6 +1,6 @@ -dnl @(#) $Header: /u0/home/explorer/proj/ISC/git-conversion/cvsroot/bind9/contrib/nslint-2.1a3/aclocal.m4,v 1.1 2001/12/21 04:12:03 marka Exp $ (LBL) +dnl @(#) $Id: aclocal.m4 616 2009-10-10 00:08:08Z leres $ (LBL) dnl -dnl Copyright (c) 1995, 1996, 1997, 1998, 1999 +dnl Copyright (c) 2008, 2009 dnl The Regents of the University of California. All rights reserved. dnl dnl Redistribution and use in source and binary forms, with or without @@ -26,7 +26,7 @@ dnl dnl Determine which compiler we're using (cc or gcc) dnl If using gcc, determine the version number dnl If using cc, require that it support ansi prototypes -dnl If using gcc, use -O2 (otherwise use -O) +dnl If using gcc, use -O3 (otherwise use -O) dnl If using cc, explicitly specify /usr/local/include dnl dnl usage: @@ -38,23 +38,27 @@ dnl dnl $1 (copt set) dnl $2 (incls set) dnl CC -dnl LDFLAGS -dnl LBL_CFLAGS +dnl LDFLAGS set dnl AC_DEFUN(AC_LBL_C_INIT, [AC_PREREQ(2.12) + AC_ARG_ENABLE([optimization], + [AS_HELP_STRING([--disable-optimization], + [turn off gcc optimization])], + ac_cv_without_optimization=${withval}) AC_BEFORE([$0], [AC_PROG_CC]) AC_BEFORE([$0], [AC_LBL_FIXINCLUDES]) AC_BEFORE([$0], [AC_LBL_DEVEL]) AC_ARG_WITH(gcc, [ --without-gcc don't use gcc]) - $1="-O" + AC_USE_SYSTEM_EXTENSIONS + $1="" + if test "${ac_cv_without_optimization+set}" != set; then + $1="-O" + fi $2="" if test "${srcdir}" != "." ; then $2="-I\$\(srcdir\)" fi - if test "${CFLAGS+set}" = set; then - LBL_CFLAGS="$CFLAGS" - fi if test -z "$CC" ; then case "$target_os" in @@ -72,6 +76,7 @@ AC_DEFUN(AC_LBL_C_INIT, export CC fi AC_PROG_CC + AC_SYS_LARGEFILE if test "$GCC" != yes ; then AC_MSG_CHECKING(that $CC handles ansi prototypes) AC_CACHE_VAL(ac_cv_lbl_cc_ansi_prototypes, @@ -100,7 +105,7 @@ AC_DEFUN(AC_LBL_C_INIT, fi CFLAGS="$savedcflags" $1="-Aa $$1" - AC_DEFINE(_HPUX_SOURCE) + AC_DEFINE(_HPUX_SOURCE,,[HP-UX ansi compiler]) ;; *) @@ -132,13 +137,43 @@ AC_DEFUN(AC_LBL_C_INIT, ac_cv_lbl_cc_const_proto=no)) AC_MSG_RESULT($ac_cv_lbl_cc_const_proto) if test $ac_cv_lbl_cc_const_proto = no ; then - AC_DEFINE(const,) + AC_DEFINE(const,,[ultrix can't hack const]) fi ;; esac fi ]) +AC_LBL_ENABLE_CHECK(brov6 activemapping expire-dfa-states) +dnl +dnl This allows us to check for bogus configure enable/disable +dnl command line options +dnl +dnl usage: +dnl +dnl AC_LBL_ENABLE_CHECK(opt ...) +dnl +AC_DEFUN(AC_LBL_ENABLE_CHECK, + [set | + sed -n -e 's/^enable_\([[^=]]*\)=[[^=]]*$/\1/p' | + while read var; do + ok=0 + for o in $1; do + if test "${o}" = "${var}" ; then + ok=1 + break + fi + done + if test ${ok} -eq 0 ; then + # It's hard to kill configure script from subshell! + AC_MSG_ERROR(unknown enable option: ${var}) + exit 1 + fi + done + if test $? -ne 0 ; then + exit 1 + fi]) + dnl dnl Use pfopen.c if available and pfopen() not in standard libraries dnl Require libpcap @@ -191,13 +226,13 @@ AC_DEFUN(AC_LBL_LIBPCAP, done if test "x$libpcap" = xFAIL ; then AC_MSG_RESULT(not found) - unset ac_cv_lbl_lib_pcap_pcap_open_live_ - AC_LBL_CHECK_LIB(pcap, pcap_open_live, libpcap="-lpcap") + AC_CHECK_LIB(pcap, pcap_open_live, libpcap="-lpcap") + unset ac_cv_lib_pcap_pcap_open_live if test "x$libpcap" = xFAIL ; then - unset ac_cv_lbl_lib_pcap_pcap_open_live_ CFLAGS="$CFLAGS -I/usr/local/include" LIBS="$LIBS -L/usr/local/lib" - AC_LBL_CHECK_LIB(pcap, pcap_open_live, libpcap="-lpcap") + AC_CHECK_LIB(pcap, pcap_open_live, libpcap="-lpcap") + unset ac_cv_lib_pcap_pcap_open_live if test "x$libpcap" = xFAIL ; then AC_MSG_ERROR(see the INSTALL doc for more info) fi @@ -240,21 +275,21 @@ AC_DEFUN(AC_LBL_TYPE_SIGNAL, [AC_BEFORE([$0], [AC_LBL_LIBPCAP]) AC_TYPE_SIGNAL if test "$ac_cv_type_signal" = void ; then - AC_DEFINE(RETSIGVAL,) + AC_DEFINE(RETSIGVAL,,[signal function return value]) else AC_DEFINE(RETSIGVAL,(0)) fi case "$target_os" in irix*) - AC_DEFINE(_BSD_SIGNALS) + AC_DEFINE(_BSD_SIGNALS,,[irix's BSD style signals]) ;; *) dnl prefer sigset() to sigaction() AC_CHECK_FUNCS(sigset) if test $ac_cv_func_sigset = yes ; then - AC_DEFINE(signal,sigset) + AC_DEFINE(signal,sigset,[use sigset() instead of signal()]) else AC_CHECK_FUNCS(sigaction) fi @@ -397,17 +432,38 @@ dnl dnl HAVE_SOCKADDR_SA_LEN (defined) dnl AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN, - [AC_MSG_CHECKING(if sockaddr struct has sa_len member) - AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len, - AC_TRY_COMPILE([ + [AC_CHECK_MEMBERS(struct sockaddr.sa_len,,,[ # include -# include ], - [u_int i = sizeof(((struct sockaddr *)0)->sa_len)], - ac_cv_lbl_sockaddr_has_sa_len=yes, - ac_cv_lbl_sockaddr_has_sa_len=no)) - AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len) - if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then - AC_DEFINE(HAVE_SOCKADDR_SA_LEN) +# include ])]) + +dnl +dnl Makes sure socklen_t is defined +dnl +dnl usage: +dnl +dnl AC_LBL_SOCKLEN_T +dnl +dnl results: +dnl +dnl socklen_t (defined if missing) +dnl +AC_DEFUN(AC_LBL_SOCKLEN_T, + [AC_MSG_CHECKING(for socklen_t in sys/socket.h using $CC) + AC_CACHE_VAL(ac_cv_lbl_socklen_t, + AC_TRY_COMPILE([ +# include "confdefs.h" +# include +# include +# if STDC_HEADERS +# include +# include +# endif], + [socklen_t i], + ac_cv_lbl_socklen_t=yes, + ac_cv_lbl_socklen_t=no)) + AC_MSG_RESULT($ac_cv_lbl_socklen_t) + if test $ac_cv_lbl_socklen_t = no ; then + AC_DEFINE(socklen_t, int, [Define socklen_t if missing]) fi]) dnl @@ -442,34 +498,9 @@ AC_DEFUN(AC_LBL_IFF_LOOPBACK, ac_cv_lbl_have_iff_loopback=no)) AC_MSG_RESULT($ac_cv_lbl_have_iff_loopback) if test $ac_cv_lbl_have_iff_loopback = yes ; then - AC_DEFINE(HAVE_IFF_LOOPBACK) + AC_DEFINE(HAVE_IFF_LOOPBACK,, [Have IFF_LOOPBACK define/enum]) fi]) -dnl -dnl Checks to see if -R is used -dnl -dnl usage: -dnl -dnl AC_LBL_HAVE_RUN_PATH -dnl -dnl results: -dnl -dnl ac_cv_lbl_have_run_path (yes or no) -dnl -AC_DEFUN(AC_LBL_HAVE_RUN_PATH, - [AC_MSG_CHECKING(for ${CC-cc} -R) - AC_CACHE_VAL(ac_cv_lbl_have_run_path, - [echo 'main(){}' > conftest.c - ${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1 - if test ! -s conftest.out ; then - ac_cv_lbl_have_run_path=yes - else - ac_cv_lbl_have_run_path=no - fi - rm -f conftest*]) - AC_MSG_RESULT($ac_cv_lbl_have_run_path) - ]) - dnl dnl Due to the stupid way it's implemented, AC_CHECK_TYPE is nearly useless. dnl @@ -497,7 +528,7 @@ AC_DEFUN(AC_LBL_CHECK_TYPE, ac_cv_lbl_have_$1=no)) AC_MSG_RESULT($ac_cv_lbl_have_$1) if test $ac_cv_lbl_have_$1 = no ; then - AC_DEFINE($1, $2) + AC_DEFINE($1, $2, Define $1) fi]) dnl @@ -584,24 +615,27 @@ AC_DEFUN(AC_LBL_CHECK_WALL, [ if test "$GCC" = yes ; then if test "$SHLICC2" = yes ; then ac_cv_lbl_gcc_vers=2 - $1="`echo $$1 | sed -e 's/-O/-O2/'`" + $1="`echo $$1 | sed -e 's/-O/-O3/'`" else AC_MSG_CHECKING(gcc version) AC_CACHE_VAL(ac_cv_lbl_gcc_vers, - ac_cv_lbl_gcc_vers=`$CC --version 2>&1 | \ - sed -e 's/\..*//'`) + # Gag, the gcc folks keep changing the output... + # try to grab N.N.N + ac_cv_lbl_gcc_vers=`$CC --version 2>&1 | + sed -e '1!d' -e 's/[[[^0-9]]]*\([[[0-9]]][[[0-9]]]*\)\.[[[0-9\]]][[[0-9]]]*\.[[[0-9]]][[[0-9]]]*.*/\1/'`) AC_MSG_RESULT($ac_cv_lbl_gcc_vers) - if test $ac_cv_lbl_gcc_vers -gt 1 ; then - $1="`echo $$1 | sed -e 's/-O/-O2/'`" + if test "$ac_cv_lbl_gcc_vers" -gt 1 ; then + $1="`echo $$1 | sed -e 's/-O/-O3/'`" fi fi - if test "${LBL_CFLAGS+set}" != set; then - if test "$ac_cv_prog_cc_g" = yes ; then - $1="-g $$1" - fi - $1="$$1 -Wall" - if test $ac_cv_lbl_gcc_vers -gt 1 ; then - $1="$$1 -Wmissing-prototypes -Wstrict-prototypes" + if test "$ac_cv_prog_cc_g" = yes ; then + $1="-g $$1" + fi + $1="$$1 -Wall" + if test "$ac_cv_lbl_gcc_vers" -gt 1 ; then + $1="$$1 -Wmissing-prototypes -Wstrict-prototypes" + if [[ "`uname -s`" = "FreeBSD" ]]; then + $1="$$1 -Werror" fi fi else @@ -632,18 +666,16 @@ dnl $1 (copt appended) dnl HAVE_OS_PROTO_H (defined) dnl os-proto.h (symlinked) dnl -AC_DEFUN(AC_LBL_DEVEL, - [rm -f os-proto.h - if test "${LBL_CFLAGS+set}" = set; then - $1="$$1 ${LBL_CFLAGS}" - fi +AC_DEFUN(AC_LBL_DEVEL,[ + AC_BEFORE([$0], [AC_LBL_LD_RUN_PATH]) + rm -f os-proto.h if test -f .devel ; then AC_LBL_CHECK_WALL($1) os=`echo $target_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'` name="lbl/os-$os.h" if test -f $name ; then ln -s $name os-proto.h - AC_DEFINE(HAVE_OS_PROTO_H) + AC_DEFINE(HAVE_OS_PROTO_H,,[have os-proto.h]) else AC_MSG_WARN(can't find $name) fi @@ -747,19 +779,200 @@ AC_DEFUN(AC_LBL_LIBRARY_NET, [ # libraries (i.e. libc): AC_CHECK_FUNC(gethostbyname, , # Some OSes (eg. Solaris) place it in libnsl: - AC_LBL_CHECK_LIB(nsl, gethostbyname, , + AC_CHECK_LIB(nsl, gethostbyname, , # Some strange OSes (SINIX) have it in libsocket: - AC_LBL_CHECK_LIB(socket, gethostbyname, , + AC_CHECK_LIB(socket, gethostbyname, , # Unfortunately libsocket sometimes depends on libnsl. # AC_CHECK_LIB's API is essentially broken so the # following ugliness is necessary: - AC_LBL_CHECK_LIB(socket, gethostbyname, + AC_CHECK_LIB(socket, gethostbyname, LIBS="-lsocket -lnsl $LIBS", AC_CHECK_LIB(resolv, gethostbyname), -lnsl)))) AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, , - AC_LBL_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , + AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl))) # DLPI needs putmsg under HPUX so test for -lstr while we're at it AC_CHECK_LIB(str, putmsg) ]) + +dnl +dnl AC_LBL_RUN_PATH +dnl +dnl Extracts -L directories from LIBS; if any are found they are +dnl converted to a LD_RUN_PATH and put in V_ENVIRONMENT +dnl +dnl usage: +dnl +dnl AC_LBL_RUN_PATH +dnl +dnl results: +dnl +dnl V_ENVIRONMENT +dnl +AC_DEFUN(AC_LBL_LD_RUN_PATH, [ + AC_MSG_CHECKING(LD_RUN_PATH) + AC_SUBST(V_ENVIRONMENT) + dnl + dnl Split out -L directories + dnl + ldirs="" + for x in ${LIBS}; do + case x${x} in + + x-L*) + ldirs="${ldirs} ${x}" + ;; + + *) + ;; + esac + done + + dnl + dnl Build LD_RUN_PATH + dnl + if test -n "${ldirs}"; then + V_ENVIRONMENT="LD_RUN_PATH=\"`echo \"${ldirs}\" | sed -e 's,-L,,g' -e 's,^ *,,' -e 's, ,:,g'`\"" + AC_MSG_RESULT(${V_ENVIRONMENT}) + else + AC_MSG_RESULT(empty) + fi]) + +dnl +dnl AC_LBL_BROCCOLI +dnl +dnl Include Broccoli support +dnl +dnl usage: +dnl +dnl AC_LBL_BROCCOLI(copt, incls, [min-vers]) +dnl +dnl results: +dnl +dnl $1 (copt variable appended) +dnl $2 (incls variable appended) +dnl $3 minimum version (optional) +dnl +AC_DEFUN(AC_LBL_BROCCOLI, [ + AC_BEFORE([$0], [AC_LBL_LD_RUN_PATH]) + dnl + dnl configure flags + dnl + AC_ARG_WITH([broccoli], + [AS_HELP_STRING([--without-broccoli], + [disable Broccoli support @<:@default=check@:>@])], + ac_cv_with_broccoli=${withval}) + dnl + dnl Network application libraries + dnl + AC_LBL_LIBRARY_NET + + AC_MSG_CHECKING(for broccoli) + if test "${ac_cv_with_broccoli}" = "" -o \ + "${ac_cv_with_broccoli}" = yes ; then + cflags="" + libs="" + dnl + dnl Our entire path + dnl + dirs="`echo ${PATH} | sed -e 's/:/ /g'`" + dnl + dnl Add in default Bro install bin directory + dnl + dirs="${dirs} /usr/local/bro/bin" + for d in ${dirs}; do + if test -x ${d}/broccoli-config ; then + broccoli_config_path="${d}/broccoli-config" + cflags="`${broccoli_config_path} --cflags`" + libs="`${broccoli_config_path} --libs`" + break + fi + done + if test -n "${cflags}" ; then + ac_cv_have_broccoli=yes + else + ac_cv_have_broccoli=no + fi + AC_MSG_RESULT($ac_cv_have_broccoli) + if test "${ac_cv_with_broccoli}" = yes -a \ + ${ac_cv_have_broccoli} = "no" ; then + AC_MSG_ERROR(Broccoli explicitly enabled but not supported) + fi + else + AC_MSG_RESULT([disabled]) + fi + + dnl + dnl Optionally check for minimum Broccoli version + dnl + if test "$ac_cv_have_broccoli" = yes -a -n "$3"; then + AC_MSG_CHECKING(Broccoli >= $3) + BROCCOLI_VERSION="`${broccoli_config_path} --version`" + AC_MSG_RESULT(${BROCCOLI_VERSION}) + dnl + dnl Sort the two versions; the desired version should + dnl appear first (or perhaps 1st and 2nd) + dnl + tvers="`(echo "$3" ; echo ${BROCCOLI_VERSION}) | + sort -t. +0 -1n +1 -2n +2 -3n +3 -4n | + head -1`" + if test "${tvers}" != "$3"; then + if test "${ac_cv_with_broccoli}" = yes; then + AC_MSG_ERROR(Broccoli $3 or higher is required) + fi + AC_MSG_NOTICE(Broccoli support disabled) + ac_cv_have_broccoli="no" + fi + fi + + dnl + dnl Broccoli ho! + dnl + if test "$ac_cv_have_broccoli" = yes ; then + AC_DEFINE(HAVE_BROCCOLI) + dnl + dnl Split out -I directories + dnl + for x in ${cflags}; do + case x${x} in + + x-I*) + eval "$2=\"\$$2 ${x}\"" + ;; + + *) + eval "$1=\"\$$1 ${x}\"" + ;; + esac + done + + dnl + dnl Add in Broccoli libs + dnl + LIBS="$LIBS ${libs}" + + dnl + dnl Look for the libs in DIR or DIR/lib + dnl + AC_ARG_WITH([openssl], + [AS_HELP_STRING([--with-openssl=DIR], + [Use OpenSSL installation in DIR])], + [eval "$2=\"-I${withval}/include \$$2\"" + for x in ${withval}/lib ${withval}; do + if test -r ${x}/libssl.a; then + LIBS="-L${x} ${LIBS}" + break + fi + done]) + + dnl + dnl -lssl needs to come first on some systems! + dnl + AC_CHECK_LIB(ssl, OPENSSL_add_all_algorithms_conf, + [LIBS="${LIBS} -lssl -lcrypto"],,-lcrypto) + dnl + dnl Newer versions of 1.4.0 and anything higher needs bro_init() + dnl + AC_CHECK_LIB(broccoli, bro_init, [AC_DEFINE(HAVE_BRO_INIT)]) + fi]) diff --git a/contrib/nslint-3.0a2/config.guess b/contrib/nslint-3.0a2/config.guess new file mode 100755 index 0000000000..0e30d56e94 --- /dev/null +++ b/contrib/nslint-3.0a2/config.guess @@ -0,0 +1,1407 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-07-02' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha*:OpenVMS:*:*) + echo alpha-hp-vms + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + # GNU/FreeBSD systems have a "k" prefix to indicate we are using + # FreeBSD's kernel, but not the complete OS. + case ${LIBC} in gnu) kernel_only='k' ;; esac + echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/contrib/nslint-2.1a3/config.sub b/contrib/nslint-3.0a2/config.sub old mode 100644 new mode 100755 similarity index 54% rename from contrib/nslint-2.1a3/config.sub rename to contrib/nslint-3.0a2/config.sub index 0432524944..9d7f733905 --- a/contrib/nslint-2.1a3/config.sub +++ b/contrib/nslint-3.0a2/config.sub @@ -1,6 +1,10 @@ #! /bin/sh -# Configuration validation subroutine script, version 1.1. -# Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc. +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-07-04' + # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. @@ -25,6 +29,9 @@ # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. @@ -45,30 +52,73 @@ # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. -if [ x$1 = x ] -then - echo Configuration name missing. 1>&2 - echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 - echo "or $0 ALIAS" 1>&2 - echo where ALIAS is a recognized configuration type. 1>&2 - exit 1 -fi +me=`echo "$0" | sed -e 's,.*/,,'` -# First pass through any local machine types. -case $1 in - *local*) - echo $1 - exit 0 - ;; - *) - ;; +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - linux-gnu*) + nto-qnx* | linux-gnu* | kfreebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; @@ -94,15 +144,33 @@ case $os in -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple) + -apple | -axis) os= basic_machine=$1 ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; -hiux*) os=-hiuxwe2 ;; -sco5) - os=sco3.2v5 + os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) @@ -121,6 +189,9 @@ case $os in os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` @@ -143,25 +214,72 @@ case $os in -psos*) os=-psos ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. - tahoe | i860 | m68k | m68000 | m88k | ns32k | arm \ - | arme[lb] | pyramid \ - | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \ - | alpha | we32k | ns16k | clipper | i370 | sh \ - | powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \ - | pdp11 | mips64el | mips64orion | mips64orionel \ - | sparc | sparclet | sparclite | sparc64) + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) basic_machine=$basic_machine-unknown ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. - i[3456]86) + i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. @@ -170,23 +288,81 @@ case $basic_machine in exit 1 ;; # Recognize the basic CPU types with company name. - vax-* | tahoe-* | i[3456]86-* | i860-* | m68k-* | m68000-* | m88k-* \ - | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \ - | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \ - | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \ - | hppa-* | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \ - | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \ - | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \ - | mips64el-* | mips64orion-* | mips64orionel-* | f301-*) + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | amd64-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | msp430-* \ + | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; alliant | fx80) basic_machine=fx80-alliant ;; @@ -197,25 +373,32 @@ case $basic_machine in basic_machine=a29k-none os=-bsd ;; + amd64) + basic_machine=x86_64-pc + ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) - basic_machine=m68k-cbm + basic_machine=m68k-unknown ;; - amigados) - basic_machine=m68k-cbm - os=-amigados + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos ;; amigaunix | amix) - basic_machine=m68k-cbm + basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; aux) basic_machine=m68k-apple os=-aux @@ -224,6 +407,10 @@ case $basic_machine in basic_machine=ns32k-sequent os=-dynix ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; convex-c1) basic_machine=c1-convex os=-bsd @@ -244,27 +431,30 @@ case $basic_machine in basic_machine=c38-convex os=-bsd ;; - cray | ymp) - basic_machine=ymp-cray - os=-unicos - ;; - cray2) - basic_machine=cray2-cray - os=-unicos - ;; - [ctj]90-cray) - basic_machine=c90-cray + cray | j90) + basic_machine=j90-cray os=-unicos ;; crds | unos) basic_machine=m68k-crds ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola @@ -292,6 +482,10 @@ case $basic_machine in encore | umax | mmax) basic_machine=ns32k-encore ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; fx2800) basic_machine=i860-alliant ;; @@ -302,6 +496,10 @@ case $basic_machine in basic_machine=tron-gmicro os=-sysv ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 @@ -310,6 +508,14 @@ case $basic_machine in basic_machine=h8300-hitachi os=-hms ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; harris) basic_machine=m88k-harris os=-sysv3 @@ -325,13 +531,30 @@ case $basic_machine in basic_machine=m68k-hp os=-hpux ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; - hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) @@ -340,27 +563,42 @@ case $basic_machine in hppa-next) os=-nextstep3 ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; i370-ibm* | ibm*) basic_machine=i370-ibm - os=-mvs ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? - i[3456]86v32) + i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; - i[3456]86v4*) + i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; - i[3456]86v) + i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; - i[3456]86sol2) + i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; iris | iris4d) basic_machine=mips-sgi case $os in @@ -386,19 +624,55 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; miniframe) basic_machine=m68000-convergent ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos @@ -411,6 +685,10 @@ case $basic_machine in basic_machine=mips-sony os=-newsos ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; next | m*-next ) basic_machine=m68k-next case $os in @@ -436,9 +714,40 @@ case $basic_machine in basic_machine=i960-intel os=-nindy ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; np1) basic_machine=np1-gould ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 @@ -453,53 +762,95 @@ case $basic_machine in pbb) basic_machine=m68k-tti ;; - pc532 | pc532-*) + pc532 | pc532-*) basic_machine=ns32k-pc532 ;; - pentium | p5) - basic_machine=i586-intel + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc ;; - pentiumpro | p6) - basic_machine=i686-intel + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc ;; - pentium-* | p5-*) + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - pentiumpro-* | p6-*) + pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - k5) - # We don't have specific support for AMD's K5 yet, so just call it a Pentium - basic_machine=i586-amd + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - nexen) - # We don't have specific support for Nexgen yet, so just call it a Pentium - basic_machine=i586-nexgen + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; - power) basic_machine=rs6000-ibm + power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown - ;; + ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown - ;; + ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; ps2) basic_machine=i386-ibm ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; sequent) basic_machine=i386-sequent ;; @@ -507,6 +858,13 @@ case $basic_machine in basic_machine=sh-hitachi os=-hms ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; sps7) basic_machine=m68k-bull os=-sysv2 @@ -514,6 +872,13 @@ case $basic_machine in spur) basic_machine=spur-unknown ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; sun2) basic_machine=m68000-sun ;; @@ -554,10 +919,44 @@ case $basic_machine in sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; symmetry) basic_machine=i386-sequent os=-dynix ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; tower | tower-32) basic_machine=m68k-ncr ;; @@ -569,6 +968,10 @@ case $basic_machine in basic_machine=a29k-nyu os=-sym1 ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; vaxv) basic_machine=vax-dec os=-sysv @@ -577,9 +980,9 @@ case $basic_machine in basic_machine=vax-dec os=-vms ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; vxworks960) basic_machine=i960-wrs os=-vxworks @@ -592,12 +995,24 @@ case $basic_machine in basic_machine=a29k-wrs os=-vxworks ;; - xmp) - basic_machine=xmp-cray + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray os=-unicos ;; - xps | xps100) - basic_machine=xps100-honeywell + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim ;; none) basic_machine=none-none @@ -606,8 +1021,14 @@ case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. - mips) - basic_machine=mips-mips + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm @@ -618,16 +1039,26 @@ case $basic_machine in vax) basic_machine=vax-dec ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; - sparc) + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; - cydra) + cydra) basic_machine=cydra-cydrome ;; orion) @@ -636,6 +1067,15 @@ case $basic_machine in orion105) basic_machine=clipper-highlevel ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 @@ -668,9 +1108,12 @@ case $os in -solaris) os=-solaris2 ;; - -unixware* | svr4*) + -svr4*) os=-sysv4 ;; + -unixware*) + os=-sysv4.2uw + ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; @@ -681,17 +1124,46 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -aos* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -linux-gnu* | -uxpv*) + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei*) # Remember, each alternative MUST END IN *, to match a version number. ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; @@ -701,6 +1173,12 @@ case $os in -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; -osfrose*) os=-osfrose ;; @@ -716,11 +1194,23 @@ case $os in -acis*) os=-aos ;; + -atheos*) + os=-atheos + ;; + -386bsd) + os=-bsd + ;; -ctix* | -uts*) os=-sysv ;; + -nova*) + os=-rtmk-nova + ;; -ns2 ) - os=-nextstep2 + os=-nextstep2 + ;; + -nsk*) + os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) @@ -747,9 +1237,24 @@ case $os in # This must come after -sysvr4. -sysv*) ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; -xenix) os=-xenix ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; -none) ;; *) @@ -775,10 +1280,20 @@ case $basic_machine in *-acorn) os=-riscix1.2 ;; + arm*-rebel) + os=-linux + ;; arm*-semi) os=-aout ;; - pdp11-*) + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) os=-none ;; *-dec | vax-*) @@ -796,15 +1311,39 @@ case $basic_machine in # default. # os=-sunos4 ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; + *-be) + os=-beos + ;; *-ibm) os=-aix ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; *-hp) os=-hpux ;; @@ -815,7 +1354,7 @@ case $basic_machine in os=-sysv ;; *-cbm) - os=-amigados + os=-amigaos ;; *-dg) os=-dgux @@ -847,27 +1386,39 @@ case $basic_machine in *-next) os=-nextstep3 ;; - *-gould) + *-gould) os=-sysv ;; - *-highlevel) + *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; - *-sgi) + *-sgi) os=-irix ;; - *-siemens) + *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; - f301-fujitsu) + f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; *) os=-none ;; @@ -889,9 +1440,15 @@ case $basic_machine in -aix*) vendor=ibm ;; + -beos*) + vendor=be + ;; -hpux*) vendor=hp ;; + -mpeix*) + vendor=hp + ;; -hiux*) vendor=hitachi ;; @@ -907,21 +1464,41 @@ case $basic_machine in -genix*) vendor=ns ;; - -mvs*) + -mvs* | -opened*) vendor=ibm ;; -ptx*) vendor=sequent ;; - -vxsim* | -vxworks*) + -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/contrib/nslint-3.0a2/configure b/contrib/nslint-3.0a2/configure new file mode 100755 index 0000000000..cdaf382285 --- /dev/null +++ b/contrib/nslint-3.0a2/configure @@ -0,0 +1,6885 @@ +#! /bin/sh +# From configure.in @(#) Id (LBL). +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.62. +# +# Copyright (c) 1995, 1996, 1997, 2006, 2009 +# The Regents of the University of California. All rights reserved. +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + case $as_dir in + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell bug-autoconf@gnu.org about your system, + echo including any error possibly output before this message. + echo This can help us improve future autoconf versions. + echo Configuration will now proceed without shell functions. +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + +exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="nslint.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +build +build_cpu +build_vendor +build_os +host +host_cpu +host_vendor +host_os +target +target_cpu +target_vendor +target_os +CC +CFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CC +EXEEXT +OBJEXT +CPP +GREP +EGREP +SHLICC2 +INSTALL_PROGRAM +INSTALL_SCRIPT +INSTALL_DATA +LIBOBJS +V_CCOPT +V_INCLS +LTLIBOBJS' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_optimization +with_gcc +enable_largefile +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { $as_echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { $as_echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) { $as_echo "$as_me: error: Unrecognized options: $ac_unrecognized_opts" >&2 + { (exit 1); exit 1; }; } ;; + *) $as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { $as_echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-optimization turn off gcc optimization + --disable-largefile omit support for large files + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --without-gcc don't use gcc + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +configure +generated by GNU Autoconf 2.62 + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. + +Copyright (c) 1995, 1996, 1997, 2006, 2009 + The Regents of the University of California. All rights reserved. +_ACEOF + exit +fi +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.62. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" +done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + ac_site_file1=$CONFIG_SITE +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test -r "$ac_site_file"; then + { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +{ $as_echo "$as_me:$LINENO: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if test "${ac_cv_build+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +$as_echo "$as_me: error: invalid value of canonical build" >&2;} + { (exit 1); exit 1; }; };; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:$LINENO: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if test "${ac_cv_host+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +$as_echo "$as_me: error: invalid value of canonical host" >&2;} + { (exit 1); exit 1; }; };; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:$LINENO: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if test "${ac_cv_target+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 +$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} + { (exit 1); exit 1; }; } +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 +$as_echo "$as_me: error: invalid value of canonical target" >&2;} + { (exit 1); exit 1; }; };; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + +umask 002 + +if test -z "$PWD" ; then + PWD=`pwd` +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi + +{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +if test -z "$ac_file"; then + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext + +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +{ $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if test "${ac_cv_objext+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:$LINENO: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:$LINENO: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:$LINENO: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done +done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:$LINENO: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done +done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test `eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + # Check whether --enable-optimization was given. +if test "${enable_optimization+set}" = set; then + enableval=$enable_optimization; ac_cv_without_optimization=${withval} +fi + + + + + +# Check whether --with-gcc was given. +if test "${with_gcc+set}" = set; then + withval=$with_gcc; +fi + + + if test "${ac_cv_header_minix_config_h+set}" = set; then + { $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5 +$as_echo_n "checking for minix/config.h... " >&6; } +if test "${ac_cv_header_minix_config_h+set}" = set; then + $as_echo_n "(cached) " >&6 +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +$as_echo "$ac_cv_header_minix_config_h" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking minix/config.h usability" >&5 +$as_echo_n "checking minix/config.h usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking minix/config.h presence" >&5 +$as_echo_n "checking minix/config.h presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5 +$as_echo_n "checking for minix/config.h... " >&6; } +if test "${ac_cv_header_minix_config_h+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_header_minix_config_h=$ac_header_preproc +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +$as_echo "$ac_cv_header_minix_config_h" >&6; } + +fi +if test $ac_cv_header_minix_config_h = yes; then + MINIX=yes +else + MINIX= +fi + + + if test "$MINIX" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define _POSIX_SOURCE 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define _POSIX_1_SOURCE 2 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define _MINIX 1 +_ACEOF + + fi + + + + { $as_echo "$as_me:$LINENO: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test "${ac_cv_safe_to_define___extensions__+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_safe_to_define___extensions__=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_safe_to_define___extensions__=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } + test $ac_cv_safe_to_define___extensions__ = yes && + cat >>confdefs.h <<\_ACEOF +#define __EXTENSIONS__ 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define _ALL_SOURCE 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define _GNU_SOURCE 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define _POSIX_PTHREAD_SEMANTICS 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define _TANDEM_SOURCE 1 +_ACEOF + + + V_CCOPT="" + if test "${ac_cv_without_optimization+set}" != set; then + V_CCOPT="-O" + fi + V_INCLS="" + if test "${srcdir}" != "." ; then + V_INCLS="-I\$\(srcdir\)" + fi + if test -z "$CC" ; then + case "$target_os" in + + bsdi*) + # Extract the first word of "shlicc2", so it can be a program name with args. +set dummy shlicc2; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_SHLICC2+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$SHLICC2"; then + ac_cv_prog_SHLICC2="$SHLICC2" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_SHLICC2="yes" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_SHLICC2" && ac_cv_prog_SHLICC2="no" +fi +fi +SHLICC2=$ac_cv_prog_SHLICC2 +if test -n "$SHLICC2"; then + { $as_echo "$as_me:$LINENO: result: $SHLICC2" >&5 +$as_echo "$SHLICC2" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test $SHLICC2 = yes ; then + CC=shlicc2 + export CC + fi + ;; + esac + fi + if test -z "$CC" -a "$with_gcc" = no ; then + CC=cc + export CC + fi + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:$LINENO: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:$LINENO: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + # Check whether --enable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no; then + + { $as_echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +$as_echo_n "checking for special C compiler options needed for large files... " >&6; } +if test "${ac_cv_sys_largefile_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + break +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_largefile_CC=' -n32'; break +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +$as_echo "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { $as_echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if test "${ac_cv_sys_file_offset_bits+set}" = set; then + $as_echo_n "(cached) " >&6 +else + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_file_offset_bits=no; break +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_file_offset_bits=64; break +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF +;; +esac +rm -rf conftest* + if test $ac_cv_sys_file_offset_bits = unknown; then + { $as_echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } +if test "${ac_cv_sys_large_files+set}" = set; then + $as_echo_n "(cached) " >&6 +else + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_large_files=no; break +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_large_files=1; break +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +$as_echo "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF +;; +esac +rm -rf conftest* + fi +fi + + if test "$GCC" != yes ; then + { $as_echo "$as_me:$LINENO: checking that $CC handles ansi prototypes" >&5 +$as_echo_n "checking that $CC handles ansi prototypes... " >&6; } + if test "${ac_cv_lbl_cc_ansi_prototypes+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +int frob(int, char *) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_lbl_cc_ansi_prototypes=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lbl_cc_ansi_prototypes=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:$LINENO: result: $ac_cv_lbl_cc_ansi_prototypes" >&5 +$as_echo "$ac_cv_lbl_cc_ansi_prototypes" >&6; } + if test $ac_cv_lbl_cc_ansi_prototypes = no ; then + case "$target_os" in + + hpux*) + { $as_echo "$as_me:$LINENO: checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)" >&5 +$as_echo_n "checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)... " >&6; } + savedcflags="$CFLAGS" + CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS" + if test "${ac_cv_lbl_cc_hpux_cc_aa+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +int frob(int, char *) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_lbl_cc_hpux_cc_aa=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lbl_cc_hpux_cc_aa=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:$LINENO: result: $ac_cv_lbl_cc_hpux_cc_aa" >&5 +$as_echo "$ac_cv_lbl_cc_hpux_cc_aa" >&6; } + if test $ac_cv_lbl_cc_hpux_cc_aa = no ; then + { { $as_echo "$as_me:$LINENO: error: see the INSTALL doc for more info" >&5 +$as_echo "$as_me: error: see the INSTALL doc for more info" >&2;} + { (exit 1); exit 1; }; } + fi + CFLAGS="$savedcflags" + V_CCOPT="-Aa $V_CCOPT" + +cat >>confdefs.h <<\_ACEOF +#define _HPUX_SOURCE /**/ +_ACEOF + + ;; + + *) + { { $as_echo "$as_me:$LINENO: error: see the INSTALL doc for more info" >&5 +$as_echo "$as_me: error: see the INSTALL doc for more info" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + fi + V_INCLS="$V_INCLS -I/usr/local/include" + LDFLAGS="$LDFLAGS -L/usr/local/lib" + + case "$target_os" in + + irix*) + V_CCOPT="$V_CCOPT -xansi -signed -g3" + ;; + + osf*) + V_CCOPT="$V_CCOPT -std1 -g3" + ;; + + ultrix*) + { $as_echo "$as_me:$LINENO: checking that Ultrix $CC hacks const in prototypes" >&5 +$as_echo_n "checking that Ultrix $CC hacks const in prototypes... " >&6; } + if test "${ac_cv_lbl_cc_const_proto+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +struct a { int b; }; + void c(const struct a *) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_lbl_cc_const_proto=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lbl_cc_const_proto=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:$LINENO: result: $ac_cv_lbl_cc_const_proto" >&5 +$as_echo "$ac_cv_lbl_cc_const_proto" >&6; } + if test $ac_cv_lbl_cc_const_proto = no ; then + +cat >>confdefs.h <<\_ACEOF +#define const /**/ +_ACEOF + + fi + ;; + esac + fi + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + +done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + + + +for ac_header in fcntl.h memory.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + +fi +if test `eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_func in strerror +do +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_var=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test `eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case " $LIBOBJS " in + *" $ac_func.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" + ;; +esac + +fi +done + + + +{ $as_echo "$as_me:$LINENO: checking for main in -lnsl" >&5 +$as_echo_n "checking for main in -lnsl... " >&6; } +if test "${ac_cv_lib_nsl_main+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_nsl_main=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_nsl_main=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_main" >&5 +$as_echo "$ac_cv_lib_nsl_main" >&6; } +if test $ac_cv_lib_nsl_main = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBNSL 1 +_ACEOF + + LIBS="-lnsl $LIBS" + +fi + + +{ $as_echo "$as_me:$LINENO: checking for main in -lsocket" >&5 +$as_echo_n "checking for main in -lsocket... " >&6; } +if test "${ac_cv_lib_socket_main+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_socket_main=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_socket_main=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_main" >&5 +$as_echo "$ac_cv_lib_socket_main" >&6; } +if test $ac_cv_lib_socket_main = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSOCKET 1 +_ACEOF + + LIBS="-lsocket $LIBS" + +fi + + +{ $as_echo "$as_me:$LINENO: checking for int32_t using $CC" >&5 +$as_echo_n "checking for int32_t using $CC... " >&6; } + if test "${ac_cv_lbl_have_int32_t+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +# include "confdefs.h" +# include +# if STDC_HEADERS +# include +# include +# endif +int +main () +{ +int32_t i + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_lbl_have_int32_t=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lbl_have_int32_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:$LINENO: result: $ac_cv_lbl_have_int32_t" >&5 +$as_echo "$ac_cv_lbl_have_int32_t" >&6; } + if test $ac_cv_lbl_have_int32_t = no ; then + +cat >>confdefs.h <<\_ACEOF +#define int32_t int +_ACEOF + + fi +{ $as_echo "$as_me:$LINENO: checking for u_int32_t using $CC" >&5 +$as_echo_n "checking for u_int32_t using $CC... " >&6; } + if test "${ac_cv_lbl_have_u_int32_t+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +# include "confdefs.h" +# include +# if STDC_HEADERS +# include +# include +# endif +int +main () +{ +u_int32_t i + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_lbl_have_u_int32_t=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lbl_have_u_int32_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:$LINENO: result: $ac_cv_lbl_have_u_int32_t" >&5 +$as_echo "$ac_cv_lbl_have_u_int32_t" >&6; } + if test $ac_cv_lbl_have_u_int32_t = no ; then + +cat >>confdefs.h <<\_ACEOF +#define u_int32_t u_int +_ACEOF + + fi + + + + rm -f os-proto.h + if test -f .devel ; then + if test "$GCC" = yes ; then + if test "$SHLICC2" = yes ; then + ac_cv_lbl_gcc_vers=2 + V_CCOPT="`echo $V_CCOPT | sed -e 's/-O/-O3/'`" + else + { $as_echo "$as_me:$LINENO: checking gcc version" >&5 +$as_echo_n "checking gcc version... " >&6; } + if test "${ac_cv_lbl_gcc_vers+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # Gag, the gcc folks keep changing the output... + # try to grab N.N.N + ac_cv_lbl_gcc_vers=`$CC --version 2>&1 | + sed -e '1!d' -e 's/[^0-9]*\([0-9][0-9]*\)\.[0-9\][0-9]*\.[0-9][0-9]*.*/\1/'` +fi + + { $as_echo "$as_me:$LINENO: result: $ac_cv_lbl_gcc_vers" >&5 +$as_echo "$ac_cv_lbl_gcc_vers" >&6; } + if test "$ac_cv_lbl_gcc_vers" -gt 1 ; then + V_CCOPT="`echo $V_CCOPT | sed -e 's/-O/-O3/'`" + fi + fi + if test "$ac_cv_prog_cc_g" = yes ; then + V_CCOPT="-g $V_CCOPT" + fi + V_CCOPT="$V_CCOPT -Wall" + if test "$ac_cv_lbl_gcc_vers" -gt 1 ; then + V_CCOPT="$V_CCOPT -Wmissing-prototypes -Wstrict-prototypes" + if [ "`uname -s`" = "FreeBSD" ]; then + V_CCOPT="$V_CCOPT -Werror" + fi + fi + else + case "$target_os" in + + irix6*) + V_CCOPT="$V_CCOPT -fullwarn -n32" + ;; + + *) + ;; + esac + fi + os=`echo $target_os | sed -e 's/\([0-9][0-9]*\)[^0-9].*$/\1/'` + name="lbl/os-$os.h" + if test -f $name ; then + ln -s $name os-proto.h + +cat >>confdefs.h <<\_ACEOF +#define HAVE_OS_PROTO_H /**/ +_ACEOF + + else + { $as_echo "$as_me:$LINENO: WARNING: can't find $name" >&5 +$as_echo "$as_me: WARNING: can't find $name" >&2;} + fi + fi + +if test -r lbl/gnuc.h ; then + rm -f gnuc.h + ln -s lbl/gnuc.h gnuc.h +fi + + + + + + + +ac_config_files="$ac_config_files Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 + +# Save the log message, to keep $[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by $as_me, which was +generated by GNU Autoconf 2.62. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.62, + with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2008 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { $as_echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || +{ + $as_echo "$as_me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=' ' +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` = $ac_delim_num; then + break + elif $ac_last_try; then + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\).*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\).*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 +$as_echo "$as_me: error: could not setup config files machinery" >&2;} + { (exit 1); exit 1; }; } +_ACEOF + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +$as_echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + ac_file_inputs="$ac_file_inputs '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } + ;; + + + + esac + +done # for ac_tag + + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:$LINENO: WARNING: Unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +if test -f .devel ; then + make depend +fi +exit 0 diff --git a/contrib/nslint-3.0a2/configure.in b/contrib/nslint-3.0a2/configure.in new file mode 100644 index 0000000000..aa8a6b07f5 --- /dev/null +++ b/contrib/nslint-3.0a2/configure.in @@ -0,0 +1,51 @@ +AC_REVISION([@(#) $Id: configure.in 241 2009-10-10 23:31:13Z leres $ (LBL)]) +dnl +AC_COPYRIGHT([Copyright (c) 1995, 1996, 1997, 2006, 2009 + The Regents of the University of California. All rights reserved.]) +dnl +dnl Process this file with autoconf to produce a configure script. +dnl + +AC_INIT +AC_CONFIG_SRCDIR(nslint.c) + +AC_CANONICAL_TARGET + +umask 002 + +if test -z "$PWD" ; then + PWD=`pwd` +fi + +AC_LBL_C_INIT(V_CCOPT, V_INCLS) +AC_PROG_INSTALL + +AC_CHECK_HEADERS(fcntl.h memory.h) + +AC_REPLACE_FUNCS(strerror) +AC_CHECK_LIB(nsl, main) +AC_CHECK_LIB(socket, main) + +AC_LBL_CHECK_TYPE(int32_t, int) +AC_LBL_CHECK_TYPE(u_int32_t, u_int) + +AC_LBL_DEVEL(V_CCOPT) + +if test -r lbl/gnuc.h ; then + rm -f gnuc.h + ln -s lbl/gnuc.h gnuc.h +fi + +AC_SUBST(CFLAGS) +AC_SUBST(LDFLAGS) +AC_SUBST(LIBS) +AC_SUBST(V_CCOPT) +AC_SUBST(V_INCLS) + +AC_CONFIG_FILES(Makefile) +AC_OUTPUT + +if test -f .devel ; then + make depend +fi +exit 0 diff --git a/contrib/nslint-3.0a2/install-sh b/contrib/nslint-3.0a2/install-sh new file mode 100755 index 0000000000..a5897de6ea --- /dev/null +++ b/contrib/nslint-3.0a2/install-sh @@ -0,0 +1,519 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2006-12-25.00 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +no_target_directory= + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + shift;; + + -T) no_target_directory=true;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dst_arg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + -*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir + shift + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && + + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/contrib/nslint-2.1a3/lbl/gnuc.h b/contrib/nslint-3.0a2/lbl/gnuc.h similarity index 72% rename from contrib/nslint-2.1a3/lbl/gnuc.h rename to contrib/nslint-3.0a2/lbl/gnuc.h index aa56c3d4fc..3c6b8f8d9e 100644 --- a/contrib/nslint-2.1a3/lbl/gnuc.h +++ b/contrib/nslint-3.0a2/lbl/gnuc.h @@ -1,4 +1,4 @@ -/* @(#) $Header: /u0/home/explorer/proj/ISC/git-conversion/cvsroot/bind9/contrib/nslint-2.1a3/lbl/gnuc.h,v 1.1 2001/12/21 04:12:05 marka Exp $ (LBL) */ +/* @(#) $Id: gnuc.h,v 1.4 2006/04/30 03:58:45 leres Exp $ (LBL) */ /* Define __P() macro, if necessary */ #ifndef __P @@ -21,12 +21,18 @@ * * For example: * - * __dead void foo(void) __attribute__((volatile)); + * __dead void foo(void) __attribute__((noreturn)); * */ #ifdef __GNUC__ #ifndef __dead +#if __GNUC__ >= 4 +#define __dead +#define noreturn __noreturn__ +#else #define __dead volatile +#define noreturn volatile +#endif #endif #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) #ifndef __attribute__ diff --git a/contrib/nslint-2.1a3/mkdep b/contrib/nslint-3.0a2/mkdep old mode 100644 new mode 100755 similarity index 100% rename from contrib/nslint-2.1a3/mkdep rename to contrib/nslint-3.0a2/mkdep diff --git a/contrib/nslint-2.1a3/nslint.8 b/contrib/nslint-3.0a2/nslint.8 similarity index 84% rename from contrib/nslint-2.1a3/nslint.8 rename to contrib/nslint-3.0a2/nslint.8 index 98c1ebeab0..92515ea449 100644 --- a/contrib/nslint-2.1a3/nslint.8 +++ b/contrib/nslint-3.0a2/nslint.8 @@ -1,6 +1,6 @@ -.\" @(#) $Id: nslint.8,v 1.1 2001/12/21 04:12:03 marka Exp $ (LBL) +.\" @(#) $Id: nslint.8 238 2009-03-14 05:43:37Z leres $ (LBL) .\" -.\" Copyright (c) 1994, 1996, 1997, 1999, 2001 +.\" Copyright (c) 1994, 1996, 1997, 1999, 2001, 2002, 2009 .\" The Regents of the University of California. All rights reserved. .\" All rights reserved. .\" @@ -20,7 +20,7 @@ .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. .\" -.TH nslint 8 "20 March 2001" +.TH nslint 8 "2 May 2002" .UC 4 .SH NAME nslint - perform consistency checks on dns files @@ -29,23 +29,23 @@ nslint - perform consistency checks on dns files [ .B -d ] [ -.B -b -.I named.boot -] [ -.B -B -.I nslint.boot -] -.br -.B nslint -[ -.B -d -] [ .B -c .I named.conf ] [ .B -C .I nslint.conf ] +.br +.B nslint +[ +.B -d +] [ +.B -b +.I named.boot +] [ +.B -B +.I nslint.boot +] .SH DESCRIPTION .B Nslint reads the nameserver configuration files and performs a number of @@ -56,7 +56,7 @@ and .B nslint exits with a non-zero status. .LP -Here is a short list of errors +Here is a partial list of errors .B nslint detects: .IP @@ -93,7 +93,7 @@ Unknown service and/or protocol keywords in .B WKS records. .IP -Missing quotes. +Missing semicolons and quotes. .LP .SH OPTIONS .TP @@ -150,25 +150,31 @@ displayed on .IR stdout . .LP .B Nslint -knows how to read old style -.I named.boot -and BIND 8's new +knows how to read +BIND 8 and 9's .I named.conf -files. If both files exist, +configuration file and also +older BIND's +.I named.boot +file. If both files exist, .B nslint will prefer .I named.conf (on the theory that you forgot to delete .I named.boot -when you upgraded to BIND 8). +when you upgraded BIND). .LP .SH "ADVANCED CONFIGURATION" There are some cases where it is necessary to use the advanced configuration features of .BR nslint . Advanced configuration is done with the +.I nslint.conf +file. (You can also use .I nslint.boot -file. +which has a syntax similar to +.I named.boot +but is not described here.) .LP The most common is when a site has a demilitarized zone (DMZ). The problem here is that the DMZ network will have @@ -198,14 +204,19 @@ but we will get errors because there is no record defined for .IR gateway.es.net . The solution is to create a -.I nslint.boot +.I nslint.conf file (in the same directory as the other dns files) with: .LP .RS .nf .sp .5 -primary es.net nslint.es.net +zone "es.net" { +.RS +type master; +file "nslint.es.net"; +.RE +}; .sp .5 .fi .RE @@ -242,7 +253,12 @@ In this case we would need: .RS .nf .sp .5 -primary es.net nslint.es.net +zone "es.net" { +.RS +type master; +file "nslint.es.net"; +.RE +}; .sp .5 .fi .RE @@ -292,14 +308,25 @@ To suppress these warnings, add you would the lines: .RS .nf .sp .5 -primary lbl.gov nslint.lbl.gov -primary 0.128.in-addr.arpa nslint.128.0.rev +zone "lbl.gov" { +.RS +type master; +file "nslint.lbl.gov"; +.RE +}; +.LP +zone "0.128.in-addr.arpa" { +.RS +type master; +file "nslint.128.0.rev"; +.RE +}; .sp .5 .fi .RE .LP to -.I nslint.boot +.I nslint.conf and create .I nslint.lbl.gov with: @@ -340,7 +367,7 @@ to be shared by and .IR jerry.lbl.gov . .LP -One last +Another .B nslint feature helps detect hosts that have mistakenly had two ip addresses assigned on the same subnet. This can happen when two different @@ -361,6 +388,19 @@ containing something similar to: nslint { .RS network "128.0.6/22"; +.RE +}; +.sp .5 +.fi +.RE +.LP +or: +.LP +.RS +.nf +.sp .5 +nslint { +.RS network "128.0.6 255.255.252.0"; .RE }; @@ -368,26 +408,11 @@ network "128.0.6 255.255.252.0"; .fi .RE .LP -The two network lines in this example are equivalent ways of saying the same -thing; that subnet +These two examples are are equivalent ways of saying the same thing; +that subnet .I 128.0.6 has a 22 bit wide subnet mask. .LP -If you are using -.IR nslint.boot , -the syntax would be: -.LP -.RS -.nf -.sp .5 -network 128.0.6/22 -network 128.0.6 255.255.252.0 -.sp .5 -.fi -.RE -.LP -Again this shows two ways of saying the same thing. -.LP Using information from the above .B network statement, @@ -409,21 +434,42 @@ Note that if you specify any .B network lines in your .I nslint.conf -or -.I nslint.boot -files, +file, .B nslint requires you to include lines for all networks; otherwise you might forget to add .B network lines for new networks. .LP +Sometimes you have a zone that +.B nslint +just can't deal with. A good example is +a dynamic dns zone. To handle this, you can +add the following to +.IB nslint.com : +.LP +.RS +.nf +.sp .5 +nslint { +.RS +ignorezone "dhcp.lbl.gov"; +.RE +}; +.sp .5 +.fi +.RE +.LP +This will suppress "name referenced without other records" warnings. +.LP .SH FILES .na .nh .nf -/etc/named.boot - default named configuration file -nslint.boot - default nslint configuration file +/etc/named.conf - default named configuration file +/etc/named.boot - old style named configuration file +nslint.conf - default nslint configuration file +nslint.boot - old style nslint configuration file .ad .hy .fi diff --git a/contrib/nslint-2.1a3/nslint.c b/contrib/nslint-3.0a2/nslint.c similarity index 60% rename from contrib/nslint-2.1a3/nslint.c rename to contrib/nslint-3.0a2/nslint.c index 4d9eeb8e1e..9708c58a38 100644 --- a/contrib/nslint-2.1a3/nslint.c +++ b/contrib/nslint-3.0a2/nslint.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 + * Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -20,10 +20,10 @@ */ #ifndef lint static const char copyright[] = - "@(#) Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001\n\ + "@(#) Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009\n\ The Regents of the University of California. All rights reserved.\n"; static const char rcsid[] = - "@(#) $Id: nslint.c,v 1.2 2011/11/30 00:48:51 marka Exp $ (LBL)"; + "@(#) $Id: nslint.c 247 2009-10-14 17:54:05Z leres $ (LBL)"; #endif /* * nslint - perform consistency checks on dns files @@ -31,6 +31,7 @@ static const char rcsid[] = #include #include +#include #include @@ -41,9 +42,6 @@ static const char rcsid[] = #ifdef HAVE_FCNTL_H #include #endif -#ifdef HAVE_MALLOC_H -#include -#endif #ifdef HAVE_MEMORY_H #include #endif @@ -55,6 +53,7 @@ static const char rcsid[] = #include #include "savestr.h" +#include "version.h" #include "gnuc.h" #ifdef HAVE_OS_PROTO_H @@ -64,32 +63,91 @@ static const char rcsid[] = #define NSLINTBOOT "nslint.boot" /* default nslint.boot file */ #define NSLINTCONF "nslint.conf" /* default nslint.conf file */ -/* item struct */ +/* Is the string just a dot by itself? */ +#define CHECKDOT(p) (p[0] == '.' && p[1] == '\0') + +/* Address (network order) */ +struct addr { + u_int family; + union { + struct in_addr _a_addr4; + struct in6_addr _a_addr6; + } addr; +}; +#define a_addr4 addr._a_addr4.s_addr +#define a_addr6 addr._a_addr6.s6_addr + +/* Network */ +struct network { + u_int family; + union { + struct in_addr _n_addr4; + struct in6_addr _n_addr6; + } addr; + union { + struct in_addr _n_mask4; + struct in6_addr _n_mask6; + } mask; +}; +#define n_addr4 addr._n_addr4.s_addr +#define n_mask4 mask._n_mask4.s_addr +#define n_addr6 addr._n_addr6.s6_addr +#define n_mask6 mask._n_mask6.s6_addr + +/* Item struct */ struct item { char *host; /* pointer to hostname */ - u_int32_t addr; /* ip address */ + struct addr addr; /* ip address */ u_int ttl; /* ttl of A records */ int records; /* resource records seen */ int flags; /* flags word */ }; +/* Ignored zone struct */ +struct ignoredzone { + char *zone; /* zone name */ + int len; /* length of zone */ +}; + /* Resource records seen */ #define REC_A 0x0001 -#define REC_PTR 0x0002 -#define REC_WKS 0x0004 -#define REC_HINFO 0x0008 -#define REC_MX 0x0010 -#define REC_CNAME 0x0020 -#define REC_NS 0x0040 -#define REC_SOA 0x0080 -#define REC_RP 0x0100 -#define REC_TXT 0x0200 -#define REC_SRV 0x0400 +#define REC_AAAA 0x0002 +#define REC_PTR 0x0004 +#define REC_WKS 0x0008 +#define REC_HINFO 0x0010 +#define REC_MX 0x0020 +#define REC_CNAME 0x0040 +#define REC_NS 0x0080 +#define REC_SOA 0x0100 +#define REC_RP 0x0200 +#define REC_TXT 0x0400 +#define REC_SRV 0x0800 /* These aren't real records */ -#define REC_OTHER 0x0800 -#define REC_REF 0x1000 -#define REC_UNKNOWN 0x2000 +#define REC_OTHER 0x1000 +#define REC_REF 0x2000 +#define REC_UNKNOWN 0x4000 + +/* resource record types for parsing */ +enum rrtype { + RR_UNDEF = 0, + RR_A, + RR_AAAA, + RR_ALLOWDUPA, + RR_CNAME, + RR_DNSKEY, + RR_HINFO, + RR_MX, + RR_NS, + RR_PTR, + RR_RP, + RR_SOA, + RR_SRV, + RR_TXT, + RR_WKS, + RR_RRSIG, + RR_NSEC, +}; /* Test for records we want to map to REC_OTHER */ #define MASK_TEST_REC (REC_WKS | REC_HINFO | \ @@ -97,11 +155,11 @@ struct item { /* Mask away records we don't care about in the final processing to REC_OTHER */ #define MASK_CHECK_REC \ - (REC_A | REC_PTR | REC_CNAME | REC_REF | REC_OTHER) + (REC_A | REC_AAAA | REC_PTR | REC_CNAME | REC_REF | REC_OTHER) /* Test for records we want to check for duplicate name detection */ #define MASK_TEST_DUP \ - (REC_A | REC_HINFO) + (REC_A | REC_AAAA | REC_HINFO | REC_CNAME) /* Flags */ #define FLG_SELFMX 0x001 /* mx record refers to self */ @@ -109,14 +167,15 @@ struct item { #define FLG_SMTPWKS 0x004 /* saw wks with smtp/tcp */ #define FLG_ALLOWDUPA 0x008 /* allow duplicate a records */ +/* doconf() and doboot() flags */ +#define CONF_MUSTEXIST 0x001 /* fatal for files to not exist */ +#define CONF_NOZONE 0x002 /* do not parse zone files */ + /* Test for smtp problems */ #define MASK_TEST_SMTP \ (FLG_SELFMX | FLG_SMTPWKS) - #define ITEMSIZE (1 << 17) /* power of two */ -#define ITEMHASH(str, h, p) \ - for (p = str, h = 0; *p != '.' && *p != '\0';) h = (h << 5) - h + *p++ struct item items[ITEMSIZE]; int itemcnt; /* count of items */ @@ -128,19 +187,34 @@ int strsize; /* size of space left in pool */ int debug; int errors; +#ifdef __FreeBSD__ +char *bootfile = "/etc/namedb/named.boot"; +char *conffile = "/etc/namedb/named.conf"; +#else char *bootfile = "/etc/named.boot"; char *conffile = "/etc/named.conf"; +#endif char *nslintboot; char *nslintconf; char *prog; char *cwd = "."; +static struct network *netlist; +static u_int netlistsize; /* size of array */ +static u_int netlistcnt; /* next free element */ + char **protoserv; /* valid protocol/service names */ int protoserv_init; int protoserv_last; int protoserv_len; static char inaddr[] = ".in-addr.arpa."; +static char inaddr6[] = ".ip6.arpa."; + +/* XXX should be dynamic */ +static struct ignoredzone ignoredzones[10]; +static int numignoredzones = 0; +#define SIZEIGNOREDZONES (sizeof(ignoredzones) / sizeof(ignoredzones[0])) /* SOA record */ #define SOA_SERIAL 0 @@ -154,57 +228,49 @@ static int nsoaval; #define NSOAVAL (sizeof(soaval) / sizeof(soaval[0])) /* Forwards */ -static inline void add_domain(char *, const char *); -int checkdots(const char *); -void checkdups(struct item *, int); -int checkserv(const char *, char **p); -int checkwks(FILE *, char *, int *, char **); -int cmpaddr(const void *, const void *); -int cmphost(const void *, const void *); -int doboot(const char *, int); -int doconf(const char *, int); -void initprotoserv(void); -char *intoa(u_int32_t); -int main(int, char **); -int nslint(void); -int parseinaddr(const char *, u_int32_t *, u_int32_t *); -int parsenetwork(const char *, char **); -u_int32_t parseptr(const char *, u_int32_t, u_int32_t, char **); -char *parsequoted(char *); -int parsesoa(const char *, char **); -void process(const char *, const char *, const char *); -int rfc1034host(const char *, int); -int updateitem(const char *, u_int32_t, int, u_int, int); -__dead void usage(void) __attribute__((volatile)); +void add_domain(char *, const char *); +const char *addr2str(struct addr *); +int checkaddr(const char *); +int checkdots(const char *); +void checkdups(struct item *, int); +int checkignoredzone(const char *); +int checkserv(const char *, char **p); +int checkwks(FILE *, char *, int *, char **); +int cmpaddr(const void *, const void *); +int cmpitemaddr(const void *, const void *); +int cmpitemhost(const void *, const void *); +int cmpnetwork(const void *, const void *); +void doboot(const char *, int); +void doconf(const char *, int); +const char *extractaddr(const char *, struct addr *); +const char *extractnetwork(const char *, struct network *); +struct network *findnetwork(struct addr *); +void initprotoserv(void); +int main(int, char **); +int maskwidth(struct network *); +const char *network2str(struct network *); +void nslint(void); +const char *parsenetwork(const char *); +const char *parseptr(const char *, struct addr *); +char *parsequoted(char *); +int parserrsig(const char *, char **); +int parsesoa(const char *, char **); +void process(const char *, const char *, const char *); +int rfc1034host(const char *, int); +enum rrtype txt2rrtype(const char *); +int samesubnet(struct addr *, struct addr *, struct network *); +void setmaskwidth(u_int w, struct network *); +int updateitem(const char *, struct addr *, int, u_int, int); +void usage(void) __attribute__((noreturn)); extern char *optarg; extern int optind, opterr; -/* add domain if necessary */ -static inline void -add_domain(register char *name, register const char *domain) -{ - register char *cp; - - /* Kill trailing white space and convert to lowercase */ - for (cp = name; *cp != '\0' && !isspace(*cp); ++cp) - if (isupper(*cp)) - *cp = tolower(*cp); - *cp-- = '\0'; - /* If necessary, append domain */ - if (cp >= name && *cp++ != '.') { - if (*domain != '.') - *cp++ = '.'; - (void)strcpy(cp, domain); - } - /* XXX should we insure a trailing dot? */ -} - int main(int argc, char **argv) { - register char *cp; - register int op, status, i, donamedboot, donamedconf; + char *cp; + int op, donamedboot, donamedconf; if ((cp = strrchr(argv[0], '/')) != NULL) prog = cp + 1; @@ -246,180 +312,409 @@ main(int argc, char **argv) if (optind != argc || (donamedboot && donamedconf)) usage(); - if (donamedboot) - status = doboot(bootfile, 1); - else if (donamedconf) - status = doconf(conffile, 1); - else { - status = doconf(conffile, 0); - if (status < 0) { - status = doboot(bootfile, 1); - ++donamedboot; - } else + /* Find config file if not manually specified */ + if (!donamedboot && !donamedconf) { + if (access(conffile, R_OK) >= 0) ++donamedconf; - } + if (access(bootfile, R_OK) >= 0) + ++donamedboot; - if (donamedboot) { - if (nslintboot != NULL) - status |= doboot(nslintboot, 1); - else if ((i = doboot(NSLINTBOOT, 0)) > 0) - status |= i; - } else { - if (nslintconf != NULL) - status |= doconf(nslintconf, 1); - else if ((i = doconf(NSLINTCONF, 0)) > 0) - status |= i; - } - status |= nslint(); - exit (status); -} - -struct netlist { - u_int32_t net; - u_int32_t mask; -}; - -static struct netlist *netlist; -static u_int netlistsize; /* size of array */ -static u_int netlistcnt; /* next free element */ - -static u_int32_t -findmask(u_int32_t addr) -{ - register int i; - - for (i = 0; i < netlistcnt; ++i) - if ((addr & netlist[i].mask) == netlist[i].net) - return (netlist[i].mask); - return (0); -} - -int -parsenetwork(register const char *cp, register char **errstrp) -{ - register int i, w; - register u_int32_t net, mask; - register u_int32_t o; - register int shift; - static char errstr[132]; - - while (isspace(*cp)) - ++cp; - net = 0; - mask = 0; - shift = 24; - while (isdigit(*cp) && shift >= 0) { - o = 0; - do { - o = o * 10 + (*cp++ - '0'); - } while (isdigit(*cp)); - net |= o << shift; - shift -= 8; - if (*cp != '.') - break; - ++cp; - } - - - if (isspace(*cp)) { - ++cp; - while (isspace(*cp)) - ++cp; - mask = htonl(inet_addr(cp)); - if ((int)mask == -1) { - *errstrp = errstr; - (void)sprintf(errstr, "bad mask \"%s\"", cp); - return (0); - } - i = 0; - while (isdigit(*cp)) - ++cp; - for (i = 0; i < 3 && *cp == '.'; ++i) { - ++cp; - while (isdigit(*cp)) - ++cp; - } - if (i != 3) { - *errstrp = "wrong number of dots in mask"; - return (0); - } - } else if (*cp == '/') { - ++cp; - w = atoi(cp); - do { - ++cp; - } while (isdigit(*cp)); - if (w < 1 || w > 32) { - *errstrp = "bad mask width"; - return (0); - } - mask = 0xffffffff << (32 - w); - } else { - *errstrp = "garbage after net"; - return (0); - } - - while (isspace(*cp)) - ++cp; - - if (*cp != '\0') { - *errstrp = "trailing garbage"; - return (0); - } - - /* Finaly sanity checks */ - if ((net & ~ mask) != 0) { - *errstrp = errstr; - (void)sprintf(errstr, "host bits set in net \"%s\"", - intoa(net)); - return (0); - } - - /* Make sure there's room */ - if (netlistsize <= netlistcnt) { - if (netlistsize == 0) { - netlistsize = 32; - netlist = (struct netlist *) - malloc(netlistsize * sizeof(*netlist)); - } else { - netlistsize <<= 1; - netlist = (struct netlist *) - realloc(netlist, netlistsize * sizeof(*netlist)); - } - if (netlist == NULL) { - fprintf(stderr, "%s: nslint: malloc/realloc: %s\n", - prog, strerror(errno)); + if (donamedboot && donamedconf) { + fprintf(stderr, + "%s: nslint: both %s and %s exist; use -b or -c\n", + prog, conffile, bootfile); exit(1); } } - /* Add to list */ - netlist[netlistcnt].net = net; - netlist[netlistcnt].mask = mask; - ++netlistcnt; + if (donamedboot) { + doboot(bootfile, CONF_MUSTEXIST | CONF_NOZONE); + if (nslintboot != NULL) + doboot(nslintboot, CONF_MUSTEXIST); + else + doboot(NSLINTBOOT, 0); + doboot(bootfile, CONF_MUSTEXIST); + } else { + doconf(conffile, CONF_MUSTEXIST | CONF_NOZONE); + if (nslintconf != NULL) + doconf(nslintconf, CONF_MUSTEXIST); + else + doconf(NSLINTCONF, 0); + doconf(conffile, CONF_MUSTEXIST); + } - return (1); + /* Sort network list */ + if (netlistcnt > 0) + qsort(netlist, netlistcnt, sizeof(netlist[0]), cmpnetwork); + + nslint(); + exit (errors != 0); +} + +/* add domain if necessary */ +void +add_domain(char *name, const char *domain) +{ + char *cp; + + /* Kill trailing white space and convert to lowercase */ + for (cp = name; *cp != '\0' && !isspace(*cp); ++cp) + if (isupper(*cp)) + *cp = tolower(*cp); + *cp-- = '\0'; + /* If necessary, append domain */ + if (cp >= name && *cp++ != '.') { + if (*domain != '.') + *cp++ = '.'; + (void)strcpy(cp, domain); + } + /* XXX should we insure a trailing dot? */ +} + +const char * +addr2str(struct addr *ap) +{ + struct network net; + + memset(&net, 0, sizeof(net)); + net.family = ap->family; + switch (ap->family) { + + case AF_INET: + net.n_addr4 = ap->a_addr4; + setmaskwidth(32, &net); + break; + + case AF_INET6: + memmove(net.n_addr6, &ap->a_addr6, sizeof(ap->a_addr6)); + setmaskwidth(128, &net); + break; + + default: + return (""); + } + return (network2str(&net)); +} + +/* + * Returns true if name is really an ip address. + */ +int +checkaddr(const char *name) +{ + struct in_addr addr; + + return (inet_pton(AF_INET, name, (char *)&addr)); +} + +/* + * Returns true if name contains a dot but not a trailing dot. + * Special case: allow a single dot if the second part is not one + * of the 3 or 4 letter top level domains or is any 2 letter TLD + */ +int +checkdots(const char *name) +{ + const char *cp, *cp2; + + if ((cp = strchr(name, '.')) == NULL) + return (0); + cp2 = name + strlen(name) - 1; + if (cp2 >= name && *cp2 == '.') + return (0); + + /* Return true of more than one dot*/ + ++cp; + if (strchr(cp, '.') != NULL) + return (1); + + if (strlen(cp) == 2 || + strcasecmp(cp, "gov") == 0 || + strcasecmp(cp, "edu") == 0 || + strcasecmp(cp, "com") == 0 || + strcasecmp(cp, "net") == 0 || + strcasecmp(cp, "org") == 0 || + strcasecmp(cp, "mil") == 0 || + strcasecmp(cp, "int") == 0 || + strcasecmp(cp, "nato") == 0 || + strcasecmp(cp, "arpa") == 0) + return (1); + return (0); +} + +/* Records we use to detect duplicates */ +static struct duprec { + int record; + char *name; +} duprec[] = { + { REC_A, "a" }, + { REC_AAAA, "aaaa" }, + { REC_HINFO, "hinfo" }, + { REC_CNAME, "cname" }, + { 0, NULL }, +}; + +void +checkdups(struct item *ip, int records) +{ + struct duprec *dp; + + records &= (ip->records & MASK_TEST_DUP); + if (records == 0) + return; + for (dp = duprec; dp->name != NULL; ++dp) + if ((records & dp->record) != 0) { + ++errors; + fprintf(stderr, "%s: multiple \"%s\" records for %s\n", + prog, dp->name, ip->host); + records &= ~dp->record; + } + if (records != 0) + fprintf(stderr, "%s: checkdups: records not zero %s (0x%x)\n", + prog, ip->host, records); +} + +/* Check for an "ignored zone" (usually dynamic dns) */ +int +checkignoredzone(const char *name) +{ + int i, len, len2; + + len = strlen(name); + if (len > 1 && name[len - 1] == '.') + --len; + for (i = 0; i < numignoredzones; ++i) { + len2 = len - ignoredzones[i].len; + if (len2 >= 0 && + strncasecmp(name + len2, + ignoredzones[i].zone, len - len2) == 0) + return (1); + } + return (0); } int -doboot(register const char *file, register int mustexist) +checkserv(const char *serv, char **p) { - register int n; - register char *cp, *cp2; - register FILE *f; - char *errstr; + for (; *p != NULL; ++p) + if (*serv == **p && strcmp(serv, *p) == 0) + return (1); + return (0); +} + +int +checkwks(FILE *f, char *proto, int *smtpp, char **errstrp) +{ + int n, sawparen; + char *cp, *serv, **p; + static char errstr[132]; + char buf[1024]; + char psbuf[512]; + + if (!protoserv_init) { + initprotoserv(); + ++protoserv_init; + } + + /* Line count */ + n = 0; + + /* Terminate protocol */ + cp = proto; + while (!isspace(*cp) && *cp != '\0') + ++cp; + if (*cp != '\0') + *cp++ = '\0'; + + /* Find services */ + *smtpp = 0; + sawparen = 0; + if (*cp == '(') { + ++sawparen; + ++cp; + while (isspace(*cp)) + ++cp; + } + for (;;) { + if (*cp == '\0') { + if (!sawparen) + break; + if (fgets(buf, sizeof(buf), f) == NULL) { + *errstrp = "mismatched parens"; + return (n); + } + ++n; + cp = buf; + while (isspace(*cp)) + ++cp; + } + /* Find end of service, converting to lowercase */ + for (serv = cp; !isspace(*cp) && *cp != '\0'; ++cp) + if (isupper(*cp)) + *cp = tolower(*cp); + if (*cp != '\0') + *cp++ = '\0'; + if (sawparen && *cp == ')') { + /* XXX should check for trailing junk */ + break; + } + + (void)sprintf(psbuf, "%s/%s", serv, proto); + + if (*serv == 's' && strcmp(psbuf, "tcp/smtp") == 0) + ++*smtpp; + + for (p = protoserv; *p != NULL; ++p) + if (*psbuf == **p && strcmp(psbuf, *p) == 0) { + break; + } + if (*p == NULL) { + sprintf(errstr, "%s unknown", psbuf); + *errstrp = errstr; + break; + } + } + + return (n); +} + +int +cmpaddr(const void *arg1, const void *arg2) +{ + int i, r1; + const struct network *n1, *n2; + + n1 = (const struct network *)arg1; + n2 = (const struct network *)arg2; + + /* IPv4 before IPv6 */ + if (n1->family != n2->family) + return ((n1->family == AF_INET) ? -1 : 1); + + switch (n1->family) { + + case AF_INET: + /* Address */ + if (ntohl(n1->n_addr4) < ntohl(n2->n_addr4)) + return (-1); + else if (ntohl(n1->n_addr4) > ntohl(n2->n_addr4)) + return (1); + return (0); + + case AF_INET6: + /* Address */ + r1 = 0; + for (i = 0; i < 16; ++i) { + if (ntohl(n1->n_addr6[i]) < ntohl(n2->n_addr6[i])) + return (-1); + if (ntohl(n1->n_addr6[i]) > ntohl(n2->n_addr6[i])) + return (1); + } + return (0); + + default: + abort(); + } +} + +int +cmpitemaddr(const void *arg1, const void *arg2) +{ + struct item *i1, *i2; + + i1 = (struct item *)arg1; + i2 = (struct item *)arg2; + + return (cmpaddr(&i1->addr, &i2->addr)); +} + +int +cmpitemhost(const void *arg1, const void *arg2) +{ + struct item *i1, *i2; + + i1 = (struct item *)arg1; + i2 = (struct item *)arg2; + + return (strcasecmp(i1->host, i1->host)); +} + +/* Sort by network number (use mask when networks are the same) */ +int +cmpnetwork(const void *arg1, const void *arg2) +{ + int i, r1, r2; + const struct network *n1, *n2; + + n1 = (const struct network *)arg1; + n2 = (const struct network *)arg2; + + /* IPv4 before IPv6 */ + if (n1->family != n2->family) + return ((n1->family == AF_INET) ? -1 : 1); + + switch (n1->family) { + + case AF_INET: + /* Address */ + if (ntohl(n1->n_addr4) < ntohl(n2->n_addr4)) + return (-1); + else if (ntohl(n1->n_addr4) > ntohl(n2->n_addr4)) + return (1); + + /* Mask */ + if (ntohl(n1->n_mask4) < ntohl(n2->n_mask4)) + return (1); + else if (ntohl(n1->n_mask4) > ntohl(n2->n_mask4)) + return (-1); + return (0); + + case AF_INET6: + /* Address */ + r1 = 0; + for (i = 0; i < 16; ++i) { + if (ntohl(n1->n_addr6[i]) < ntohl(n2->n_addr6[i])) + return (-1); + if (ntohl(n1->n_addr6[i]) > ntohl(n2->n_addr6[i])) + return (1); + } + + /* Mask */ + r2 = 0; + for (i = 0; i < 16; ++i) { + if (n1->n_mask6[i] < n2->n_mask6[i]) + return (1); + if (n1->n_mask6[i] > n2->n_mask6[i]) + return (-1); + } + return (0); + break; + + default: + abort(); + } + abort(); +} + +void +doboot(const char *file, int flags) +{ + int n; + char *cp, *cp2; + FILE *f; + const char *errstr; char buf[1024], name[128]; errno = 0; f = fopen(file, "r"); if (f == NULL) { /* Not an error if it doesn't exist */ - if (!mustexist && errno == ENOENT) { + if ((flags & CONF_MUSTEXIST) == 0 && errno == ENOENT) { if (debug > 1) printf( "%s: doit: %s doesn't exist (ignoring)\n", prog, file); - return (-1); + return; } fprintf(stderr, "%s: %s: %s\n", prog, file, strerror(errno)); exit(1); @@ -499,11 +794,13 @@ doboot(register const char *file, register int mustexist) /* Process it! (zone is the same as the domain) */ nsoaval = -1; memset(soaval, 0, sizeof(soaval)); - process(cp2, name, name); + if ((flags & CONF_NOZONE) == 0) + process(cp2, name, name); continue; } if (strcasecmp(cp2, "network") == 0) { - if (!parsenetwork(cp, &errstr)) { + errstr = parsenetwork(cp); + if (errstr != NULL) { ++errors; fprintf(stderr, "%s: %s:%d: bad network: %s\n", @@ -517,24 +814,22 @@ doboot(register const char *file, register int mustexist) while (!isspace(*cp) && *cp != '\0') ++cp; *cp = '\0'; - errors += doboot(cp2, 1); + doboot(cp2, 1); continue; } /* Eat any other options */ } (void)fclose(f); - - return (errors != 0); } -int -doconf(register const char *file, register int mustexist) +void +doconf(const char *file, int flags) { - register int n, fd, cc, i, depth; - register char *cp, *cp2, *buf; - register char *name, *zonename, *filename, *typename; - register int namelen, zonenamelen, filenamelen, typenamelen; - char *errstr; + int n, fd, cc, i, depth; + char *cp, *cp2, *buf; + const char *p; + char *name, *zonename, *filename, *typename; + int namelen, zonenamelen, filenamelen, typenamelen; struct stat sbuf; char zone[128], includefile[256]; @@ -542,12 +837,12 @@ doconf(register const char *file, register int mustexist) fd = open(file, O_RDONLY, 0); if (fd < 0) { /* Not an error if it doesn't exist */ - if (!mustexist && errno == ENOENT) { + if ((flags & CONF_MUSTEXIST) == 0 && errno == ENOENT) { if (debug > 1) printf( "%s: doconf: %s doesn't exist (ignoring)\n", prog, file); - return (-1); + return; } fprintf(stderr, "%s: %s: %s\n", prog, file, strerror(errno)); exit(1); @@ -656,7 +951,7 @@ doconf(register const char *file, register int mustexist) /* Eat everything to the next semicolon, perhaps eating matching qbraces */ #define EATSEMICOLON \ { \ - register int depth = 0; \ + int depth = 0; \ while (*cp != '\0') { \ EATCOMMENTS \ if (*cp == ';') { \ @@ -679,6 +974,17 @@ doconf(register const char *file, register int mustexist) } \ } +/* Eat everything to the next left qbrace */ +#define EATSLEFTBRACE \ + while (*cp != '\0') { \ + EATCOMMENTS \ + if (*cp == '{') { \ + ++cp; \ + break; \ + } \ + ++cp; \ + } + n = 1; zone[0] = '\0'; cp = buf; @@ -855,7 +1161,8 @@ doconf(register const char *file, register int mustexist) filename[filenamelen] = '\0'; nsoaval = -1; memset(soaval, 0, sizeof(soaval)); - process(filename, zone, zone); + if ((flags & CONF_NOZONE) == 0) + process(filename, zone, zone); } continue; } @@ -878,13 +1185,28 @@ doconf(register const char *file, register int mustexist) EATCOMMENTS GETQUOTEDNAME(cp2, i) - cp2[i] = '\0'; - if (!parsenetwork(cp2, &errstr)) { + p = parsenetwork(cp2); + if (p != NULL) { ++errors; fprintf(stderr, "%s: %s:%d: bad network: %s\n", - prog, file, n, errstr); + prog, file, n, p); + } + } else if (strncasecmp(name, "ignorezone", + namelen) == 0) { + EATCOMMENTS + GETQUOTEDNAME(cp2, i) + cp2[i] = '\0'; + if (numignoredzones + 1 < + sizeof(ignoredzones) / + sizeof(ignoredzones[0])) { + ignoredzones[numignoredzones].zone = + savestr(cp2); + if (ignoredzones[numignoredzones].zone != NULL) { + ignoredzones[numignoredzones].len = strlen(cp2); + ++numignoredzones; + } } } else { ++errors; @@ -899,7 +1221,9 @@ doconf(register const char *file, register int mustexist) EATCOMMENTS if (*cp != ';') { ++errors; - fprintf(stderr, "missing options semi\n"); + fprintf(stderr, + "%s: %s:%d: missing nslint semi\n", + prog, file, n); } else ++cp; continue; @@ -909,10 +1233,14 @@ doconf(register const char *file, register int mustexist) GETQUOTEDNAME(filename, filenamelen) strncpy(includefile, filename, filenamelen); includefile[filenamelen] = '\0'; - errors += doconf(includefile, 1); + doconf(includefile, 1); EATSEMICOLON continue; } + if (strncasecmp(name, "view", namelen) == 0) { + EATSLEFTBRACE + continue; + } /* Skip over statements we don't understand */ EATSEMICOLON @@ -920,14 +1248,691 @@ doconf(register const char *file, register int mustexist) free(buf); close(fd); - return (errors != 0); +} + +const char * +extractaddr(const char *str, struct addr *ap) +{ + + memset(ap, 0, sizeof(*ap)); + + /* Let's see what we've got here */ + if (strchr(str, '.') != NULL) { + ap->family = AF_INET; + } else if (strchr(str, ':') != NULL) { + ap->family = AF_INET6; + } else + return ("unrecognized address type"); + + switch (ap->family) { + + case AF_INET: + if (!inet_pton(ap->family, str, &ap->a_addr4)) + return ("cannot parse IPv4 address"); + + break; + + case AF_INET6: + if (!inet_pton(ap->family, str, &ap->a_addr6)) + return ("cannot parse IPv6 address"); + break; + + default: + abort(); + } + + return (NULL); +} + +const char * +extractnetwork(const char *str, struct network *np) +{ + int i; + long w; + char *cp, *ep; + const char *p; + char temp[64]; + + memset(np, 0, sizeof(*np)); + + /* Let's see what we've got here */ + if (strchr(str, '.') != NULL) { + np->family = AF_INET; + w = 32; + } else if (strchr(str, ':') != NULL) { + np->family = AF_INET6; + w = 128; + } else + return ("unrecognized address type"); + + p = strchr(str, '/'); + if (p != NULL) { + /* Mask length was specified */ + strncpy(temp, str, sizeof(temp)); + temp[sizeof(temp) - 1] = '\0'; + cp = strchr(temp, '/'); + if (cp == NULL) + abort(); + *cp++ = '\0'; + ep = NULL; + w = strtol(cp, &ep, 10); + if (*ep != '\0') + return ("garbage following mask width"); + str = temp; + } + + switch (np->family) { + + case AF_INET: + if (!inet_pton(np->family, str, &np->n_addr4)) + return ("cannot parse IPv4 address"); + + if (w > 32) + return ("mask length must be <= 32"); + setmaskwidth(w, np); + + if ((np->n_addr4 & ~np->n_mask4) != 0) + return ("non-network bits set in addr"); + +#ifdef notdef + if ((ntohl(np->n_addr4) & 0xff000000) == 0) + return ("high octet must be non-zero"); +#endif + break; + + case AF_INET6: + if (!inet_pton(np->family, str, &np->n_addr6)) + return ("cannot parse IPv6 address"); + if (w > 128) + return ("mask length must be <= 128"); + setmaskwidth(w, np); + + for (i = 0; i < 16; ++i) { + if ((np->n_addr6[i] & ~np->n_mask6[i]) != 0) + return ("non-network bits set in addr"); + } + break; + + default: + abort(); + } + + return (NULL); +} + +struct network * +findnetwork(struct addr *ap) +{ + int i, j; + struct network *np; + + switch (ap->family) { + + case AF_INET: + for (i = 0, np = netlist; i < netlistcnt; ++i, ++np) + if ((ap->a_addr4 & np->n_mask4) == np->n_addr4) + return (np); + break; + + case AF_INET6: + for (i = 0, np = netlist; i < netlistcnt; ++i, ++np) { + for (j = 0; j < sizeof(ap->a_addr6); ++j) { + if ((ap->a_addr6[j] & np->n_mask6[j]) != + np->n_addr6[j]) + break; + } + if (j >= sizeof(ap->a_addr6)) + return (np); + } + break; + + default: + abort(); + } + return (NULL); +} + +void +initprotoserv(void) +{ + char *cp; + struct servent *sp; + char psbuf[512]; + + protoserv_len = 256; + protoserv = (char **)malloc(protoserv_len * sizeof(*protoserv)); + if (protoserv == NULL) { + fprintf(stderr, "%s: nslint: malloc: %s\n", + prog, strerror(errno)); + exit(1); + } + + while ((sp = getservent()) != NULL) { + (void)sprintf(psbuf, "%s/%s", sp->s_name, sp->s_proto); + + /* Convert to lowercase */ + for (cp = psbuf; *cp != '\0'; ++cp) + if (isupper(*cp)) + *cp = tolower(*cp); + + if (protoserv_last + 1 >= protoserv_len) { + protoserv_len <<= 1; + protoserv = realloc(protoserv, + protoserv_len * sizeof(*protoserv)); + if (protoserv == NULL) { + fprintf(stderr, "%s: nslint: realloc: %s\n", + prog, strerror(errno)); + exit(1); + } + } + protoserv[protoserv_last] = savestr(psbuf); + ++protoserv_last; + } + protoserv[protoserv_last] = NULL; +} + +int +maskwidth(struct network *np) +{ + int w; + int i, j; + u_int32_t m, tm; + + /* Work backwards until we find a set bit */ + switch (np->family) { + + case AF_INET: + m = ntohl(np->n_mask4); + for (w = 32; w > 0; --w) { + tm = 0xffffffff << (32 - w); + if (tm == m) + break; + } + break; + + case AF_INET6: + w = 128; + for (j = 15; j >= 0; --j) { + m = np->n_mask6[j]; + for (i = 8; i > 0; --w, --i) { + tm = (0xff << (8 - i)) & 0xff; + if (tm == m) + return (w); + } + } + break; + + default: + abort(); + } + return (w); +} + +const char * +network2str(struct network *np) +{ + int w; + size_t len, size; + char *cp; + static char buf[128]; + + w = maskwidth(np); + switch (np->family) { + + case AF_INET: + if (inet_ntop(np->family, &np->n_addr4, + buf, sizeof(buf)) == NULL) { + fprintf(stderr, "network2str: v4 botch"); + abort(); + } + if (w == 32) + return (buf); + break; + + case AF_INET6: + if (inet_ntop(np->family, &np->n_addr6, + buf, sizeof(buf)) == NULL) { + fprintf(stderr, "network2str: v6 botch"); + abort(); + } + if (w == 128) + return (buf); + break; + + default: + return (""); + } + + /* Append address mask width */ + cp = buf; + len = strlen(cp); + cp += len; + size = sizeof(buf) - len; + (void)snprintf(cp, size, "/%d", w); + return (buf); +} + +void +nslint(void) +{ + int n, records, flags; + struct item *ip, *lastaip, **ipp, **itemlist; + struct addr addr, lastaddr; + struct network *np; + + itemlist = (struct item **)calloc(itemcnt, sizeof(*ipp)); + if (itemlist == NULL) { + fprintf(stderr, "%s: nslint: calloc: %s\n", + prog, strerror(errno)); + exit(1); + } + ipp = itemlist; + for (n = 0, ip = items; n < ITEMSIZE; ++n, ++ip) { + if (ip->host == NULL) + continue; + /* Save entries with addresses for later check */ + if (ip->addr.family != 0) + *ipp++ = ip; + + if (debug > 1) { + if (debug > 2) + printf("%d\t", n); + printf("%s\t%s\t0x%x\t0x%x\n", + ip->host, addr2str(&ip->addr), + ip->records, ip->flags); + } + + /* Check for illegal hostnames (rfc1034) */ + if (rfc1034host(ip->host, ip->records)) + ++errors; + + /* Check for missing ptr records (ok if also an ns record) */ + records = ip->records & MASK_CHECK_REC; + if ((ip->records & MASK_TEST_REC) != 0) + records |= REC_OTHER; + switch (records) { + + case REC_A | REC_OTHER | REC_PTR | REC_REF: + case REC_A | REC_OTHER | REC_PTR: + case REC_A | REC_PTR | REC_REF: + case REC_A | REC_PTR: + case REC_AAAA | REC_OTHER | REC_PTR | REC_REF: + case REC_AAAA | REC_OTHER | REC_PTR: + case REC_AAAA | REC_PTR | REC_REF: + case REC_AAAA | REC_PTR: + case REC_CNAME: + /* These are O.K. */ + break; + + case REC_CNAME | REC_REF: + ++errors; + fprintf(stderr, "%s: \"cname\" referenced by other" + " \"cname\" or \"mx\": %s\n", prog, ip->host); + break; + + case REC_OTHER | REC_REF: + case REC_OTHER: + /* + * This is only an error if there is an address + * associated with the hostname; this means + * there was a wks entry with bogus address. + * Otherwise, we have an mx or hinfo. + * + * XXX ignore localhost for now + * (use flag to indicate loopback?) + */ + if (ip->addr.family == AF_INET && + ip->addr.a_addr4 != htonl(INADDR_LOOPBACK)) { + ++errors; + fprintf(stderr, + "%s: \"wks\" without \"a\" and \"ptr\": %s -> %s\n", + prog, ip->host, addr2str(&ip->addr)); + } + break; + + case REC_REF: + if (!checkignoredzone(ip->host)) { + ++errors; + fprintf(stderr, "%s: Name referenced without" + " other records: %s\n", prog, ip->host); + } + break; + + case REC_A | REC_OTHER | REC_REF: + case REC_A | REC_OTHER: + case REC_A | REC_REF: + case REC_A: + case REC_AAAA | REC_OTHER | REC_REF: + case REC_AAAA | REC_OTHER: + case REC_AAAA | REC_REF: + case REC_AAAA: + ++errors; + fprintf(stderr, "%s: Missing \"ptr\": %s -> %s\n", + prog, ip->host, addr2str(&ip->addr)); + break; + + case REC_OTHER | REC_PTR | REC_REF: + case REC_OTHER | REC_PTR: + case REC_PTR | REC_REF: + case REC_PTR: + ++errors; + fprintf(stderr, "%s: Missing \"a\": %s -> %s\n", + prog, ip->host, addr2str(&ip->addr)); + break; + + case REC_A | REC_CNAME | REC_OTHER | REC_PTR | REC_REF: + case REC_A | REC_CNAME | REC_OTHER | REC_PTR: + case REC_A | REC_CNAME | REC_OTHER | REC_REF: + case REC_A | REC_CNAME | REC_OTHER: + case REC_A | REC_CNAME | REC_PTR | REC_REF: + case REC_A | REC_CNAME | REC_PTR: + case REC_A | REC_CNAME | REC_REF: + case REC_A | REC_CNAME: + case REC_AAAA | REC_CNAME | REC_OTHER | REC_PTR | REC_REF: + case REC_AAAA | REC_CNAME | REC_OTHER | REC_PTR: + case REC_AAAA | REC_CNAME | REC_OTHER | REC_REF: + case REC_AAAA | REC_CNAME | REC_OTHER: + case REC_AAAA | REC_CNAME | REC_PTR | REC_REF: + case REC_AAAA | REC_CNAME | REC_PTR: + case REC_AAAA | REC_CNAME | REC_REF: + case REC_AAAA | REC_CNAME: + case REC_CNAME | REC_OTHER | REC_PTR | REC_REF: + case REC_CNAME | REC_OTHER | REC_PTR: + case REC_CNAME | REC_OTHER | REC_REF: + case REC_CNAME | REC_OTHER: + case REC_CNAME | REC_PTR | REC_REF: + case REC_CNAME | REC_PTR: + ++errors; + fprintf(stderr, "%s: \"cname\" %s has other records\n", + prog, ip->host); + break; + + case 0: + /* Second level test */ + if ((ip->records & ~(REC_NS | REC_TXT)) == 0) + break; + /* Fall through... */ + + default: + ++errors; + fprintf(stderr, + "%s: records == 0x%x: can't happen (%s 0x%x)\n", + prog, records, ip->host, ip->records); + break; + } + + /* Check for smtp problems */ + flags = ip->flags & MASK_TEST_SMTP; + + if ((flags & FLG_SELFMX) != 0 && + (ip->records & (REC_A | REC_AAAA)) == 0) { + ++errors; + fprintf(stderr, + "%s: Self \"mx\" for %s missing" + " \"a\" or \"aaaa\" record\n", + prog, ip->host); + } + + switch (flags) { + + case 0: + case FLG_SELFMX | FLG_SMTPWKS: + /* These are O.K. */ + break; + + case FLG_SELFMX: + if ((ip->records & REC_WKS) != 0) { + ++errors; + fprintf(stderr, + "%s: smtp/tcp missing from \"wks\": %s\n", + prog, ip->host); + } + break; + + case FLG_SMTPWKS: + ++errors; + fprintf(stderr, + "%s: Saw smtp/tcp without self \"mx\": %s\n", + prog, ip->host); + break; + + default: + ++errors; + fprintf(stderr, + "%s: flags == 0x%x: can't happen (%s)\n", + prog, flags, ip->host); + } + + /* Check for chained MX records */ + if ((ip->flags & (FLG_SELFMX | FLG_MXREF)) == FLG_MXREF && + (ip->records & REC_MX) != 0) { + ++errors; + fprintf(stderr, "%s: \"mx\" referenced by other" + " \"mx\" record: %s\n", prog, ip->host); + } + } + + /* Check for doubly booked addresses */ + n = ipp - itemlist; + qsort(itemlist, n, sizeof(itemlist[0]), cmpaddr); + memset(&lastaddr, 0, sizeof(lastaddr)); + ip = NULL; + for (ipp = itemlist; n > 0; ++ipp, --n) { + addr = (*ipp)->addr; + if (cmpaddr(&lastaddr, &addr) == 0 && + ((*ipp)->flags & FLG_ALLOWDUPA) == 0 && + (ip->flags & FLG_ALLOWDUPA) == 0) { + ++errors; + fprintf(stderr, "%s: %s in use by %s and %s\n", + prog, addr2str(&addr), (*ipp)->host, ip->host); + } + memmove(&lastaddr, &addr, sizeof(addr)); + ip = *ipp; + } + + /* Check for hosts with multiple addresses on the same subnet */ + n = ipp - itemlist; + qsort(itemlist, n, sizeof(itemlist[0]), cmpitemhost); + if (netlistcnt > 0) { + n = ipp - itemlist; + lastaip = NULL; + for (ipp = itemlist; n > 0; ++ipp, --n) { + ip = *ipp; + if ((ip->records & (REC_A | REC_AAAA)) == 0 || + (ip->flags & FLG_ALLOWDUPA) != 0) + continue; + if (lastaip != NULL && + strcasecmp(ip->host, lastaip->host) == 0) { + np = findnetwork(&ip->addr); + if (np == NULL) { + ++errors; + fprintf(stderr, + "%s: Can't find subnet mask" + " for %s (%s)\n", + prog, ip->host, + addr2str(&ip->addr)); + } else if (samesubnet(&lastaip->addr, + &ip->addr, np)) { + ++errors; + fprintf(stderr, + "%s: Multiple \"a\" records for %s on subnet %s", + prog, ip->host, + network2str(np)); + fprintf(stderr, "\n\t(%s", + addr2str(&lastaip->addr)); + fprintf(stderr, " and %s)\n", + addr2str(&ip->addr)); + } + } + lastaip = ip; + } + } + + if (debug) + printf("%s: %d/%d items used, %d error%s\n", prog, itemcnt, + ITEMSIZE, errors, errors == 1 ? "" : "s"); +} + +const char * +parsenetwork(const char *cp) +{ + const char *p; + struct network net; + + while (isspace(*cp)) + ++cp; + + p = extractnetwork(cp, &net); + if (p != NULL) + return (p); + + while (isspace(*cp)) + ++cp; + + /* Make sure there's room */ + if (netlistsize <= netlistcnt) { + if (netlistsize == 0) { + netlistsize = 32; + netlist = (struct network *) + malloc(netlistsize * sizeof(*netlist)); + } else { + netlistsize <<= 1; + netlist = (struct network *) + realloc(netlist, netlistsize * sizeof(*netlist)); + } + if (netlist == NULL) { + fprintf(stderr, + "%s: parsenetwork: malloc/realloc: %s\n", + prog, strerror(errno)); + exit(1); + } + } + + /* Add to list */ + memmove(netlist + netlistcnt, &net, sizeof(net)); + ++netlistcnt; + + return (NULL); +} + +const char * +parseptr(const char *str, struct addr *ap) +{ + int i, n, base; + u_long v, v2; + char *cp; + const char *p; + u_char *up; + + memset(ap, 0, sizeof(*ap)); + base = -1; + + /* IPv4 */ + p = str + strlen(str) - sizeof(inaddr) + 1; + if (p >= str && strcasecmp(p, inaddr) == 0) { + ap->family = AF_INET; + n = 4; + base = 10; + } else { + /* IPv6 */ + p = str + strlen(str) - sizeof(inaddr6) + 1; + if (p >= str && strcasecmp(p, inaddr6) == 0) { + ap->family = AF_INET6; + n = 16; + base = 16; + } + } + + if (base < 0) + return ("Not a IPv4 or IPv6 \"ptr\" record"); + + up = (u_char *)&ap->addr; + for (i = 0; i < n; ++i) { + /* Back up to previous dot or beginning of string */ + while (p > str && p[-1] != '.') + --p; + v = strtoul(p, &cp, base); + + if (base == 10) { + if (v > 0xff) + return ("Octet larger than 8 bits"); + } else { + if (v > 0xf) + return ("Octet larger than 4 bits"); + if (*cp != '.') + return ("Junk in \"ptr\" record"); + + /* Back up over dot */ + if (p > str) + --p; + + /* Back up to previous dot or beginning of string */ + while (p > str && p[-1] != '.') + --p; + v2 = strtoul(p, &cp, base); + if (v2 > 0xf) + return ("Octet larger than 4 bits"); + if (*cp != '.') + return ("Junk in \"ptr\" record"); + v = (v << 4) | v2; + } + if (*cp != '.') + return ("Junk in \"ptr\" record"); + + *up++ = v & 0xff; + + /* Back up over dot */ + if (p > str) + --p; + else if (p == str) + break; + } + if (i < n - 1) + return ("Too many octets in \"ptr\" record"); + if (p != str) + return ("Not enough octets in \"ptr\" record"); + + return (NULL); +} + +/* Returns a pointer after the next token or quoted string, else NULL */ +char * +parsequoted(char *cp) +{ + + if (*cp == '"') { + ++cp; + while (*cp != '"' && *cp != '\0') + ++cp; + if (*cp != '"') + return (NULL); + ++cp; + } else { + while (!isspace(*cp) && *cp != '\0') + ++cp; + } + return (cp); } /* Return true when done */ int -parsesoa(register const char *cp, register char **errstrp) +parserrsig(const char *str, char **errstrp) { - register char ch, *garbage; + const char *cp; + + /* XXX just look for closing paren */ + cp = str + strlen(str) - 1; + while (cp >= str) + if (*cp-- == ')') + return (1); + return (0); +} + +/* Return true when done */ +int +parsesoa(const char *cp, char **errstrp) +{ + char ch, *garbage; static char errstr[132]; /* Eat leading whitespace */ @@ -1024,20 +2029,28 @@ parsesoa(register const char *cp, register char **errstrp) } void -process(register const char *file, register const char *domain, - register const char *zone) +process(const char *file, const char *domain, const char *zone) { - register FILE *f; - register char ch, *cp, *cp2, *cp3, *rtype; - register const char *ccp; - register int n, sawsoa, flags, i; - register u_int ttl; - register u_int32_t addr; - u_int32_t net, mask; + FILE *f; + char ch, *cp, *cp2, *cp3, *rtype; + const char *p; + int n, sawsoa, sawrrsig, flags, i; + u_int ttl; + enum rrtype rrtype; + struct addr *ap; + struct addr addr; + // struct network *net; int smtp; - char buf[1024], name[128], lastname[128], odomain[128]; + char buf[2048], name[256], lastname[256], odomain[256]; char *errstr; - char *dotfmt = "%s: %s/%s:%d \"%s\" target missing trailing dot: %s\n"; + const char *addrfmt = + "%s: %s/%s:%d \"%s\" target is an ip address: %s\n"; + const char *dotfmt = + "%s: %s/%s:%d \"%s\" target missing trailing dot: %s\n"; + + /* Check for an "ignored zone" (usually dynamic dns) */ + if (checkignoredzone(zone)) + return; f = fopen(file, "r"); if (f == NULL) { @@ -1049,22 +2062,14 @@ process(register const char *file, register const char *domain, if (debug > 1) printf("%s: process: opened %s/%s\n", prog, cwd, file); - /* Are we doing an in-addr.arpa domain? */ + /* Line number */ n = 0; - net = 0; - mask = 0; - ccp = domain + strlen(domain) - sizeof(inaddr) + 1; - if (ccp >= domain && strcasecmp(ccp, inaddr) == 0 && - !parseinaddr(domain, &net, &mask)) { - ++errors; - fprintf(stderr, "%s: %s/%s:%d bad in-addr.arpa domain\n", - prog, cwd, file, n); - fclose(f); - return; - } + + ap = &addr; lastname[0] = '\0'; sawsoa = 0; + sawrrsig = 0; while (fgets(buf, sizeof(buf), f) != NULL) { ++n; cp = buf; @@ -1098,11 +2103,26 @@ process(register const char *file, register const char *domain, if (errstr != NULL) { ++errors; fprintf(stderr, - "%s: %s/%s:%d bad \"soa\" record (%s)\n", + "%s: %s/%s:%d Bad \"soa\" record (%s)\n", prog, cwd, file, n, errstr); } continue; } + + /* Handle multi-line rrsig records */ + if (sawrrsig) { + errstr = NULL; + if (parserrsig(cp, &errstr)) + sawsoa = 0; + if (errstr != NULL) { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d Bad \"rrsig\" record (%s)\n", + prog, cwd, file, n, errstr); + } + continue; + } + if (debug > 3) printf(">%s<\n", cp); @@ -1112,7 +2132,7 @@ process(register const char *file, register const char *domain, if (lastname[0] == '\0') { ++errors; fprintf(stderr, - "%s: %s/%s:%d no default name\n", + "%s: %s/%s:%d No default name\n", prog, cwd, file, n); continue; } @@ -1171,19 +2191,6 @@ process(register const char *file, register const char *domain, *cp2 = '\0'; domain = odomain; lastname[0] = '\0'; - - /* Are we doing an in-addr.arpa domain? */ - net = 0; - mask = 0; - ccp = domain + strlen(domain) - (sizeof(inaddr) - 1); - if (ccp >= domain && strcasecmp(ccp, inaddr) == 0 && - !parseinaddr(domain, &net, &mask)) { - ++errors; - fprintf(stderr, - "%s: %s/%s:%d bad in-addr.arpa domain\n", - prog, cwd, file, n); - return; - } continue; } @@ -1202,7 +2209,7 @@ process(register const char *file, register const char *domain, if (*cp != '\0') { ++errors; fprintf(stderr, - "%s: %s/%s:%d bad $ttl \"%s\"\n", + "%s: %s/%s:%d Bad $ttl \"%s\"\n", prog, cwd, file, n, cp2); } (void)strcpy(name, lastname); @@ -1245,10 +2252,9 @@ process(register const char *file, register const char *domain, ; /* none */ } - if (!isspace(*cp)) { ++errors; - fprintf(stderr, "%s: %s/%s:%d bad ttl\n", + fprintf(stderr, "%s: %s/%s:%d Bad ttl\n", prog, cwd, file, n); continue; } @@ -1307,59 +2313,91 @@ process(register const char *file, register const char *domain, } } -#define CHECK4(p, a, b, c, d) \ - (p[0] == (a) && p[1] == (b) && p[2] == (c) && p[3] == (d) && p[4] == '\0') -#define CHECK3(p, a, b, c) \ - (p[0] == (a) && p[1] == (b) && p[2] == (c) && p[3] == '\0') -#define CHECK2(p, a, b) \ - (p[0] == (a) && p[1] == (b) && p[2] == '\0') -#define CHECKDOT(p) \ - (p[0] == '.' && p[1] == '\0') + rrtype = txt2rrtype(rtype); + switch (rrtype) { - if (rtype[0] == 'a' && rtype[1] == '\0') { + case RR_A: /* Handle "a" record */ add_domain(name, domain); - addr = htonl(inet_addr(cp)); - if ((int)addr == -1) { + p = extractaddr(cp, ap); + if (p != NULL) { ++errors; cp2 = cp + strlen(cp) - 1; if (cp2 >= cp && *cp2 == '\n') *cp2 = '\0'; fprintf(stderr, - "%s: %s/%s:%d bad \"a\" record ip addr \"%s\"\n", + "%s: %s/%s:%d Bad \"a\" record ip addr \"%s\"\n", prog, cwd, file, n, cp); continue; } - errors += updateitem(name, addr, REC_A, ttl, 0); - } else if (CHECK4(rtype, 'a', 'a', 'a', 'a')) { - /* Just eat for now */ - continue; - } else if (CHECK3(rtype, 'p', 't', 'r')) { + if (ap->family != AF_INET) { + ++errors; + cp2 = cp + strlen(cp) - 1; + if (cp2 >= cp && *cp2 == '\n') + *cp2 = '\0'; + fprintf(stderr, + "%s: %s/%s:%d \"a\"record not AF_INET \"%s\"\n", + prog, cwd, file, n, cp); + continue; + } + errors += updateitem(name, ap, REC_A, ttl, 0); + break; + + case RR_AAAA: + /* Handle "aaaa" record */ + add_domain(name, domain); + p = extractaddr(cp, ap); + if (p != NULL) { + ++errors; + cp2 = cp + strlen(cp) - 1; + if (cp2 >= cp && *cp2 == '\n') + *cp2 = '\0'; + fprintf(stderr, + "%s: %s/%s:%d Bad \"aaaa\" record ip addr \"%s\"\n", + prog, cwd, file, n, cp); + continue; + } + if (ap->family != AF_INET6) { + ++errors; + cp2 = cp + strlen(cp) - 1; + if (cp2 >= cp && *cp2 == '\n') + *cp2 = '\0'; + fprintf(stderr, + "%s: %s/%s:%d \"aaaa\"record not AF_INET6 \"%s\"\n", + prog, cwd, file, n, cp); + continue; + } + errors += updateitem(name, ap, REC_AAAA, ttl, 0); + break; + + case RR_PTR: /* Handle "ptr" record */ add_domain(name, domain); if (strcmp(cp, "@") == 0) (void)strcpy(cp, zone); if (checkdots(cp)) { ++errors; - fprintf(stderr, dotfmt, + fprintf(stderr, + checkaddr(cp) ? addrfmt : dotfmt, prog, cwd, file, n, rtype, cp); } add_domain(cp, domain); - errstr = NULL; - addr = parseptr(name, net, mask, &errstr); - if (errstr != NULL) { + p = parseptr(name, ap); + if (p != NULL) { ++errors; fprintf(stderr, - "%s: %s/%s:%d bad \"ptr\" record (%s) ip addr \"%s\"\n", - prog, cwd, file, n, errstr, name); + "%s: %s/%s:%d Bad \"ptr\" record (%s) ip addr \"%s\"\n", + prog, cwd, file, n, p, name); continue; } - errors += updateitem(cp, addr, REC_PTR, 0, 0); - } else if (CHECK3(rtype, 's', 'o', 'a')) { + errors += updateitem(cp, ap, REC_PTR, 0, 0); + break; + + case RR_SOA: /* Handle "soa" record */ if (!CHECKDOT(name)) { add_domain(name, domain); - errors += updateitem(name, 0, REC_SOA, 0, 0); + errors += updateitem(name, NULL, REC_SOA, 0, 0); } errstr = NULL; if (!parsesoa(cp, &errstr)) @@ -1367,21 +2405,23 @@ process(register const char *file, register const char *domain, if (errstr != NULL) { ++errors; fprintf(stderr, - "%s: %s/%s:%d bad \"soa\" record (%s)\n", + "%s: %s/%s:%d Bad \"soa\" record (%s)\n", prog, cwd, file, n, errstr); continue; } - } else if (CHECK3(rtype, 'w', 'k', 's')) { + break; + + case RR_WKS: /* Handle "wks" record */ - addr = htonl(inet_addr(cp)); - if ((int)addr == -1) { + p = extractaddr(cp, ap); + if (p != NULL) { ++errors; cp2 = cp; while (!isspace(*cp2) && *cp2 != '\0') ++cp2; *cp2 = '\0'; fprintf(stderr, - "%s: %s/%s:%d bad \"wks\" record ip addr \"%s\"\n", + "%s: %s/%s:%d Bad \"wks\" record ip addr \"%s\"\n", prog, cwd, file, n, cp); continue; } @@ -1396,18 +2436,20 @@ process(register const char *file, register const char *domain, if (errstr != NULL) { ++errors; fprintf(stderr, - "%s: %s/%s:%d bad \"wks\" record (%s)\n", + "%s: %s/%s:%d Bad \"wks\" record (%s)\n", prog, cwd, file, n, errstr); continue; } add_domain(name, domain); - errors += updateitem(name, addr, REC_WKS, + errors += updateitem(name, ap, REC_WKS, 0, smtp ? FLG_SMTPWKS : 0); /* XXX check to see if ip address records exists? */ - } else if (rtype[0] == 'h' && strcmp(rtype, "hinfo") == 0) { + break; + + case RR_HINFO: /* Handle "hinfo" record */ add_domain(name, domain); - errors += updateitem(name, 0, REC_HINFO, 0, 0); + errors += updateitem(name, NULL, REC_HINFO, 0, 0); cp2 = cp; cp = parsequoted(cp); if (cp == NULL) { @@ -1449,16 +2491,18 @@ process(register const char *file, register const char *domain, prog, cwd, file, n, cp2); continue; } - } else if (CHECK2(rtype, 'm', 'x')) { + break; + + case RR_MX: /* Handle "mx" record */ add_domain(name, domain); - errors += updateitem(name, 0, REC_MX, ttl, 0); + errors += updateitem(name, NULL, REC_MX, ttl, 0); /* Look for priority */ if (!isdigit(*cp)) { ++errors; fprintf(stderr, - "%s: %s/%s:%d bad \"mx\" priority: %s\n", + "%s: %s/%s:%d Bad \"mx\" priority: %s\n", prog, cwd, file, n, cp); } @@ -1471,14 +2515,15 @@ process(register const char *file, register const char *domain, if (*cp == '\0') { ++errors; fprintf(stderr, - "%s: %s/%s:%d missing \"mx\" hostname\n", + "%s: %s/%s:%d Missing \"mx\" hostname\n", prog, cwd, file, n); } if (strcmp(cp, "@") == 0) (void)strcpy(cp, zone); if (checkdots(cp)) { ++errors; - fprintf(stderr, dotfmt, + fprintf(stderr, + checkaddr(cp) ? addrfmt : dotfmt, prog, cwd, file, n, rtype, cp); } @@ -1487,14 +2532,17 @@ process(register const char *file, register const char *domain, flags = FLG_MXREF; if (*name == *cp && strcmp(name, cp) == 0) flags |= FLG_SELFMX; - errors += updateitem(cp, 0, REC_REF, 0, flags); - } else if (rtype[0] == 'c' && strcmp(rtype, "cname") == 0) { + errors += updateitem(cp, NULL, REC_REF, 0, flags); + break; + + case RR_CNAME: /* Handle "cname" record */ add_domain(name, domain); - errors += updateitem(name, 0, REC_CNAME, 0, 0); + errors += updateitem(name, NULL, REC_CNAME, 0, 0); if (checkdots(cp)) { ++errors; - fprintf(stderr, dotfmt, + fprintf(stderr, + checkaddr(cp) ? addrfmt : dotfmt, prog, cwd, file, n, rtype, cp); } @@ -1502,11 +2550,13 @@ process(register const char *file, register const char *domain, if (strcmp(cp, "@") == 0) (void)strcpy(cp, zone); add_domain(cp, domain); - errors += updateitem(cp, 0, REC_REF, 0, 0); - } else if (CHECK3(rtype, 's', 'r', 'v')) { + errors += updateitem(cp, NULL, REC_REF, 0, 0); + break; + + case RR_SRV: /* Handle "srv" record */ add_domain(name, domain); - errors += updateitem(name, 0, REC_SRV, 0, 0); + errors += updateitem(name, NULL, REC_SRV, 0, 0); cp2 = cp; /* Skip over three values */ @@ -1514,7 +2564,7 @@ process(register const char *file, register const char *domain, if (!isdigit(*cp)) { ++errors; fprintf(stderr, "%s: %s/%s:%d" - " bad \"srv\" value: %s\n", + " Bad \"srv\" value: %s\n", prog, cwd, file, n, cp); } @@ -1528,11 +2578,13 @@ process(register const char *file, register const char *domain, /* Check to see if mx host exists */ add_domain(cp, domain); - errors += updateitem(cp, 0, REC_REF, 0, 0); - } else if (CHECK3(rtype, 't', 'x', 't')) { + errors += updateitem(cp, NULL, REC_REF, 0, 0); + break; + + case RR_TXT: /* Handle "txt" record */ add_domain(name, domain); - errors += updateitem(name, 0, REC_TXT, 0, 0); + errors += updateitem(name, NULL, REC_TXT, 0, 0); cp2 = cp; cp = parsequoted(cp); if (cp == NULL) { @@ -1551,22 +2603,27 @@ process(register const char *file, register const char *domain, prog, cwd, file, n, cp2); continue; } - } else if (CHECK2(rtype, 'n', 's')) { + break; + + case RR_NS: /* Handle "ns" record */ - errors += updateitem(zone, 0, REC_NS, 0, 0); + errors += updateitem(zone, NULL, REC_NS, 0, 0); if (strcmp(cp, "@") == 0) (void)strcpy(cp, zone); if (checkdots(cp)) { ++errors; - fprintf(stderr, dotfmt, + fprintf(stderr, + checkaddr(cp) ? addrfmt : dotfmt, prog, cwd, file, n, rtype, cp); } add_domain(cp, domain); - errors += updateitem(cp, 0, REC_REF, 0, 0); - } else if (CHECK2(rtype, 'r', 'p')) { + errors += updateitem(cp, NULL, REC_REF, 0, 0); + break; + + case RR_RP: /* Handle "rp" record */ add_domain(name, domain); - errors += updateitem(name, 0, REC_RP, 0, 0); + errors += updateitem(name, NULL, REC_RP, 0, 0); cp2 = cp; /* Step over mailbox name */ @@ -1598,31 +2655,71 @@ process(register const char *file, register const char *domain, /* Make sure text name points somewhere (if not ".") */ if (!CHECKDOT(cp3)) { add_domain(cp3, domain); - errors += updateitem(cp3, 0, REC_REF, 0, 0); + errors += updateitem(cp3, NULL, REC_REF, 0, 0); } - } else if (rtype[0] == 'a' && strcmp(rtype, "allowdupa") == 0) { + break; + + case RR_ALLOWDUPA: /* Handle "allow duplicate a" record */ add_domain(name, domain); - addr = htonl(inet_addr(cp)); - if ((int)addr == -1) { + p = extractaddr(cp, ap); + if (p != NULL) { ++errors; cp2 = cp + strlen(cp) - 1; if (cp2 >= cp && *cp2 == '\n') *cp2 = '\0'; fprintf(stderr, - "%s: %s/%s:%d bad \"allowdupa\" record ip addr \"%s\"\n", + "%s: %s/%s:%d Bad \"allowdupa\" record ip addr \"%s\"\n", prog, cwd, file, n, cp); continue; } - errors += updateitem(name, addr, 0, 0, FLG_ALLOWDUPA); - } else { + errors += updateitem(name, ap, 0, 0, FLG_ALLOWDUPA); + break; + + case RR_DNSKEY: + /* Handle "dnskey" record */ + add_domain(name, domain); + errors += updateitem(name, NULL, REC_CNAME, 0, 0); + if (checkdots(cp)) { + ++errors; + fprintf(stderr, + checkaddr(cp) ? addrfmt : dotfmt, + prog, cwd, file, n, rtype, cp); + } + + /* Make sure cname points somewhere */ + if (strcmp(cp, "@") == 0) + (void)strcpy(cp, zone); + add_domain(cp, domain); + errors += updateitem(cp, NULL, REC_REF, 0, 0); + break; + + case RR_RRSIG: + errstr = NULL; + if (!parserrsig(cp, &errstr)) + ++sawrrsig; + if (errstr != NULL) { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d Bad \"rrsig\" record (%s)\n", + prog, cwd, file, n, errstr); + continue; + } + break; + + case RR_NSEC: + /* XXX */ + continue; + + default: /* Unknown record type */ ++errors; fprintf(stderr, - "%s: %s/%s:%d unknown record type \"%s\"\n", + "%s: %s/%s:%d Unknown record type \"%s\"\n", prog, cwd, file, n, rtype); add_domain(name, domain); - errors += updateitem(name, 0, REC_UNKNOWN, 0, 0); + errors += updateitem(name, NULL, REC_UNKNOWN, 0, 0); + break; } (void)strcpy(lastname, name); } @@ -1630,107 +2727,6 @@ process(register const char *file, register const char *domain, return; } -/* Records we use to detect duplicates */ -static struct duprec { - int record; - char *name; -} duprec[] = { - { REC_A, "a" }, - { REC_HINFO, "hinfo" }, - { 0, NULL }, -}; - -void -checkdups(register struct item *ip, register int records) -{ - register struct duprec *dp; - - records &= (ip->records & MASK_TEST_DUP); - if (records == 0) - return; - for (dp = duprec; dp->name != NULL; ++dp) - if ((records & dp->record) != 0) { - ++errors; - fprintf(stderr, "%s: multiple \"%s\" records for %s\n", - prog, dp->name, ip->host); - records &= ~dp->record; - } - if (records != 0) - fprintf(stderr, "%s: checkdups: records not zero (%d)\n", - prog, records); -} - -int -updateitem(register const char *host, register u_int32_t addr, - register int records, register u_int ttl, register int flags) -{ - register const char *ccp; - register int n, errs; - register u_int i; - register struct item *ip; - int foundsome; - - n = 0; - foundsome = 0; - errs = 0; - ITEMHASH(host, i, ccp); - ip = &items[i & (ITEMSIZE - 1)]; - while (n < ITEMSIZE && ip->host) { - if ((addr == 0 || addr == ip->addr || ip->addr == 0) && - *host == *ip->host && strcmp(host, ip->host) == 0) { - ++foundsome; - if (ip->addr == 0) - ip->addr = addr; - if ((records & MASK_TEST_DUP) != 0) - checkdups(ip, records); - ip->records |= records; - /* Only check differing ttl's for A and MX records */ - if (ip->ttl == 0) - ip->ttl = ttl; - else if (ttl != 0 && ip->ttl != ttl) { - fprintf(stderr, - "%s: differing ttls for %s (%u != %u)\n", - prog, ip->host, ttl, ip->ttl); - ++errs; - } - ip->flags |= flags; - /* Not done if we wildcard matched the name */ - if (addr) - return (errs); - } - ++n; - ++ip; - if (ip >= &items[ITEMSIZE]) - ip = items; - } - - if (n >= ITEMSIZE) { - fprintf(stderr, "%s: out of item slots (max %d)\n", - prog, ITEMSIZE); - exit(1); - } - - /* Done if we were wildcarding the name (and found entries for it) */ - if (addr == 0 && foundsome) - return (errs); - - /* Didn't find it, make new entry */ - ++itemcnt; - if (ip->host) { - fprintf(stderr, "%s: reusing bucket!\n", prog); - exit(1); - } - ip->addr = addr; - ip->host = savestr(host); - if ((records & MASK_TEST_DUP) != 0) - checkdups(ip, records); - ip->records |= records; - if (ttl != 0) - ip->ttl = ttl; - ip->flags |= flags; - return (errs); -} - static const char *microlist[] = { "_tcp", "_udp", @@ -1740,10 +2736,10 @@ static const char *microlist[] = { }; int -rfc1034host(register const char *host, register int recs) +rfc1034host(const char *host, int recs) { - register const char *cp, **p; - register int underok; + const char *cp, **p; + int underok; underok = 0; for (p = microlist; *p != NULL ;++p) @@ -1766,613 +2762,205 @@ rfc1034host(register const char *host, register int recs) if (!(isalpha(*cp) || isdigit(*cp) || *cp == '-' || (*cp == '/' && (recs & REC_SOA) != 0))) { fprintf(stderr, - "%s: illegal hostname \"%s\" ('%c' illegal character)\n", + "%s: Illegal hostname \"%s\" ('%c' illegal character)\n", prog, host, *cp); return (1); } if (--cp >= host && *cp == '-') { - fprintf(stderr, "%s: illegal hostname \"%s\" (ends with '-')\n", + fprintf(stderr, "%s: Illegal hostname \"%s\" (ends with '-')\n", prog, host); return (1); } return (0); } -int -nslint(void) +enum rrtype +txt2rrtype(const char *str) { - register int n, records, flags; - register struct item *ip, *lastaip, **ipp, **itemlist; - register u_int32_t addr, lastaddr, mask; - - itemlist = (struct item **)calloc(itemcnt, sizeof(*ipp)); - if (itemlist == NULL) { - fprintf(stderr, "%s: nslint: calloc: %s\n", - prog, strerror(errno)); - exit(1); - } - ipp = itemlist; - for (n = 0, ip = items; n < ITEMSIZE; ++n, ++ip) { - if (ip->host == NULL) - continue; - - /* Save entries with addresses for later check */ - if (ip->addr != 0) - *ipp++ = ip; - - if (debug > 1) { - if (debug > 2) - printf("%d\t", n); - printf("%s\t%s\t0x%x\t0x%x\n", - ip->host, intoa(ip->addr), ip->records, ip->flags); - } - - /* Check for illegal hostnames (rfc1034) */ - if (rfc1034host(ip->host, ip->records)) - ++errors; - - /* Check for missing ptr records (ok if also an ns record) */ - records = ip->records & MASK_CHECK_REC; - if ((ip->records & MASK_TEST_REC) != 0) - records |= REC_OTHER; - switch (records) { - - case REC_A | REC_OTHER | REC_PTR | REC_REF: - case REC_A | REC_OTHER | REC_PTR: - case REC_A | REC_PTR | REC_REF: - case REC_A | REC_PTR: - case REC_CNAME: - /* These are O.K. */ - break; - - case REC_CNAME | REC_REF: - ++errors; - fprintf(stderr, "%s: \"cname\" referenced by other" - " \"cname\" or \"mx\": %s\n", prog, ip->host); - break; - - case REC_OTHER | REC_REF: - case REC_OTHER: - /* - * This is only an error if there is an address - * associated with the hostname; this means - * there was a wks entry with bogus address. - * Otherwise, we have an mx or hinfo. - */ - if (ip->addr != 0) { - ++errors; - fprintf(stderr, - "%s: \"wks\" without \"a\" and \"ptr\": %s -> %s\n", - prog, ip->host, intoa(ip->addr)); - } - break; - - case REC_REF: - ++errors; - fprintf(stderr, - "%s: name referenced without other records: %s\n", - prog, ip->host); - break; - - case REC_A | REC_OTHER | REC_REF: - case REC_A | REC_OTHER: - case REC_A | REC_REF: - case REC_A: - ++errors; - fprintf(stderr, "%s: missing \"ptr\": %s -> %s\n", - prog, ip->host, intoa(ip->addr)); - break; - - case REC_OTHER | REC_PTR | REC_REF: - case REC_OTHER | REC_PTR: - case REC_PTR | REC_REF: - case REC_PTR: - ++errors; - fprintf(stderr, "%s: missing \"a\": %s -> %s\n", - prog, ip->host, intoa(ip->addr)); - break; - - case REC_A | REC_CNAME | REC_OTHER | REC_PTR | REC_REF: - case REC_A | REC_CNAME | REC_OTHER | REC_PTR: - case REC_A | REC_CNAME | REC_OTHER | REC_REF: - case REC_A | REC_CNAME | REC_OTHER: - case REC_A | REC_CNAME | REC_PTR | REC_REF: - case REC_A | REC_CNAME | REC_PTR: - case REC_A | REC_CNAME | REC_REF: - case REC_A | REC_CNAME: - case REC_CNAME | REC_OTHER | REC_PTR | REC_REF: - case REC_CNAME | REC_OTHER | REC_PTR: - case REC_CNAME | REC_OTHER | REC_REF: - case REC_CNAME | REC_OTHER: - case REC_CNAME | REC_PTR | REC_REF: - case REC_CNAME | REC_PTR: - ++errors; - fprintf(stderr, "%s: \"cname\" %s has other records\n", - prog, ip->host); - break; - - case 0: - /* Second level test */ - if ((ip->records & ~(REC_NS | REC_TXT)) == 0) - break; - /* Fall through... */ - - default: - ++errors; - fprintf(stderr, - "%s: records == 0x%x: can't happen (%s 0x%x)\n", - prog, records, ip->host, ip->records); - break; - } - - /* Check for smtp problems */ - flags = ip->flags & MASK_TEST_SMTP; - - if ((flags & FLG_SELFMX) != 0 && (ip->records & REC_A) == 0) { - ++errors; - fprintf(stderr, - "%s: self \"mx\" for %s missing \"a\" record\n", - prog, ip->host); - } - - switch (flags) { - - case 0: - case FLG_SELFMX | FLG_SMTPWKS: - /* These are O.K. */ - break; - - case FLG_SELFMX: - if ((ip->records & REC_WKS) != 0) { - ++errors; - fprintf(stderr, - "%s: smtp/tcp missing from \"wks\": %s\n", - prog, ip->host); - } - break; - - case FLG_SMTPWKS: - ++errors; - fprintf(stderr, - "%s: saw smtp/tcp without self \"mx\": %s\n", - prog, ip->host); - break; - - default: - ++errors; - fprintf(stderr, - "%s: flags == 0x%x: can't happen (%s)\n", - prog, flags, ip->host); - } - - /* Check for chained MX records */ - if ((ip->flags & (FLG_SELFMX | FLG_MXREF)) == FLG_MXREF && - (ip->records & REC_MX) != 0) { - ++errors; - fprintf(stderr, "%s: \"mx\" referenced by other" - " \"mx\" record: %s\n", prog, ip->host); - } - } - - /* Check for doubly booked addresses */ - n = ipp - itemlist; - qsort(itemlist, n, sizeof(itemlist[0]), cmpaddr); - lastaddr = 0; - ip = NULL; - for (ipp = itemlist; n > 0; ++ipp, --n) { - addr = (*ipp)->addr; - if (lastaddr == addr && - ((*ipp)->flags & FLG_ALLOWDUPA) == 0 && - (ip->flags & FLG_ALLOWDUPA) == 0) { - ++errors; - fprintf(stderr, "%s: %s in use by %s and %s\n", - prog, intoa(addr), (*ipp)->host, ip->host); - } - lastaddr = addr; - ip = *ipp; - } - - /* Check for hosts with multiple addresses on the same subnet */ - n = ipp - itemlist; - qsort(itemlist, n, sizeof(itemlist[0]), cmphost); - if (netlistcnt > 0) { - n = ipp - itemlist; - lastaip = NULL; - for (ipp = itemlist; n > 0; ++ipp, --n) { - ip = *ipp; - if ((ip->records & REC_A) == 0 || - (ip->flags & FLG_ALLOWDUPA) != 0) - continue; - if (lastaip != NULL && - strcasecmp(ip->host, lastaip->host) == 0) { - mask = findmask(ip->addr); - if (mask == 0) { - ++errors; - fprintf(stderr, - "%s: can't find mask for %s (%s)\n", - prog, ip->host, intoa(ip->addr)); - } else if ((lastaip->addr & mask) == - (ip->addr & mask) ) { - ++errors; - fprintf(stderr, - "%s: multiple \"a\" records for %s on subnet %s", - prog, ip->host, - intoa(ip->addr & mask)); - fprintf(stderr, "\n\t(%s", - intoa(lastaip->addr)); - fprintf(stderr, " and %s)\n", - intoa(ip->addr)); - } - } - lastaip = ip; - } - } - - if (debug) - printf("%s: %d/%d items used, %d error%s\n", prog, itemcnt, - ITEMSIZE, errors, errors == 1 ? "" : "s"); - return (errors != 0); -} - -/* Similar to inet_ntoa() */ -char * -intoa(u_int32_t addr) -{ - register char *cp; - register u_int byte; - register int n; - static char buf[sizeof(".xxx.xxx.xxx.xxx")]; - - cp = &buf[sizeof buf]; - *--cp = '\0'; - - n = 4; - do { - byte = addr & 0xff; - *--cp = byte % 10 + '0'; - byte /= 10; - if (byte > 0) { - *--cp = byte % 10 + '0'; - byte /= 10; - if (byte > 0) - *--cp = byte + '0'; - } - *--cp = '.'; - addr >>= 8; - } while (--n > 0); - - return cp + 1; + if (strcasecmp(str, "aaaa") == 0) + return (RR_AAAA); + if (strcasecmp(str, "a") == 0) + return (RR_A); + if (strcasecmp(str, "allowdupa") == 0) + return (RR_ALLOWDUPA); + if (strcasecmp(str, "cname") == 0) + return (RR_CNAME); + if (strcasecmp(str, "dnskey") == 0) + return (RR_DNSKEY); + if (strcasecmp(str, "hinfo") == 0) + return (RR_HINFO); + if (strcasecmp(str, "mx") == 0) + return (RR_MX); + if (strcasecmp(str, "ns") == 0) + return (RR_NS); + if (strcasecmp(str, "ptr") == 0) + return (RR_PTR); + if (strcasecmp(str, "rp") == 0) + return (RR_RP); + if (strcasecmp(str, "soa") == 0) + return (RR_SOA); + if (strcasecmp(str, "srv") == 0) + return (RR_SRV); + if (strcasecmp(str, "txt") == 0) + return (RR_TXT); + if (strcasecmp(str, "wks") == 0) + return (RR_WKS); + if (strcasecmp(str, "RRSIG") == 0) + return (RR_RRSIG); + if (strcasecmp(str, "NSEC") == 0) + return (RR_NSEC); + return (RR_UNDEF); } int -parseinaddr(register const char *cp, register u_int32_t *netp, - register u_int32_t *maskp) +samesubnet(struct addr *a1, struct addr *a2, struct network *np) { - register int i, bits; - register u_int32_t o, net, mask; + int i; + u_int32_t v1, v2; - if (!isdigit(*cp)) + /* IPv4 before IPv6 */ + if (a1->family != a2->family) return (0); - net = 0; - mask = 0xff000000; - bits = 0; - o = 0; - do { - o = o * 10 + (*cp++ - '0'); - } while (isdigit(*cp)); - net = o << 24; - /* Check for classless delegation mask width */ - if (*cp == '/') { - ++cp; - o = 0; - do { - o = o * 10 + (*cp++ - '0'); - } while (isdigit(*cp)); - bits = o; - if (bits <= 0 || bits > 32) - return (0); - } + switch (a1->family) { - if (*cp == '.' && isdigit(cp[1])) { - ++cp; - o = 0; - do { - o = o * 10 + (*cp++ - '0'); - } while (isdigit(*cp)); - net = (net >> 8) | (o << 24); - mask = 0xffff0000; - if (*cp == '.' && isdigit(cp[1])) { - ++cp; - o = 0; - do { - o = o * 10 + (*cp++ - '0'); - } while (isdigit(*cp)); - net = (net >> 8) | (o << 24); - mask = 0xffffff00; - if (*cp == '.' && isdigit(cp[1])) { - ++cp; - o = 0; - do { - o = o * 10 + (*cp++ - '0'); - } while (isdigit(*cp)); - net = (net >> 8) | (o << 24); - mask = 0xffffffff; - } + case AF_INET: + /* Apply the mask to both values */ + v1 = a1->a_addr4 & np->n_mask4; + v2 = a2->a_addr4 & np->n_mask4; + return (v1 == v2); + + case AF_INET6: + /* Apply the mask to both values */ + for (i = 0; i < 16; ++i) { + v1 = a1->a_addr6[i] & np->n_mask6[i]; + v2 = a2->a_addr6[i] & np->n_mask6[i]; + if (v1 != v2) + return (0); } + break; + + default: + abort(); } - if (strcasecmp(cp, inaddr) != 0) - return (0); - - /* Classless delegation */ - /* XXX check that calculated mask isn't smaller than octet mask? */ - if (bits != 0) - for (mask = 0, i = 31; bits > 0; --i, --bits) - mask |= (1 << i); - - *netp = net; - *maskp = mask; return (1); } -u_int32_t -parseptr(register const char *cp, u_int32_t net, u_int32_t mask, - register char **errstrp) -{ - register u_int32_t o, addr; - register int shift; - - addr = 0; - shift = 0; - while (isdigit(*cp) && shift < 32) { - o = 0; - do { - o = o * 10 + (*cp++ - '0'); - } while (isdigit(*cp)); - addr |= o << shift; - shift += 8; - if (*cp != '.') { - if (*cp == '\0') - break; - *errstrp = "missing dot"; - return (0); - } - ++cp; - } - - if (shift > 32) { - *errstrp = "more than 4 octets"; - return (0); - } - - if (shift == 32 && strcasecmp(cp, inaddr + 1) == 0) - return (addr); - -#ifdef notdef - if (*cp != '\0') { - *errstrp = "trailing junk"; - return (0); - } -#endif -#ifdef notdef - if ((~mask & net) != 0) { - *errstrp = "too many octets for net"; - return (0); - } -#endif - return (net | addr); -} - -int -checkwks(register FILE *f, register char *proto, register int *smtpp, - register char **errstrp) -{ - register int n, sawparen; - register char *cp, *serv, **p; - static char errstr[132]; - char buf[1024]; - char psbuf[512]; - - if (!protoserv_init) { - initprotoserv(); - ++protoserv_init; - } - - /* Line count */ - n = 0; - - /* Terminate protocol */ - cp = proto; - while (!isspace(*cp) && *cp != '\0') - ++cp; - if (*cp != '\0') - *cp++ = '\0'; - - /* Find services */ - *smtpp = 0; - sawparen = 0; - if (*cp == '(') { - ++sawparen; - ++cp; - while (isspace(*cp)) - ++cp; - } - for (;;) { - if (*cp == '\0') { - if (!sawparen) - break; - if (fgets(buf, sizeof(buf), f) == NULL) { - *errstrp = "mismatched parens"; - return (n); - } - ++n; - cp = buf; - while (isspace(*cp)) - ++cp; - } - /* Find end of service, converting to lowercase */ - for (serv = cp; !isspace(*cp) && *cp != '\0'; ++cp) - if (isupper(*cp)) - *cp = tolower(*cp); - if (*cp != '\0') - *cp++ = '\0'; - if (sawparen && *cp == ')') { - /* XXX should check for trailing junk */ - break; - } - - (void)sprintf(psbuf, "%s/%s", serv, proto); - - if (*serv == 's' && strcmp(psbuf, "tcp/smtp") == 0) - ++*smtpp; - - for (p = protoserv; *p != NULL; ++p) - if (*psbuf == **p && strcmp(psbuf, *p) == 0) { - break; - } - if (*p == NULL) { - sprintf(errstr, "%s unknown", psbuf); - *errstrp = errstr; - break; - } - } - - return (n); -} - -int -checkserv(register const char *serv, register char **p) -{ - for (; *p != NULL; ++p) - if (*serv == **p && strcmp(serv, *p) == 0) - return (1); - return (0); -} - +/* Set address mask in network order */ void -initprotoserv(void) +setmaskwidth(u_int w, struct network *np) { - register char *cp; - register struct servent *sp; - char psbuf[512]; + int i, j; - protoserv_len = 256; - protoserv = (char **)malloc(protoserv_len * sizeof(*protoserv)); - if (protoserv == NULL) { - fprintf(stderr, "%s: nslint: malloc: %s\n", - prog, strerror(errno)); + switch (np->family) { + + case AF_INET: + if (w <= 0) + np->n_mask4 = 0; + else + np->n_mask4 = htonl(0xffffffff << (32 - w)); + break; + + case AF_INET6: + /* XXX is this right? */ + memset(np->n_mask6, 0, sizeof(np->n_mask6)); + for (i = 0; i < w / 8; ++i) + np->n_mask6[i] = 0xff; + i = w / 8; + j = w % 8; + if (j > 0 && i < 16) + np->n_mask6[i] = 0xff << (8 - j); + break; + + default: + abort(); + } +} + +int +updateitem(const char *host, struct addr *ap, int records, u_int ttl, int flags) +{ + const char *ccp; + int n, errs; + u_int i; + struct item *ip; + int foundsome; + + n = 0; + foundsome = 0; + errs = 0; + + /* Hash the host name */ + i = 0; + ccp = host; + while (*ccp != '\0') + i = i * 37 + *ccp++; + ip = &items[i & (ITEMSIZE - 1)]; + + /* Look for a match or any empty slot */ + while (n < ITEMSIZE && ip->host != NULL) { + + if ((ap == NULL || ip->addr.family == 0 || + cmpaddr(ap, &ip->addr) == 0) && + *host == *ip->host && strcmp(host, ip->host) == 0) { + ++foundsome; + if (ip->addr.family == 0 && ap != NULL) + memmove(&ip->addr, ap, sizeof(*ap)); + if ((records & MASK_TEST_DUP) != 0) + checkdups(ip, records); + ip->records |= records; + /* Only check differing ttl's for A and MX records */ + if (ip->ttl == 0) + ip->ttl = ttl; + else if (ttl != 0 && ip->ttl != ttl) { + fprintf(stderr, + "%s: Differing ttls for %s (%u != %u)\n", + prog, ip->host, ttl, ip->ttl); + ++errs; + } + ip->flags |= flags; + /* Not done if we wildcard matched the name */ + if (ap != NULL) + return (errs); + } + ++n; + ++ip; + if (ip >= &items[ITEMSIZE]) + ip = items; + } + + if (n >= ITEMSIZE) { + fprintf(stderr, "%s: Out of item slots (max %d)\n", + prog, ITEMSIZE); exit(1); } - while ((sp = getservent()) != NULL) { - (void)sprintf(psbuf, "%s/%s", sp->s_name, sp->s_proto); - - /* Convert to lowercase */ - for (cp = psbuf; *cp != '\0'; ++cp) - if (isupper(*cp)) - *cp = tolower(*cp); - - if (protoserv_last + 1 >= protoserv_len) { - protoserv_len <<= 1; - protoserv = realloc(protoserv, - protoserv_len * sizeof(*protoserv)); - if (protoserv == NULL) { - fprintf(stderr, "%s: nslint: realloc: %s\n", - prog, strerror(errno)); - exit(1); - } - } - protoserv[protoserv_last] = savestr(psbuf); - ++protoserv_last; + /* Done if we were wildcarding the name (and found entries for it) */ + if (ap == NULL && foundsome) { + return (errs); } - protoserv[protoserv_last] = NULL; -} -/* - * Returns true if name contains a dot but not a trailing dot. - * Special case: allow a single dot if the second part is not one - * of the 3 or 4 letter top level domains or is any 2 letter TLD - */ -int -checkdots(register const char *name) -{ - register const char *cp, *cp2; - - if ((cp = strchr(name, '.')) == NULL) - return (0); - cp2 = name + strlen(name) - 1; - if (cp2 >= name && *cp2 == '.') - return (0); - - /* Return true of more than one dot*/ - ++cp; - if (strchr(cp, '.') != NULL) - return (1); - - if (strlen(cp) == 2 || - strcasecmp(cp, "gov") == 0 || - strcasecmp(cp, "edu") == 0 || - strcasecmp(cp, "com") == 0 || - strcasecmp(cp, "net") == 0 || - strcasecmp(cp, "org") == 0 || - strcasecmp(cp, "mil") == 0 || - strcasecmp(cp, "int") == 0 || - strcasecmp(cp, "nato") == 0 || - strcasecmp(cp, "arpa") == 0) - return (1); - return (0); -} - -int -cmpaddr(register const void *ip1, register const void *ip2) -{ - register u_int32_t a1, a2; - - a1 = (*(struct item **)ip1)->addr; - a2 = (*(struct item **)ip2)->addr; - - if (a1 < a2) - return (-1); - else if (a1 > a2) - return (1); - else - return (0); -} - -int -cmphost(register const void *ip1, register const void *ip2) -{ - register const char *s1, *s2; - - s1 = (*(struct item **)ip1)->host; - s2 = (*(struct item **)ip2)->host; - - return (strcasecmp(s1, s2)); -} - -/* Returns a pointer after the next token or quoted string, else NULL */ -char * -parsequoted(register char *cp) -{ - - if (*cp == '"') { - ++cp; - while (*cp != '"' && *cp != '\0') - ++cp; - if (*cp != '"') - return (NULL); - ++cp; - } else { - while (!isspace(*cp) && *cp != '\0') - ++cp; + /* Didn't find it, make new entry */ + ++itemcnt; + if (ip->host) { + fprintf(stderr, "%s: Reusing bucket!\n", prog); + exit(1); } - return (cp); + if (ap != NULL) + memmove(&ip->addr, ap, sizeof(*ap)); + ip->host = savestr(host); + if ((records & MASK_TEST_DUP) != 0) + checkdups(ip, records); + ip->records |= records; + if (ttl != 0) + ip->ttl = ttl; + ip->flags |= flags; + return (errs); } -__dead void +void usage(void) { - extern char version[]; fprintf(stderr, "Version %s\n", version); fprintf(stderr, "usage: %s [-d] [-b named.boot] [-B nslint.boot]\n", diff --git a/contrib/nslint-2.1a3/savestr.c b/contrib/nslint-3.0a2/savestr.c similarity index 90% rename from contrib/nslint-2.1a3/savestr.c rename to contrib/nslint-3.0a2/savestr.c index dad9d1a2ae..ac4eaef76f 100644 --- a/contrib/nslint-2.1a3/savestr.c +++ b/contrib/nslint-3.0a2/savestr.c @@ -21,14 +21,11 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: /u0/home/explorer/proj/ISC/git-conversion/cvsroot/bind9/contrib/nslint-2.1a3/savestr.c,v 1.1 2001/12/21 04:12:04 marka Exp $ (LBL)"; + "@(#) $Id: savestr.c,v 1.2 2006/03/09 02:27:11 leres Exp $ (LBL)"; #endif #include -#ifdef HAVE_MALLOC_H -#include -#endif #include #include diff --git a/contrib/nslint-2.1a3/savestr.h b/contrib/nslint-3.0a2/savestr.h similarity index 89% rename from contrib/nslint-2.1a3/savestr.h rename to contrib/nslint-3.0a2/savestr.h index 594baf8ccb..51b4402913 100644 --- a/contrib/nslint-2.1a3/savestr.h +++ b/contrib/nslint-3.0a2/savestr.h @@ -18,7 +18,7 @@ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * @(#) $Header: /u0/home/explorer/proj/ISC/git-conversion/cvsroot/bind9/contrib/nslint-2.1a3/savestr.h,v 1.1 2001/12/21 04:12:05 marka Exp $ (LBL) + * @(#) $Header: savestr.h,v 1.1 97/04/22 13:30:21 leres Exp $ (LBL) */ extern char *savestr(const char *); diff --git a/contrib/nslint-2.1a3/strerror.c b/contrib/nslint-3.0a2/strerror.c similarity index 100% rename from contrib/nslint-2.1a3/strerror.c rename to contrib/nslint-3.0a2/strerror.c diff --git a/contrib/nslint-3.0a2/version.h b/contrib/nslint-3.0a2/version.h new file mode 100644 index 0000000000..879afc2808 --- /dev/null +++ b/contrib/nslint-3.0a2/version.h @@ -0,0 +1,3 @@ +/* @(#) $Id: version.h 239 2009-03-14 05:44:54Z leres $ (LBL) */ + +extern const char version[]; diff --git a/contrib/pkcs11-keygen/README b/contrib/pkcs11-keygen/README deleted file mode 100644 index caac9824d0..0000000000 --- a/contrib/pkcs11-keygen/README +++ /dev/null @@ -1 +0,0 @@ -Moved to ${top}/bin/pkcs11 diff --git a/contrib/.gitignore b/contrib/scripts/.gitignore similarity index 100% rename from contrib/.gitignore rename to contrib/scripts/.gitignore diff --git a/contrib/check-secure-delegation.pl.in b/contrib/scripts/check-secure-delegation.pl.in similarity index 100% rename from contrib/check-secure-delegation.pl.in rename to contrib/scripts/check-secure-delegation.pl.in diff --git a/contrib/check5011.pl b/contrib/scripts/check5011.pl similarity index 100% rename from contrib/check5011.pl rename to contrib/scripts/check5011.pl diff --git a/contrib/named-bootconf/named-bootconf.sh b/contrib/scripts/named-bootconf.sh similarity index 100% rename from contrib/named-bootconf/named-bootconf.sh rename to contrib/scripts/named-bootconf.sh diff --git a/contrib/nanny/nanny.pl b/contrib/scripts/nanny.pl similarity index 100% rename from contrib/nanny/nanny.pl rename to contrib/scripts/nanny.pl diff --git a/contrib/zone-edit.sh.in b/contrib/scripts/zone-edit.sh.in similarity index 100% rename from contrib/zone-edit.sh.in rename to contrib/scripts/zone-edit.sh.in diff --git a/contrib/zkt/CHANGELOG b/contrib/zkt-1.1.2/CHANGELOG similarity index 89% rename from contrib/zkt/CHANGELOG rename to contrib/zkt-1.1.2/CHANGELOG index 21af332623..792d26aa46 100644 --- a/contrib/zkt/CHANGELOG +++ b/contrib/zkt-1.1.2/CHANGELOG @@ -1,17 +1,82 @@ +zkt 1.1.2 -- 05. Dec 2012 + +* bug Fixed bug introduced by changes on inc_soa_serial() + +zkt 1.1.1 -- 27. Nov 2012 + +* bug Error fixed in zkt-conf in parsing the version number + +* misc inc_soa_serial() now returns 0 on success + +* bug Fixed bug in inc_serial() + The zone file wasn't closed on succesful change of the soa record. + Many thanks to Frederik Soderblom for fixing this. + +zkt 1.1 -- 30. Jan 2012 + +* misc Release numbering changed to three level "major.minor.revison" scheme + +* bug REMOVE_HOLD_TIME was set to 10 days only (Thanks to Chris Thompson) + +* doc Improved README file (Thanks to Jan-Piet Mens) + +* misc Fixed some typos in log messages + +* bug Fixed error in rollover.c (return code of genfirstkey() wasn't checked) + +* misc Default of KeySetDir changed from NULL to ".." (best for hierarchical mode) + Default Sig Lifetime changed from 10 days to 3 weeks (21 days) + Default ZSK lifetime changed from 3 months to 4 times the sig lifetime + Default KSK lifetime changed from 1 year to 2 years + Parameter checks in checkconfig() adapted. + KSK random device changed back from /dev/urandom to BIND default + (Be aware of some possibly long delay in key generation) + +* func New configure option to set the bind utility path manually (--enable-bindutil_path) + BIND_UTIL_PATH in config_zkt.h will no longer used + (Thanks to Mans Nilsson) + +* bug If nsec3 is turned on and KeyAlgo (or AddKeyAlgo) is RSHASHA1 + or DSA, genkey() uses algorithm type NSECRSASHA1 or NSEC3DSA instead. + (Thanks to Holger Wirtz) + +* bug Error in printconfigdiff() fixed. (Thanks to Holger Wirtz) + +* func Description added to (some of the) dnssec.conf parameters + +* func Adding a patch from Hrant Dadivanyan to always pre-publish ZSKs + +* misc Config file syntax changed to parameter names without underscores. + zkt-conf uses ZKT_VERSION string as config version + +* bug "make install-man" now installs all man page + +* bug Bug fixed in zfparse.c. zkt-conf was unable to detect an already + included dnskey.db file if another file was included. + +* misc destination dnssec-zkt removed from Makefile.in + +* func dki_prt_managedkeys() added to dki.c + zkt_list_managedkeys() added to zkt.c + zkt-ls has new option -M to print out a list of managed-keys + +* bug Bug fixed in the config parser (zconf.c). Couldn't parse + agorithm RSASHA512 correctly (Thanks to Michael Sinatra) + zkt 1.0 -- 15. June 2010 -* feat "/dev/urandom" check added to checkconfig() +* func "/dev/urandom" check added to checkconfig() -* feat Config compability switch (-C) added to zkt-conf +* func Config compability switch (-C) added to zkt-conf -* feat zkt-ls has a new switch -s to change sorting of domains from +* func zkt-ls has a new switch -s to change sorting of domains from subdomain before parent to subdomain below the parent -* feat "zkt-ls -T" prints only parent trust anchor +* func "zkt-ls -T" prints only parent trust anchor zkt 1.0rc1 -- 1. Apr 2010 (The 1.0 release was sponsored by DOMINIC(r) ) -* feat Several config parameter are printed now in a more consistent and +* func Several config parameter are printed now in a more consistent and user friendly form. SerialFormat "Incremental" could be abbreviated as "inc" on input. diff --git a/contrib/zkt/LICENSE b/contrib/zkt-1.1.2/LICENSE similarity index 100% rename from contrib/zkt/LICENSE rename to contrib/zkt-1.1.2/LICENSE diff --git a/contrib/zkt/Makefile.in b/contrib/zkt-1.1.2/Makefile.in similarity index 82% rename from contrib/zkt/Makefile.in rename to contrib/zkt-1.1.2/Makefile.in index 21219cd9d6..6daa47d168 100644 --- a/contrib/zkt/Makefile.in +++ b/contrib/zkt-1.1.2/Makefile.in @@ -55,30 +55,25 @@ OBJ_LS = $(SRC_LS:.c=.o) $(OBJ_KLS) MAN_LS = zkt-ls.8 PROG_LS= zkt-ls -SRC_ZKT = dnssec-zkt.c strlist.c zkt.c tcap.c -OBJ_ZKT = $(SRC_ZKT:.c=.o) -MAN_ZKT = dnssec-zkt.8 -PROG_ZKT= dnssec-zkt - SRC_SER = zkt-soaserial.c OBJ_SER = $(SRC_SER:.c=.o) #MAN_SER = zkt-soaserial.8 PROG_SER= zkt-soaserial -SRC_PRG = $(SRC_SIG) $(SRC_CNF) $(SRC_ZKT) $(SRC_LS) $(SRC_SER) $(SRC_KEY) +SRC_PRG = $(SRC_SIG) $(SRC_CNF) $(SRC_LS) $(SRC_SER) $(SRC_KEY) OBJ_PRG = $(SRC_PRG:.c=.o) -PROG_PRG= $(PROG_SIG) $(PROG_CNF) $(PROG_ZKT) $(PROG_LS) $(PROG_SER) $(PROG_KEY) +PROG_PRG= $(PROG_SIG) $(PROG_CNF) $(PROG_LS) $(PROG_SER) $(PROG_KEY) -MAN_ALL = $(MAN_ZKT) $(MAN_SIG) $(MAN_LS) $(MAN_CNF) $(MAN_KEY) +MAN_ALL = $(MAN_SIG) $(MAN_LS) $(MAN_CNF) $(MAN_KEY) OTHER = README README.logging TODO LICENSE CHANGELOG tags Makefile.in \ - configure examples -SAVE = $(HEADER) $(SRC_ALL) $(SRC_SIG) $(SRC_CNF) $(SRC_ZKT) $(SRC_KLS) \ + configure distribute.sh examples +SAVE = $(HEADER) $(SRC_ALL) $(SRC_SIG) $(SRC_CNF) $(SRC_KLS) \ $(SRC_LS) $(SRC_KEY) $(SRC_SER) $(OTHER) \ man configure.ac config.h.in doc #MNTSAVE = $(SAVE) configure.ac config.h.in doc -all: $(PROG_CNF) $(PROG_ZKT) $(PROG_LS) $(PROG_SIG) $(PROG_SER) $(PROG_KEY) +all: $(PROG_CNF) $(PROG_LS) $(PROG_SIG) $(PROG_SER) $(PROG_KEY) macos: ## for MAC OS (depreciated) macos: @@ -94,7 +89,6 @@ linux: $(PROG_SIG): $(OBJ_SIG) $(OBJ_ALL) Makefile $(CC) $(LDFLAGS) $(OBJ_SIG) $(OBJ_ALL) -o $(PROG_SIG) - ln -f $(PROG_SIG) dnssec-signer $(PROG_CNF): $(OBJ_CNF) $(OBJ_ALL) Makefile $(CC) $(LDFLAGS) $(OBJ_CNF) $(OBJ_ALL) -o $(PROG_CNF) @@ -102,9 +96,6 @@ $(PROG_CNF): $(OBJ_CNF) $(OBJ_ALL) Makefile $(PROG_KEY): $(OBJ_KEY) $(OBJ_ALL) Makefile $(CC) $(LDFLAGS) $(LIBS) $(OBJ_KEY) $(OBJ_ALL) -o $(PROG_KEY) -$(PROG_ZKT): $(OBJ_ZKT) $(OBJ_ALL) Makefile - $(CC) $(LDFLAGS) $(LIBS) $(OBJ_ZKT) $(OBJ_ALL) -o $(PROG_ZKT) - $(PROG_LS): $(OBJ_LS) $(OBJ_ALL) Makefile $(CC) $(LDFLAGS) $(LIBS) $(OBJ_LS) $(OBJ_ALL) -o $(PROG_LS) @@ -114,12 +105,12 @@ $(PROG_SER): $(OBJ_SER) Makefile install: ## install binaries in prefix/bin install: $(PROG_PRG) test -d $(prefix)/bin || mkdir -p $(prefix)/bin - cp dnssec-signer $(PROG_PRG) $(prefix)/bin/ + cp $(PROG_PRG) $(prefix)/bin/ install-man: ## install man pages in mandir install-man: test -d $(mandir)/man8/ || mkdir -p $(mandir)/man8/ - cp -p man/$(MAN_ZKT) man/$(MAN_SIG) $(mandir)/man8/ + cp -p man/$(MAN_LS) man/$(MAN_SIG) man/$(MAN_KEY) man/$(MAN_CNF) $(mandir)/man8/ @@ -182,7 +173,7 @@ help: ## all dependicies #:r !make depend -#gcc -MM -g -DHAVE_CONFIG_H -I. -Wall -Wmissing-prototypes zkt-signer.c zone.c ncparse.c rollover.c nscomm.c soaserial.c zkt-conf.c zfparse.c dnssec-zkt.c strlist.c zkt.c tcap.c zkt-ls.c strlist.c zkt.c tcap.c zkt-soaserial.c dki.c misc.c domaincmp.c zconf.c log.c +#gcc -MM -g -DHAVE_CONFIG_H -I. -Wall -Wmissing-prototypes zkt-signer.c zone.c ncparse.c rollover.c nscomm.c soaserial.c zkt-conf.c zfparse.c zkt-ls.c zkt-soaserial.c zkt-keyman.c dki.c misc.c domaincmp.c zconf.c log.c zkt-signer.o: zkt-signer.c config.h config_zkt.h zconf.h debug.h misc.h \ ncparse.h nscomm.h zone.h dki.h log.h soaserial.h rollover.h zone.o: zone.c config.h config_zkt.h debug.h domaincmp.h misc.h zconf.h \ @@ -198,19 +189,11 @@ zkt-conf.o: zkt-conf.c config.h config_zkt.h debug.h misc.h zconf.h \ zfparse.h zfparse.o: zfparse.c config.h config_zkt.h zconf.h log.h debug.h \ zfparse.h -dnssec-zkt.o: dnssec-zkt.c config.h config_zkt.h debug.h misc.h zconf.h \ - strlist.h dki.h zkt.h -strlist.o: strlist.c strlist.h -zkt.o: zkt.c config.h config_zkt.h dki.h misc.h zconf.h strlist.h \ - domaincmp.h tcap.h zkt.h -tcap.o: tcap.c config.h config_zkt.h tcap.h zkt-ls.o: zkt-ls.c config.h config_zkt.h debug.h misc.h zconf.h strlist.h \ dki.h tcap.h zkt.h -strlist.o: strlist.c strlist.h -zkt.o: zkt.c config.h config_zkt.h dki.h misc.h zconf.h strlist.h \ - domaincmp.h tcap.h zkt.h -tcap.o: tcap.c config.h config_zkt.h tcap.h zkt-soaserial.o: zkt-soaserial.c config.h config_zkt.h +zkt-keyman.o: zkt-keyman.c config.h config_zkt.h debug.h misc.h zconf.h \ + strlist.h dki.h zkt.h dki.o: dki.c config.h config_zkt.h debug.h domaincmp.h misc.h zconf.h \ dki.h misc.o: misc.c config.h config_zkt.h zconf.h log.h debug.h misc.h diff --git a/contrib/zkt/README b/contrib/zkt-1.1.2/README similarity index 63% rename from contrib/zkt/README rename to contrib/zkt-1.1.2/README index df1a3c609d..584fb4c7d9 100644 --- a/contrib/zkt/README +++ b/contrib/zkt-1.1.2/README @@ -1,7 +1,7 @@ # # README dnssec zone key tool # -# (c) March 2005 - Aug 2009 by Holger Zuleger hznet +# (c) March 2005 - Aug 2010 by Holger Zuleger hznet # (c) domaincmp() Aug 2005 by Karle Boss & H. Zuleger (kaho) # (c) zconf.c by Jeroen Masar & Holger Zuleger # @@ -16,13 +16,13 @@ The ZKT software is licenced under BSD (see LICENCE file) To build the software: a) Get the current version of zkt - $ wget http://www.hznet.de/dns/zkt/zkt-1.0.tar.gz + $ wget http://www.hznet.de/dns/zkt/zkt-1.1.tar.gz b) Unpack - $ tar xzvf zkt-1.0.tar.gz + $ tar xzvf zkt-1.1.tar.gz c) Change to source directory - $ cd zkt-1.0 + $ cd zkt-1.1 d) Run configure script $ ./configure @@ -45,8 +45,20 @@ b) (optional) Change default parameters $ zkt-conf -s -O "Zonedir: /var/named/zones" -w or use your prefered editor $ vi /var/named/dnssec.conf + (optional) You'll probably want to have zkt-ls work recursively + $ zkt-conf -s -O "Recursive: True" -w c) Prepare one of your zone for zkt - $ cd /var/name/zones/net/example.net # change dir to zone directory + $ cd /var/named/zones/net/example.net # change dir to zone directory $ cp zone.db # copy and rename existing zone file to "zone.db" - $ zkt-conf -w zone.db # create local dnssec.conf file and include dnskey.db into zone file + $ zkt-conf -w zone.db # create local dnssec.conf file and include dnskey.db into zone file + +d) Prepare for initial signing + $ cd /var/named/zones/net/example.net + $ touch zone.db.signed + $ zkt-signer -v -v -o example.net # -o is ORIGIN (i.e. zone name) + +e) Publish your zone + @ add `zone.db.signed' as zone file to your name server + @ publish DS contained in `dsset-example.net.' at your zone's parent + diff --git a/contrib/zkt/README.logging b/contrib/zkt-1.1.2/README.logging similarity index 95% rename from contrib/zkt/README.logging rename to contrib/zkt-1.1.2/README.logging index 7a069cbe5d..1dc458190e 100644 --- a/contrib/zkt/README.logging +++ b/contrib/zkt-1.1.2/README.logging @@ -65,10 +65,8 @@ Current logging messages: Key rollover events KSK key generation and revoking Zone reload resp. freeze/thaw of dynamic zone - LG_INFO: Currently none - planned: - Mesages for key generation and key status change - (e.g.: pre-publish -> activate; revoked -> removed etc.) + LG_INFO: + Messages for key generation/removal and ksk rollover LG_DEBUG: all "verbose" (-v) and "very verbose" (-v -v) messages Some recomended and useful logging settings diff --git a/contrib/zkt/TODO b/contrib/zkt-1.1.2/TODO similarity index 64% rename from contrib/zkt/TODO rename to contrib/zkt-1.1.2/TODO index 778f2c770f..8b3104ed2d 100644 --- a/contrib/zkt/TODO +++ b/contrib/zkt-1.1.2/TODO @@ -1,15 +1,10 @@ -TODO list as of zkt-0.99 +TODO list as of zkt-1.1 -general: - Renaming to zkt-? and split of the functions of dnssec-zkt to - separate commands - Fixed in zkt-1.0 (zkt-conf command) - -dnssec-zkt: +zkt-ls: feat option to specify the key age as remaining lifetime (Option -i inverse age ?). -dnssec-signer: +zkt-signer: bug Distribute_Cmd wouldn't work properly on dynamic zones (missing freeze, thaw; copy Keyfiles instead of signed zone file) @@ -26,18 +21,9 @@ dnssec-signer: data in the hosted domain. In other words: It's highly recommended to use the option -r when you use zkt-signer on a production zone. - Then the time of propagation is (more or less) equal to the timestamp + Than the time of propagation is (more or less) equal to the timestamp of the zone.db.signed file. - bug The max_TTL parameter should be set to the value found - in the zone. A mechanism for setting up a dnssec.conf file - for the zone specific TTL values is needed. - Fixed in zkt-1.0 (zkt-conf command) - -zkt-conf: - port Option -C (compability) to create older config files - misc Change syntax of config parameters to a more uniq form (e.g. no "_" char) - zkt-rollover: feat New command to roll keys independent of zone signing (Usefull for dynamic zones managed by BIND9.7) diff --git a/contrib/zkt/config.h.in b/contrib/zkt-1.1.2/config.h.in similarity index 100% rename from contrib/zkt/config.h.in rename to contrib/zkt-1.1.2/config.h.in diff --git a/contrib/zkt/config_zkt.h b/contrib/zkt-1.1.2/config_zkt.h similarity index 88% rename from contrib/zkt/config_zkt.h rename to contrib/zkt-1.1.2/config_zkt.h index 21ca84069c..a8feb2ae79 100644 --- a/contrib/zkt/config_zkt.h +++ b/contrib/zkt-1.1.2/config_zkt.h @@ -80,6 +80,10 @@ # define ALWAYS_CHECK_KEYSETFILES 1 #endif +#ifndef ALLOW_ALWAYS_PREPUBLISH_ZSK +# define ALLOW_ALWAYS_PREPUBLISH_ZSK 1 +#endif + #ifndef CONFIG_PATH # define CONFIG_PATH "/var/named/" #endif @@ -89,20 +93,19 @@ # define USE_TREE 1 #endif -/* BIND version and utility path will be set by ./configure script */ -#ifndef BIND_VERSION -# define BIND_VERSION 942 -#endif - +/* BIND version and utility path *must* be set by ./configure script */ #ifndef BIND_UTIL_PATH -# define BIND_UTIL_PATH "/usr/local/sbin/" +# error ("BIND_UTIL_PATH not set. Please run configure with --enable-bind_util_path="); +#endif +#ifndef BIND_VERSION +# define BIND_VERSION 970 #endif #ifndef ZKT_VERSION # if defined(USE_TREE) && USE_TREE -# define ZKT_VERSION "vT0.99c (c) Feb 2005 - Aug 2009 Holger Zuleger hznet.de" +# define ZKT_VERSION "vT1.1.0 (c) Feb 2005 - Jan 2012 Holger Zuleger hznet.de" # else -# define ZKT_VERSION "v0.99c (c) Feb 2005 - Aug 2009 Holger Zuleger hznet.de" +# define ZKT_VERSION "v1.1.0 (c) Feb 2005 - Jan 2012 Holger Zuleger hznet.de" # endif #endif diff --git a/contrib/zkt/configure b/contrib/zkt-1.1.2/configure similarity index 98% rename from contrib/zkt/configure rename to contrib/zkt-1.1.2/configure index 6f34793f0a..97cbbd2410 100755 --- a/contrib/zkt/configure +++ b/contrib/zkt-1.1.2/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for ZKT 1.0. +# Generated by GNU Autoconf 2.61 for ZKT 1.1.2. # # Report bugs to . # @@ -574,8 +574,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='ZKT' PACKAGE_TARNAME='zkt' -PACKAGE_VERSION='1.0' -PACKAGE_STRING='ZKT 1.0' +PACKAGE_VERSION='1.1.2' +PACKAGE_STRING='ZKT 1.1.2' PACKAGE_BUGREPORT='Holger Zuleger hznet.de' ac_unique_file="zkt-signer.c" @@ -1179,7 +1179,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ZKT 1.0 to adapt to many kinds of systems. +\`configure' configures ZKT 1.1.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1240,13 +1240,16 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ZKT 1.0:";; + short | recursive ) echo "Configuration of ZKT 1.1.2:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-bind_util_path=PATH + Define path to BIND utilities, default is path to + dnssec-signzone --disable-color-mode zkt without colors --enable-print-timezone print out timezone --enable-print-age print age with year @@ -1339,7 +1342,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ZKT configure 1.0 +ZKT configure 1.1.2 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1353,7 +1356,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ZKT $as_me 1.0, which was +It was created by ZKT $as_me 1.1.2, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ @@ -2639,7 +2642,25 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu ### find out the path to BIND utils and version -# Extract the first word of "dnssec-signzone", so it can be a program name with args. +# Check whether --enable-bind_util_path was given. +if test "${enable_bind_util_path+set}" = set; then + enableval=$enable_bind_util_path; bind_util_path=$enableval +fi + +if test -n "$bind_util_path" +then + if test -x "$bind_util_path/dnssec-signzone" + then + { echo "$as_me:$LINENO: BIND utilities path successfully set to $bind_util_path." >&5 +echo "$as_me: BIND utilities path successfully set to $bind_util_path." >&6;} + SIGNZONE_PROG=$bind_util_path/dnssec-signzone + else + { { echo "$as_me:$LINENO: error: *** 'BIND utility not found in $bind_util_path, please use --enable-bind_util_path= to set it manually' ***" >&5 +echo "$as_me: error: *** 'BIND utility not found in $bind_util_path, please use --enable-bind_util_path= to set it manually' ***" >&2;} + { (exit 1); exit 1; }; } + fi +else + # Extract the first word of "dnssec-signzone", so it can be a program name with args. set dummy dnssec-signzone; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } @@ -2679,25 +2700,32 @@ echo "${ECHO_T}no" >&6; } fi -if test -z "$SIGNZONE_PROG" ; then - { echo "$as_me:$LINENO: WARNING: *** 'BIND dnssec-signzone' missing, use default BIND_UTIL_PATH and BIND_VERSION setting out of config_zkt.h ***" >&5 -echo "$as_me: WARNING: *** 'BIND dnssec-signzone' missing, use default BIND_UTIL_PATH and BIND_VERSION setting out of config_zkt.h ***" >&2;} -else - bind_util_path=`dirname "$SIGNZONE_PROG"` - # define BIND_UTIL_PATH in config.h.in + if test -n "$SIGNZONE_PROG" + then + bind_util_path=`dirname "$SIGNZONE_PROG"` + { echo "$as_me:$LINENO: BIND utilities path automatically set to $bind_util_path." >&5 +echo "$as_me: BIND utilities path automatically set to $bind_util_path." >&6;} + else + { { echo "$as_me:$LINENO: error: *** 'could not determine BIND utility path, please use --enable-bind_util_path= ' to set it manually ***" >&5 +echo "$as_me: error: *** 'could not determine BIND utility path, please use --enable-bind_util_path= ' to set it manually ***" >&2;} + { (exit 1); exit 1; }; } + fi +fi +### By now, we have a path. We'll use it. +# define BIND_UTIL_PATH in config.h.in cat >>confdefs.h <<_ACEOF #define BIND_UTIL_PATH "$bind_util_path/" _ACEOF - # define BIND_VERSION in config.h.in - bind_version=`$SIGNZONE_PROG 2>&1 | grep "Version:" | tr -cd "[0-9]\012" | sed "s/^\(...\).*/\1/"` +# define BIND_VERSION in config.h.in +bind_version=`$SIGNZONE_PROG 2>&1 | grep "Version:" | tr -cd "[0-9]\012" | sed "s/^\(...\).*/\1/"` cat >>confdefs.h <<_ACEOF #define BIND_VERSION $bind_version _ACEOF -fi + ac_ext=c @@ -3713,7 +3741,6 @@ if test "${enable_printyear+set}" = set; then enableval=$enable_printyear; fi -test "$printyear" = yes && printyear=1 printyear=0 if test "$enable_printyear" = "yes"; then printyear=1 @@ -3836,7 +3863,7 @@ _ACEOF cat >>confdefs.h <<_ACEOF -#define ZKT_COPYRIGHT "(c) Feb 2005 - Mar 2010 Holger Zuleger hznet.de" +#define ZKT_COPYRIGHT "(c) Feb 2005 - Nov 2012 Holger Zuleger hznet.de" _ACEOF @@ -6505,7 +6532,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ZKT $as_me 1.0, which was +This file was extended by ZKT $as_me 1.1.2, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -6554,7 +6581,7 @@ Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -ZKT config.status 1.0 +ZKT config.status 1.1.2 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/contrib/zkt/configure.ac b/contrib/zkt-1.1.2/configure.ac similarity index 75% rename from contrib/zkt/configure.ac rename to contrib/zkt-1.1.2/configure.ac index c10790a2c9..6bdc5e99c6 100644 --- a/contrib/zkt/configure.ac +++ b/contrib/zkt-1.1.2/configure.ac @@ -12,13 +12,15 @@ # 2008-10-01 if BIND_UTIL_PATH check failed, use config_zkt.h setting as last resort # 2009-07-30 check for timegm() added # 2009-12-02 the tr command in bind_version= didn't work well under solaris +# 2010-10-14 new option to specify BIND_UTIL_PATH on command line (thanks to Mans Nilsson) +# No build in default BIND_UTIL_PATH used anymore # dnl AC_PREREQ(2.59) ### Package name and current version -AC_INIT(ZKT, 1.0, Holger Zuleger hznet.de) -dnl AC_REVISION($Revision: 1.2 $) +AC_INIT(ZKT, 1.1.2, Holger Zuleger hznet.de) +dnl AC_REVISION($Revision: 1.397 $) ### Files to test to check if src dir contains the package AC_CONFIG_SRCDIR([zkt-signer.c]) @@ -29,17 +31,33 @@ AC_CONFIG_HEADER([config.h]) AC_PROG_CC ### find out the path to BIND utils and version -AC_PATH_PROG([SIGNZONE_PROG], dnssec-signzone) -if test -z "$SIGNZONE_PROG" ; then - AC_MSG_WARN([*** 'BIND dnssec-signzone' missing, use default BIND_UTIL_PATH and BIND_VERSION setting out of config_zkt.h ***]) +AC_ARG_ENABLE([bind_util_path], AS_HELP_STRING( [--enable-bind_util_path=PATH], [Define path to BIND utilities, default is path to dnssec-signzone]), [bind_util_path=$enableval]) +if test -n "$bind_util_path" +then + if test -x "$bind_util_path/dnssec-signzone" + then + AC_MSG_NOTICE([BIND utilities path successfully set to $bind_util_path.]) + SIGNZONE_PROG=$bind_util_path/dnssec-signzone + else + AC_MSG_ERROR([*** 'BIND utility not found in $bind_util_path, please use --enable-bind_util_path= to set it manually' ***]) + fi else - bind_util_path=`dirname "$SIGNZONE_PROG"` - # define BIND_UTIL_PATH in config.h.in - AC_DEFINE_UNQUOTED(BIND_UTIL_PATH, "$bind_util_path/", Path to BIND utilities) - # define BIND_VERSION in config.h.in - bind_version=`$SIGNZONE_PROG 2>&1 | grep "Version:" | tr -cd "[[0-9]]\012" | sed "s/^\(...\).*/\1/"` - AC_DEFINE_UNQUOTED(BIND_VERSION, $bind_version, BIND version as integer number without dots) + AC_PATH_PROG([SIGNZONE_PROG], dnssec-signzone) + if test -n "$SIGNZONE_PROG" + then + bind_util_path=`dirname "$SIGNZONE_PROG"` + AC_MSG_NOTICE([BIND utilities path automatically set to $bind_util_path.]) + else + AC_MSG_ERROR([*** 'could not determine BIND utility path, please use --enable-bind_util_path= ' to set it manually ***]) + fi fi +### By now, we have a path. We'll use it. +# define BIND_UTIL_PATH in config.h.in +AC_DEFINE_UNQUOTED(BIND_UTIL_PATH, "$bind_util_path/", Path to BIND utilities) +# define BIND_VERSION in config.h.in +bind_version=`$SIGNZONE_PROG 2>&1 | grep "Version:" | tr -cd "[[0-9]]\012" | sed "s/^\(...\).*/\1/"` +AC_DEFINE_UNQUOTED(BIND_VERSION, $bind_version, BIND version as integer number without dots) + AC_CHECK_TYPE(uint, unsigned int) AC_CHECK_TYPE(ulong, unsigned long) @@ -68,7 +86,6 @@ AS_IF([test "$enable_printtimezone" = "yes"], [printtimezone=1]) AC_DEFINE_UNQUOTED(PRINT_TIMEZONE, $printtimezone, print out timezone) AC_ARG_ENABLE([printyear], AS_HELP_STRING( [--enable-print-age], [print age with year])) -test "$printyear" = yes && printyear=1 printyear=0 AS_IF([test "$enable_printyear" = "yes"], [printyear=1]) AC_DEFINE_UNQUOTED(PRINT_AGE_WITH_YEAR, $printyear, print age with year) @@ -123,7 +140,7 @@ fi AC_DEFINE_UNQUOTED(USE_TREE, $usetree, Use TREE data structure for dnssec-zkt) AC_DEFINE_UNQUOTED(ZKT_VERSION, "$t$PACKAGE_VERSION", ZKT version string) -AC_DEFINE_UNQUOTED(ZKT_COPYRIGHT, "(c) Feb 2005 - Mar 2010 Holger Zuleger hznet.de", ZKT copyright string) +AC_DEFINE_UNQUOTED(ZKT_COPYRIGHT, "(c) Feb 2005 - Nov 2012 Holger Zuleger hznet.de", ZKT copyright string) ### Checks for libraries. diff --git a/contrib/zkt/debug.h b/contrib/zkt-1.1.2/debug.h similarity index 100% rename from contrib/zkt/debug.h rename to contrib/zkt-1.1.2/debug.h diff --git a/contrib/zkt-1.1.2/distribute.sh b/contrib/zkt-1.1.2/distribute.sh new file mode 100755 index 0000000000..d9e958952c --- /dev/null +++ b/contrib/zkt-1.1.2/distribute.sh @@ -0,0 +1,82 @@ +################################################################# +# +# @(#) distribute.sh -- distribute and reload command for dnssec-signer +# +# (c) Jul 2008 Holger Zuleger hznet.de +# +# Feb 2010 action "distkeys" added but currently not used +# +# This shell script will be run by zkt-signer as a distribution +# and reload command if: +# +# a) the dnssec.conf file parameter Distribute_Cmd: points +# to this file +# and +# b) the user running the zkt-signer command is not +# root (uid==0) +# and +# c) the owner of this shell script is the same as the +# running user and the access rights don't allow writing +# for anyone except the owner +# or +# d) the group of this shell script is the same as the +# running user and the access rights don't allow writing +# for anyone except the group +# +################################################################# + +# set path to rndc and scp +PATH="/bin:/usr/bin:/usr/local/sbin" + +# remote server and directory +server=localhost # fqdn of remote name server +dir=/var/named # zone directory on remote name server + +progname=$0 +usage() +{ + echo "usage: $progname distkeys|distribute|reload []" 1>&2 + test $# -gt 0 && echo $* 1>&2 + exit 1 +} + +if test $# -lt 3 +then + usage +fi +action="$1" +zone="$2" +zonefile="$3" +view="" +test $# -gt 3 && view="$4" + +case $action in +distkeys) + if test -n "$view" + then + : echo "scp K$zone+* $server:$dir/$view/$zone/" + scp K$zone+* $server:$dir/$view/$zone/ + else + : echo "scp K$zone+* $server:$dir/$zone/" + scp K$zone+* $server:$dir/$zone/ + fi + ;; +distribute) + if test -n "$view" + then + : echo "scp $zonefile $server:$dir/$view/$zone/" + scp $zonefile $server:$dir/$view/$zone/ + else + : echo "scp $zonefile $server:$dir/$zone/" + scp $zonefile $server:$dir/$zone/ + fi + ;; +reload) + : echo "rndc $action $zone $view" + rndc $action $zone $view + ;; +*) + usage "illegal action $action" + ;; +esac + diff --git a/contrib/zkt/dki.c b/contrib/zkt-1.1.2/dki.c similarity index 97% rename from contrib/zkt/dki.c rename to contrib/zkt-1.1.2/dki.c index 5cd2fa21e6..80fa5cefe2 100644 --- a/contrib/zkt/dki.c +++ b/contrib/zkt-1.1.2/dki.c @@ -789,6 +789,39 @@ int dki_prt_trustedkey (const dki_t *dkp, FILE *fp) return len; } +/***************************************************************** +** dki_prt_managedkey () +*****************************************************************/ +int dki_prt_managedkey (const dki_t *dkp, FILE *fp) +{ + char *p; + int spaces; + int len = 0; + + if ( dkp == NULL ) + return len; + len += fprintf (fp, "\"%s\" ", dkp->name); + spaces = 22 - (strlen (dkp->name) + 3); + len += fprintf (fp, "initial-key "); + spaces -= 13; + len += fprintf (fp, "%*s", spaces > 0 ? spaces : 0 , " "); + len += fprintf (fp, "%d 3 %d ", dkp->flags, dkp->algo); + if ( spaces < 0 ) + len += fprintf (fp, "\n\t\t\t%7s", " "); + len += fprintf (fp, "\""); + for ( p = dkp->pubkey; *p ; p++ ) + if ( *p == ' ' ) + len += fprintf (fp, "\n\t\t\t\t"); + else + putc (*p, fp), len += 1; + + if ( dki_isrevoked (dkp) ) + len += fprintf (fp, "\" ; # key id = %u (original key id = %u)\n\n", (dkp->tag + 128) % 65535, dkp->tag); + else + len += fprintf (fp, "\" ; # key id = %u\n\n", dkp->tag); + return len; +} + /***************************************************************** ** dki_cmp () return <0 | 0 | >0 diff --git a/contrib/zkt/dki.h b/contrib/zkt-1.1.2/dki.h similarity index 99% rename from contrib/zkt/dki.h rename to contrib/zkt-1.1.2/dki.h index d0712b14bf..caedddb483 100644 --- a/contrib/zkt/dki.h +++ b/contrib/zkt-1.1.2/dki.h @@ -151,6 +151,7 @@ extern int dki_allcmp (const dki_t *a, const dki_t *b); extern dki_t *dki_read (const char *dir, const char *fname); extern int dki_readdir (const char *dir, dki_t **listp, int recursive); extern int dki_prt_trustedkey (const dki_t *dkp, FILE *fp); +extern int dki_prt_managedkey (const dki_t *dkp, FILE *fp); extern int dki_prt_dnskey (const dki_t *dkp, FILE *fp); extern int dki_prt_dnskeyttl (const dki_t *dkp, FILE *fp, int ttl); extern int dki_prt_dnskey_raw (const dki_t *dkp, FILE *fp); diff --git a/contrib/zkt/doc/KeyRollover.ms b/contrib/zkt-1.1.2/doc/KeyRollover.ms similarity index 100% rename from contrib/zkt/doc/KeyRollover.ms rename to contrib/zkt-1.1.2/doc/KeyRollover.ms diff --git a/contrib/zkt-1.1.2/doc/KeyRollover.ps b/contrib/zkt-1.1.2/doc/KeyRollover.ps new file mode 100644 index 0000000000..7f22fdead4 --- /dev/null +++ b/contrib/zkt-1.1.2/doc/KeyRollover.ps @@ -0,0 +1,304 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.19.2 +%%CreationDate: Mon Jul 14 23:23:30 2008 +%%DocumentNeededResources: font Times-Bold +%%+ font Times-Roman +%%+ font Courier +%%+ font Symbol +%%DocumentSuppliedResources: procset grops 1.19 2 +%%Pages: 1 +%%PageOrder: Ascend +%%DocumentMedia: Default 595 842 0 () () +%%Orientation: Portrait +%%EndComments +%%BeginDefaults +%%PageMedia: Default +%%EndDefaults +%%BeginProlog +%%BeginResource: procset grops 1.19 2 +%!PS-Adobe-3.0 Resource-ProcSet +/setpacking where{ +pop +currentpacking +true setpacking +}if +/grops 120 dict dup begin +/SC 32 def +/A/show load def +/B{0 SC 3 -1 roll widthshow}bind def +/C{0 exch ashow}bind def +/D{0 exch 0 SC 5 2 roll awidthshow}bind def +/E{0 rmoveto show}bind def +/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def +/G{0 rmoveto 0 exch ashow}bind def +/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/I{0 exch rmoveto show}bind def +/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def +/K{0 exch rmoveto 0 exch ashow}bind def +/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/M{rmoveto show}bind def +/N{rmoveto 0 SC 3 -1 roll widthshow}bind def +/O{rmoveto 0 exch ashow}bind def +/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/Q{moveto show}bind def +/R{moveto 0 SC 3 -1 roll widthshow}bind def +/S{moveto 0 exch ashow}bind def +/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/SF{ +findfont exch +[exch dup 0 exch 0 exch neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/MF{ +findfont +[5 2 roll +0 3 1 roll +neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/level0 0 def +/RES 0 def +/PL 0 def +/LS 0 def +/MANUAL{ +statusdict begin/manualfeed true store end +}bind def +/PLG{ +gsave newpath clippath pathbbox grestore +exch pop add exch pop +}bind def +/BP{ +/level0 save def +1 setlinecap +1 setlinejoin +72 RES div dup scale +LS{ +90 rotate +}{ +0 PL translate +}ifelse +1 -1 scale +}bind def +/EP{ +level0 restore +showpage +}def +/DA{ +newpath arcn stroke +}bind def +/SN{ +transform +.25 sub exch .25 sub exch +round .25 add exch round .25 add exch +itransform +}bind def +/DL{ +SN +moveto +SN +lineto stroke +}bind def +/DC{ +newpath 0 360 arc closepath +}bind def +/TM matrix def +/DE{ +TM currentmatrix pop +translate scale newpath 0 0 .5 0 360 arc closepath +TM setmatrix +}bind def +/RC/rcurveto load def +/RL/rlineto load def +/ST/stroke load def +/MT/moveto load def +/CL/closepath load def +/Fr{ +setrgbcolor fill +}bind def +/setcmykcolor where{ +pop +/Fk{ +setcmykcolor fill +}bind def +}if +/Fg{ +setgray fill +}bind def +/FL/fill load def +/LW/setlinewidth load def +/Cr/setrgbcolor load def +/setcmykcolor where{ +pop +/Ck/setcmykcolor load def +}if +/Cg/setgray load def +/RE{ +findfont +dup maxlength 1 index/FontName known not{1 add}if dict begin +{ +1 index/FID ne{def}{pop pop}ifelse +}forall +/Encoding exch def +dup/FontName exch def +currentdict end definefont pop +}bind def +/DEFS 0 def +/EBEGIN{ +moveto +DEFS begin +}bind def +/EEND/end load def +/CNT 0 def +/level1 0 def +/PBEGIN{ +/level1 save def +translate +div 3 1 roll div exch scale +neg exch neg exch translate +0 setgray +0 setlinecap +1 setlinewidth +0 setlinejoin +10 setmiterlimit +[]0 setdash +/setstrokeadjust where{ +pop +false setstrokeadjust +}if +/setoverprint where{ +pop +false setoverprint +}if +newpath +/CNT countdictstack def +userdict begin +/showpage{}def +/setpagedevice{}def +}bind def +/PEND{ +countdictstack CNT sub{end}repeat +level1 restore +}bind def +end def +/setpacking where{ +pop +setpacking +}if +%%EndResource +%%EndProlog +%%BeginSetup +%%BeginFeature: *PageSize Default +<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice +%%EndFeature +%%IncludeResource: font Times-Bold +%%IncludeResource: font Times-Roman +%%IncludeResource: font Courier +%%IncludeResource: font Symbol +grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 +def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron +/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent +/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen +/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon +/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O +/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex +/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y +/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft +/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl +/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut +/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash +/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen +/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft +/logicalnot/minus/registered/macron/degree/plusminus/twosuperior +/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior +/ordmasculine/guilsinglright/onequarter/onehalf/threequarters +/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE +/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn +/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash +/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def +/Courier@0 ENC0/Courier RE/Times-Roman@0 ENC0/Times-Roman RE +/Times-Bold@0 ENC0/Times-Bold RE +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 2.5(1. DNS)72 84 R -.25(Ke)2.5 G 2.5(yS).25 G +(tatus T)-2.5 E(ypes and Filenames)-.74 E -.25(Ke)189.22 105.6 S 63.235 +(yF).25 G 40.415(ilename used)-63.235 F -.25(fo)2.5 G 29.33(rd).25 G +(nssec-zkt)-29.33 E -.74(Ty)168.35 117.6 S 12.5(pe Flags).74 F 23.57 +(public pri)16.95 F -.1(va)-.1 G 21.62(te signing?).1 F(label)40.72 E +(Status)99.34 111.6 Q .4 LW 473.8 122.1 72 122.1 DL/F1 10/Times-Roman@0 +SF(acti)72 131.6 Q 70.67 -.15(ve Z)-.25 H 18.43(SK 256).15 F(.k)18.89 E +26.69 -.15(ey .)-.1 H(pri).15 E -.25(va)-.25 G 46.605(te y).25 F/F2 10 +/Courier@0 SF(act ive)30.285 E F1 17.32(KSK 257)168.35 143.6 R(.k)18.89 +E 26.69 -.15(ey .)-.1 H(pri).15 E -.25(va)-.25 G 46.605(te y).25 F F2 +(act ive)30.285 E F1 54.96(published ZSK)72 158 R 16.39(256 .k)20.93 F +26.69 -.15(ey .)-.1 H 34.985(published n).15 F F2(pub lished)30.285 E F1 +17.32(KSK 257)168.35 170 R(.k)18.89 E 26.69 -.15(ey .)-.1 H(pri).15 E +-.25(va)-.25 G 46.605(te n).25 F F2(sta ndby)30.285 E F1 +(depreciated \(retired\))72 184.4 Q 18.43(ZSK 256)15 F(.k)18.89 E 26.69 +-.15(ey .)-.1 H 27.785(depreciated n).15 F F2(dep reciated)30.285 E F1 +(re)72 198.8 Q -.2(vo)-.25 G -.1(ke).2 G 64.69(dK).1 G 17.32(SK 385) +-64.69 F(.k)18.89 E 26.69 -.15(ey .)-.1 H(pri).15 E -.25(va)-.25 G +46.605(te y).25 F F2(rev oked)30.285 E F1(remo)72 213.2 Q -.15(ve)-.15 G +61.66(dK).15 G 17.32(SK 257)-61.66 F(k*.k)18.89 E 16.69 -.15(ey k)-.1 H +(*.pri).15 E -.25(va)-.25 G 36.605(te n).25 F F2(-)30.285 E F1 80.52 +(sep KSK)72 227.6 R 16.39(257 .k)19.82 F 26.69 -.15(ey -)-.1 H(n)75.695 +E F2(sep)30.285 E 394.3 96.1 394.3 230.1 DL 343.73 96.1 343.73 230.1 DL +280.14 108.1 280.14 230.1 DL 234.56 96.1 234.56 230.1 DL 196.78 108.1 +196.78 230.1 DL 160.85 96.1 160.85 230.1 DL F0 2.5(2. K)72 257.6 R(ey r) +-.25 E(ollo)-.18 E -.1(ve)-.1 G(r).1 E 2.5(2.1. Zone)72 285.2 R +(signing k)2.5 E(ey r)-.1 E(ollo)-.18 E -.1(ve)-.1 G 2.5(r\().1 G(pr) +-2.5 E(e-publish RFC4641\))-.18 E 57.47(action cr)75.34 306.8 R 27.035 +(eate change)-.18 F -.18(re)23.045 G(mo).18 E -.1(ve)-.1 G -.1(ke)72 +318.8 S 65.025(ys newk).1 F 24.395(ey sig)-.1 F -.1(ke)2.5 G 23.775(yo) +.1 G(ld k)-23.775 E(ey)-.1 E 301.18 323.3 72 323.3 DL F1 23.62 +(zsk1 acti)72 332.8 R 12.8 -.15(ve a)-.25 H(cti).15 E 28.21 -.15(ve d) +-.25 H(epreciated).15 E 62.1(zsk2 published)72 344.8 R(acti)15 E 35.41 +-.15(ve a)-.25 H(cti).15 E -.15(ve)-.25 G 12.5(RRSIG zsk1)72 360.4 R +33.06(zsk1 zsk2)20.15 F(zsk2)42.76 E 262.41 297.3 262.41 362.9 DL 201.32 +297.3 201.32 362.9 DL 147.43 297.3 147.43 362.9 DL 108.95 309.3 108.95 +362.9 DL F0 2.5(2.2. K)72 390.4 R(ey signing k)-.25 E(ey r)-.1 E(ollo) +-.18 E -.1(ve)-.1 G 2.5(r\().1 G(double signatur)-2.5 E 2.5(eR)-.18 G +(FC4641\))-2.5 E 58.165(action cr)118.39 412 R 26.63(eate change)-.18 F +-.18(re)21.945 G(mo).18 E -.1(ve)-.1 G -.1(ke)72 424 S 108.77(ys newk).1 +F 16.58(ey delegation)-.1 F(old k)15.265 E(ey)-.1 E 343.42 428.5 72 +428.5 DL F1(ksk)72 438 Q(1)5 I(acti)68.61 -5 M 12.8 -.15(ve a)-.25 H +(cti).15 E 29.6 -.15(ve a)-.25 H(cti).15 E -.15(ve)-.25 G(ksk)72 450 Q +(2)5 I(acti)107.09 -5 M 29.6 -.15(ve a)-.25 H(cti).15 E 33.21 -.15(ve a) +-.25 H(cti).15 E -.15(ve)-.25 G(DNSKEY RRSIG)72 465.6 Q 17.09 +(ksk1 ksk1,ksk2)15 F 16.11(ksk1,ksk2 ksk2)15 F(DS at parent)72 481.2 Q +(DS)37.51 E(1)5 I(DS)20.7 -5 M(1)5 I(DS)37.5 -5 M(2)5 I(DS)41.11 -5 M(2) +5 I 304.65 402.5 304.65 483.7 DL 245.76 402.5 245.76 483.7 DL 190.48 +402.5 190.48 483.7 DL 152 414.5 152 483.7 DL F0 2.5(2.3. K)72 511.2 R +(ey signing k)-.25 E(ey r)-.1 E(ollo)-.18 E -.1(ve)-.1 G 2.5(r\().1 G +(rfc5011\))-2.5 E 63.465(action newk)118.39 532.8 R 19.855(ey change)-.1 +F(delegation)2.5 E -.1(ke)72 544.8 S 112.32(ys &).1 F -.18(ro)2.5 G(llo) +.18 E -.1(ve)-.1 G 15.525(r&).1 G -.18(re)-13.025 G(mo).18 E .2 -.1 +(ve o)-.1 H(ld k).1 E(ey)-.1 E 341.33 549.3 72 549.3 DL F1(ksk)72 558.8 +Q(1)5 I(acti)68.61 -5 M 20.43 -.15(ve r)-.25 H -2.2 -.25(ev o).15 H -.1 +(ke).25 G<87>.1 -2.4 M(ksk)72 570.8 Q(2)5 I 12.5(standby acti)68.61 -5 N +33.65 -.15(ve a)-.25 H(cti).15 E -.15(ve)-.25 G(ksk)72 582.8 Q(3)5 I +(standby)114.72 -5 M<88>-2.4 I(standby)23.22 2.4 M(DNSKEY RRSIG)72 598.4 +Q 24.72(ksk1 ksk1,ksk2)15 F(ksk2)19.05 E -.15(Pa)72 614 S(rent DS).15 E +(DS)46.82 E(1)5 I(DS)28.33 -5 M(1)5 I(DS)41.55 -5 M(2)5 I(DS)159.5 626 Q +(2)5 I(DS)28.33 -5 M(2)5 I(DS)41.55 -5 M(3)5 I 257.44 523.3 257.44 628.5 +DL 198.11 523.3 198.11 628.5 DL 152 535.3 152 628.5 DL<87>72 645.2 Q(Ha) +2.5 2.4 M .3 -.15(ve t)-.2 H 2.5(or).15 G(emain until the remo)-2.5 E .3 +-.15(ve h)-.15 H(old-do).15 E(wn time is e)-.25 E +(xpired, which is 30days at a minimum.)-.15 E<88>72 660.8 Q -.4(Wi)2.5 +2.4 O(ll be the standby k).4 E .3 -.15(ey a)-.1 H(fter the hold-do).15 E +(wn time is e)-.25 E(xpired)-.15 E(Add holdtime)72 675.2 Q/F3 10/Symbol +SF(=)2.5 E F1(max\(30days, TTL of DNSKEY\))2.5 E 0 Cg EP +%%Trailer +end +%%EOF diff --git a/contrib/zkt-1.1.2/doc/draft-gudmundsson-life-of-dnskey-00.txt b/contrib/zkt-1.1.2/doc/draft-gudmundsson-life-of-dnskey-00.txt new file mode 100644 index 0000000000..18cda6c742 --- /dev/null +++ b/contrib/zkt-1.1.2/doc/draft-gudmundsson-life-of-dnskey-00.txt @@ -0,0 +1,616 @@ + + + +Intended Status: Informational O. Gudmundsson +Network Working Group OGUD Consulting LLC +Internet-Draft J. Ihren +Expires: August 21, 2008 AAB + February 18, 2008 + + + Names of States in the life of a DNSKEY + draft-gudmundsson-life-of-dnskey-00 + +Status of this Memo + + By submitting this Internet-Draft, each author represents that any + applicable patent or other IPR claims of which he or she is aware + have been or will be disclosed, and any of which he or she becomes + aware will be disclosed, in accordance with Section 6 of BCP 79. + + Internet-Drafts are working documents of the Internet Engineering + Task Force (IETF), its areas, and its working groups. Note that + other groups may also distribute working documents as Internet- + Drafts. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + The list of current Internet-Drafts can be accessed at + http://www.ietf.org/ietf/1id-abstracts.txt. + + The list of Internet-Draft Shadow Directories can be accessed at + http://www.ietf.org/shadow.html. + + This Internet-Draft will expire on August 21, 2008. + +Copyright Notice + + Copyright (C) The IETF Trust (2008). + + + + + + + + + + + + + +Gudmundsson & Ihren Expires August 21, 2008 [Page 1] + +Internet-Draft DNSSEC Key life stages. February 2008 + + +Abstract + + This document recommends a specific terminology to use when + expressing the state that a DNSKEY is in at particular time. This + does not affect how the protocol operates in any way. + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 2. DNSKEY timeline . . . . . . . . . . . . . . . . . . . . . . . 4 + 3. Life stages of a DNSKEY . . . . . . . . . . . . . . . . . . . 5 + 3.1. Generated . . . . . . . . . . . . . . . . . . . . . . . . 5 + 3.2. Published . . . . . . . . . . . . . . . . . . . . . . . . 5 + 3.2.1. Pre-Publication . . . . . . . . . . . . . . . . . . . 5 + 3.2.2. Out-Of-Band Publication . . . . . . . . . . . . . . . 5 + 3.3. Active . . . . . . . . . . . . . . . . . . . . . . . . . . 5 + 3.4. Retired . . . . . . . . . . . . . . . . . . . . . . . . . 5 + 3.5. Removed . . . . . . . . . . . . . . . . . . . . . . . . . 6 + 3.5.1. Lame . . . . . . . . . . . . . . . . . . . . . . . . . 6 + 3.5.2. Stale . . . . . . . . . . . . . . . . . . . . . . . . 6 + 3.6. Revoked . . . . . . . . . . . . . . . . . . . . . . . . . 6 + 4. Security considerations . . . . . . . . . . . . . . . . . . . 7 + 5. IANA considerations . . . . . . . . . . . . . . . . . . . . . 8 + 6. References . . . . . . . . . . . . . . . . . . . . . . . . . . 9 + 6.1. Normative References . . . . . . . . . . . . . . . . . . . 9 + 6.2. Informative References . . . . . . . . . . . . . . . . . . 9 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 10 + Intellectual Property and Copyright Statements . . . . . . . . . . 11 + + + + + + + + + + + + + + + + + + + + + + +Gudmundsson & Ihren Expires August 21, 2008 [Page 2] + +Internet-Draft DNSSEC Key life stages. February 2008 + + +1. Introduction + + When the editors of this document where comparing their DNSSEC key + management projects they discovered that they where discussing + roughly the same thing but using different terminology. + + This document presents a unified terminology to use when describing + the current state of a DNSKEY. + + The DNSSEC standards documents ([1], [2] and [3]) do not address the + required states for the key management of a DNSSEC key. The DNSSEC + Operational Practices [4] document does propose that keys be + published before use but uses inconsistent or confusing terms. This + document assumes basic understanding of DNSSEC and key management. + + The terms proposed in this document attempt to avoid any confusion + and make the states of keys to be as clear as possible. The terms + used in this document are intended as a operational supplement to the + terms defined in Section 2 of [1]. + + To large extent this discussion is motivated by Trust anchor keys but + the same terminology can be used for zone signing keys. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Gudmundsson & Ihren Expires August 21, 2008 [Page 3] + +Internet-Draft DNSSEC Key life stages. February 2008 + + +2. DNSKEY timeline + + The model in this document is that keys progress through a state + machine along a one-way path, keys never move to an earlier states. + + + + GENERATED----------> PUBLISHED ---> ACTIVE ---> RETIRED --> REMOVED + | ^ | | | ^ + | | | | v | + +--> Pre-PUBLISHED--+ +--------+---------> REVOKED ---+ + + + DNSKEY time line. + + There are few more states that are defined below but these apply only + to the publisher of TA's and the consumer of TA's. Two of these are + sub-sets of the Published state, the other two are error states. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Gudmundsson & Ihren Expires August 21, 2008 [Page 4] + +Internet-Draft DNSSEC Key life stages. February 2008 + + +3. Life stages of a DNSKEY + +3.1. Generated + + Once a key is generated it enters state Generated and stays there + until the next state. While in this state only the owner of the key + is aware of its existence and can prepare for its future use. + +3.2. Published + + Once the key is added to the DNSKEY set of a zone the key is there + for the world to see, or published. The key needs to remain in this + state for some time to propagate to all validators that have cached + the prior version of the DNSKEY set. In the case of KSK the key + should remain in this state for a longer time as documented in DNSSEC + Timers RFC [5]. + +3.2.1. Pre-Publication + + In certain circumstances a zone owner may want to give out a new + Trust Anchor before exposing the actual public key. In this case the + zone can publish a DS record of the key. This allows others to + configure the trust anchor but will not be able to use the key until + the key is published in the DNSKEY RRset. + +3.2.2. Out-Of-Band Publication + + In certain circumstances a domain may want to give out a new Trust + Anchor outside DNS to give others a long lead time to configure the + new key as trust anchor. The reason people may want to do this is to + keep the size of the DNSKEY set smaller and only add new trust anchor + just before the key goes into use. One likely use for this is the + DNS "." root key as it does not have a parent that can publish a DS + record for it. The publication mechanism does not matter it can be + any one of web-site, advertisement in Financial Times and other + international publication, e-mail to DNS related mailing lists, etc.. + +3.3. Active + + The key is in ACTIVE state while it is actively signing data in the + zone it resides in. It is one of the the keys that are signing the + zone or parts of the zone. + +3.4. Retired + + When the key is no longer used for signing the zone it enters state + Retired. In this state there may still be signatures by the key in + cached data from the zone available at recursive servers, but the + + + +Gudmundsson & Ihren Expires August 21, 2008 [Page 5] + +Internet-Draft DNSSEC Key life stages. February 2008 + + + authoritative servers for the zone do no longer carry any signatures + generated by the key. + +3.5. Removed + + Once the key is removed from the DNSKEY RRset it enters the state + Removed. At this point all signatures by the key that may still be + temporarily valid will fail to verify once the validator refreshes + the DNSKEY RRset in its memory. + + Therefore "removal" of a key is typically not done until all the + cached signatures have expired. Entering this state too early may + cause number of validators to end up with STALE Trust Anchors. + +3.5.1. Lame + + A Trust Anchor is Lame if the parent continues to publish DS pointing + to the key after it has been removed from the DNSKEY RRset. A Trust + Anchor is arguably Lame if there are no signatures by a Retired KSK + in the zone. + +3.5.2. Stale + + A Stale Trust Anchor is an old TA that remains in a validators list + of active key(s) after the key has been removed from the zone's + DNSKEY RRset. + +3.6. Revoked + + There are times when a zone wants to signal that a particular key + should not be used at all. The mechanism to do this is to set the + REVOKE bit [5]. Any key in any of the while the key is the DNSSKEY + set can be exited to Revoked state. After some time in the Revoke + state the key will be Removed. + + + + + + + + + + + + + + + + + +Gudmundsson & Ihren Expires August 21, 2008 [Page 6] + +Internet-Draft DNSSEC Key life stages. February 2008 + + +4. Security considerations + + TBD + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Gudmundsson & Ihren Expires August 21, 2008 [Page 7] + +Internet-Draft DNSSEC Key life stages. February 2008 + + +5. IANA considerations + + This document does not have any IANA actions. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Gudmundsson & Ihren Expires August 21, 2008 [Page 8] + +Internet-Draft DNSSEC Key life stages. February 2008 + + +6. References + +6.1. Normative References + +6.2. Informative References + + [1] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, + "DNS Security Introduction and Requirements", RFC 4033, + March 2005. + + [2] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, + "Resource Records for the DNS Security Extensions", RFC 4034, + March 2005. + + [3] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, + "Protocol Modifications for the DNS Security Extensions", + RFC 4035, March 2005. + + [4] Kolkman, O. and R. Gieben, "DNSSEC Operational Practices", + RFC 4641, September 2006. + + [5] StJohns, M., "Automated Updates of DNS Security (DNSSEC) Trust + Anchors", RFC 5011, September 2007. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Gudmundsson & Ihren Expires August 21, 2008 [Page 9] + +Internet-Draft DNSSEC Key life stages. February 2008 + + +Authors' Addresses + + Olafur Gudmundsson + OGUD Consulting LLC + 3821 Village Park Drive + Chevy Chase, MD 20815 + USA + + Email: ogud@ogud.com + + + Johan Ihren + Automatica, AB + Bellmansgatan 30 + Stockholm, SE-118 47 + Sweden + + Email: johani@automatica.se + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Gudmundsson & Ihren Expires August 21, 2008 [Page 10] + +Internet-Draft DNSSEC Key life stages. February 2008 + + +Full Copyright Statement + + Copyright (C) The IETF Trust (2008). + + This document is subject to the rights, licenses and restrictions + contained in BCP 78, and except as set forth therein, the authors + retain all their rights. + + This document and the information contained herein are provided on an + "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND + THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF + THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED + WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + + +Intellectual Property + + The IETF takes no position regarding the validity or scope of any + Intellectual Property Rights or other rights that might be claimed to + pertain to the implementation or use of the technology described in + this document or the extent to which any license under such rights + might or might not be available; nor does it represent that it has + made any independent effort to identify any such rights. Information + on the procedures with respect to rights in RFC documents can be + found in BCP 78 and BCP 79. + + Copies of IPR disclosures made to the IETF Secretariat and any + assurances of licenses to be made available, or the result of an + attempt made to obtain a general license or permission for the use of + such proprietary rights by implementers or users of this + specification can be obtained from the IETF on-line IPR repository at + http://www.ietf.org/ipr. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights that may cover technology that may be required to implement + this standard. Please address the information to the IETF at + ietf-ipr@ietf.org. + + +Acknowledgment + + Funding for the RFC Editor function is provided by the IETF + Administrative Support Activity (IASA). + + + + + +Gudmundsson & Ihren Expires August 21, 2008 [Page 11] + diff --git a/contrib/zkt-1.1.2/doc/draft-ietf-dnsop-rfc4641bis-01.txt b/contrib/zkt-1.1.2/doc/draft-ietf-dnsop-rfc4641bis-01.txt new file mode 100644 index 0000000000..f7d83e9d16 --- /dev/null +++ b/contrib/zkt-1.1.2/doc/draft-ietf-dnsop-rfc4641bis-01.txt @@ -0,0 +1,2128 @@ + + + +DNSOP O. Kolkman +Internet-Draft NLnet Labs +Obsoletes: 2541 (if approved) R. Gieben +Intended status: BCP +Expires: September 8, 2009 March 7, 2009 + + + DNSSEC Operational Practices, Version 2 + draft-ietf-dnsop-rfc4641bis-01 + +Status of This Memo + + This Internet-Draft is submitted to IETF in full conformance with the + provisions of BCP 78 and BCP 79. This document may contain material + from IETF Documents or IETF Contributions published or made publicly + available before November 10, 2008. The person(s) controlling the + copyright in some of this material may not have granted the IETF + Trust the right to allow modifications of such material outside the + IETF Standards Process. Without obtaining an adequate license from + the person(s) controlling the copyright in such materials, this + document may not be modified outside the IETF Standards Process, and + derivative works of it may not be created outside the IETF Standards + Process, except to format it for publication as an RFC or to + translate it into languages other than English. + + Internet-Drafts are working documents of the Internet Engineering + Task Force (IETF), its areas, and its working groups. Note that + other groups may also distribute working documents as Internet- + Drafts. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + The list of current Internet-Drafts can be accessed at + http://www.ietf.org/ietf/1id-abstracts.txt. + + The list of Internet-Draft Shadow Directories can be accessed at + http://www.ietf.org/shadow.html. + + This Internet-Draft will expire on September 8, 2009. + +Copyright Notice + + Copyright (c) 2009 IETF Trust and the persons identified as the + document authors. All rights reserved. + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 1] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents in effect on the date of + publication of this document (http://trustee.ietf.org/license-info). + Please review these documents carefully, as they describe your rights + and restrictions with respect to this document. + +Abstract + + This document describes a set of practices for operating the DNS with + security extensions (DNSSEC). The target audience is zone + administrators deploying DNSSEC. + + The document discusses operational aspects of using keys and + signatures in the DNS. It discusses issues of key generation, key + storage, signature generation, key rollover, and related policies. + + This document obsoletes RFC 2541, as it covers more operational + ground and gives more up-to-date requirements with respect to key + sizes and the new DNSSEC specification. + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 + 1.1. The Use of the Term 'key' . . . . . . . . . . . . . . . . 5 + 1.2. Time Definitions . . . . . . . . . . . . . . . . . . . . . 5 + 2. Keeping the Chain of Trust Intact . . . . . . . . . . . . . . 5 + 3. Keys Generation and Storage . . . . . . . . . . . . . . . . . 6 + 3.1. Zone and Key Signing Keys . . . . . . . . . . . . . . . . 6 + 3.1.1. Motivations for the KSK and ZSK Separation . . . . . . 7 + 3.1.2. Differentiation for 'High-Level' Zones . . . . . . . . 9 + 3.2. Key Generation . . . . . . . . . . . . . . . . . . . . . . 9 + 3.3. Key Effectivity Period . . . . . . . . . . . . . . . . . . 9 + 3.4. Key Algorithm . . . . . . . . . . . . . . . . . . . . . . 10 + 3.5. Key Sizes . . . . . . . . . . . . . . . . . . . . . . . . 10 + 3.6. Private Key Storage . . . . . . . . . . . . . . . . . . . 11 + 4. Signature Generation, Key Rollover, and Related Policies . . . 12 + 4.1. Time in DNSSEC . . . . . . . . . . . . . . . . . . . . . . 12 + 4.1.1. Time Considerations . . . . . . . . . . . . . . . . . 13 + 4.2. Key Rollovers . . . . . . . . . . . . . . . . . . . . . . 15 + 4.2.1. Zone Signing Key Rollovers . . . . . . . . . . . . . . 15 + 4.2.1.1. Pre-Publish Key Rollover . . . . . . . . . . . . . 15 + 4.2.1.2. Double Signature Zone Signing Key Rollover . . . . 17 + 4.2.1.3. Pros and Cons of the Schemes . . . . . . . . . . . 19 + 4.2.2. Key Signing Key Rollovers . . . . . . . . . . . . . . 19 + 4.2.3. Difference Between ZSK and KSK Rollovers . . . . . . . 21 + 4.2.4. Key algorithm rollover . . . . . . . . . . . . . . . . 22 + 4.2.5. Automated Key Rollovers . . . . . . . . . . . . . . . 23 + 4.3. Planning for Emergency Key Rollover . . . . . . . . . . . 24 + + + +Kolkman & Gieben Expires September 8, 2009 [Page 2] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + 4.3.1. KSK Compromise . . . . . . . . . . . . . . . . . . . . 24 + 4.3.1.1. Keeping the Chain of Trust Intact . . . . . . . . 25 + 4.3.1.2. Breaking the Chain of Trust . . . . . . . . . . . 26 + 4.3.2. ZSK Compromise . . . . . . . . . . . . . . . . . . . . 26 + 4.3.3. Compromises of Keys Anchored in Resolvers . . . . . . 26 + 4.4. Parental Policies . . . . . . . . . . . . . . . . . . . . 27 + 4.4.1. Initial Key Exchanges and Parental Policies + Considerations . . . . . . . . . . . . . . . . . . . . 27 + 4.4.2. Storing Keys or Hashes? . . . . . . . . . . . . . . . 27 + 4.4.3. Security Lameness . . . . . . . . . . . . . . . . . . 28 + 4.4.4. DS Signature Validity Period . . . . . . . . . . . . . 28 + 4.4.5. (Non) Cooperating Registrars . . . . . . . . . . . . . 29 + 5. Security Considerations . . . . . . . . . . . . . . . . . . . 30 + 6. IANA considerations . . . . . . . . . . . . . . . . . . . . . 30 + 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 30 + 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 31 + 8.1. Normative References . . . . . . . . . . . . . . . . . . . 31 + 8.2. Informative References . . . . . . . . . . . . . . . . . . 31 + Appendix A. Terminology . . . . . . . . . . . . . . . . . . . . . 32 + Appendix B. Zone Signing Key Rollover How-To . . . . . . . . . . 34 + Appendix C. Typographic Conventions . . . . . . . . . . . . . . . 34 + Appendix D. Document Editing History . . . . . . . . . . . . . . 37 + D.1. draft-ietf-dnsop-rfc4641-00 . . . . . . . . . . . . . . . 37 + D.2. version 0->1 . . . . . . . . . . . . . . . . . . . . . . . 37 + + + + + + + + + + + + + + + + + + + + + + + + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 3] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + +1. Introduction + + This document describes how to run a DNS Security (DNSSEC)-enabled + environment. It is intended for operators who have knowledge of the + DNS (see RFC 1034 [1] and RFC 1035 [2]) and want to deploy DNSSEC. + See RFC 4033 [3] for an introduction to DNSSEC, RFC 4034 [4] for the + newly introduced Resource Records (RRs), and RFC 4035 [5] for the + protocol changes. + + During workshops and early operational deployment tests, operators + and system administrators have gained experience about operating the + DNS with security extensions (DNSSEC). This document translates + these experiences into a set of practices for zone administrators. + At the time of writing, there exists very little experience with + DNSSEC in production environments; this document should therefore + explicitly not be seen as representing 'Best Current Practices'. + [OK: Is this document ripe enough to shoot for BCP?] + + The procedures herein are focused on the maintenance of signed zones + (i.e., signing and publishing zones on authoritative servers). It is + intended that maintenance of zones such as re-signing or key + rollovers be transparent to any verifying clients on the Internet. + + The structure of this document is as follows. In Section 2, we + discuss the importance of keeping the "chain of trust" intact. + Aspects of key generation and storage of private keys are discussed + in Section 3; the focus in this section is mainly on the private part + of the key(s). Section 4 describes considerations concerning the + public part of the keys. Since these public keys appear in the DNS + one has to take into account all kinds of timing issues, which are + discussed in Section 4.1. Section 4.2 and Section 4.3 deal with the + rollover, or supercession, of keys. Finally, Section 4.4 discusses + considerations on how parents deal with their children's public keys + in order to maintain chains of trust. + + The typographic conventions used in this document are explained in + Appendix C. + + Since this is a document with operational suggestions and there are + no protocol specifications, the RFC 2119 [6] language does not apply. + + This document [OK: when approved] obsoletes RFC 4641 [16]. + + [OK: Editorial comments and questions are indicated by square + brackets and editor innitials] + + + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 4] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + +1.1. The Use of the Term 'key' + + It is assumed that the reader is familiar with the concept of + asymmetric keys on which DNSSEC is based (public key cryptography + RFC4949 [17]). Therefore, this document will use the term 'key' + rather loosely. Where it is written that 'a key is used to sign + data' it is assumed that the reader understands that it is the + private part of the key pair that is used for signing. It is also + assumed that the reader understands that the public part of the key + pair is published in the DNSKEY Resource Record and that it is the + public part that is used in key exchanges. + +1.2. Time Definitions + + In this document, we will be using a number of time-related terms. + The following definitions apply: + + o "Signature validity period" The period that a signature is valid. + It starts at the time specified in the signature inception field + of the RRSIG RR and ends at the time specified in the expiration + field of the RRSIG RR. + + o "Signature publication period" Time after which a signature (made + with a specific key) is replaced with a new signature (made with + the same key). This replacement takes place by publishing the + relevant RRSIG in the master zone file. After one stops + publishing an RRSIG in a zone, it may take a while before the + RRSIG has expired from caches and has actually been removed from + the DNS. + + o "Key effectivity period" The period during which a key pair is + expected to be effective. This period is defined as the time + between the first inception time stamp and the last expiration + date of any signature made with this key, regardless of any + discontinuity in the use of the key. The key effectivity period + can span multiple signature validity periods. + + o "Maximum/Minimum Zone Time to Live (TTL)" The maximum or minimum + value of the TTLs from the complete set of RRs in a zone. Note + that the minimum TTL is not the same as the MINIMUM field in the + SOA RR. See [9] for more information. + +2. Keeping the Chain of Trust Intact + + Maintaining a valid chain of trust is important because broken chains + of trust will result in data being marked as Bogus (as defined in [3] + Section 5), which may cause entire (sub)domains to become invisible + to verifying clients. The administrators of secured zones have to + + + +Kolkman & Gieben Expires September 8, 2009 [Page 5] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + realize that their zone is, to verifying clients, part of a chain of + trust. + + As mentioned in the introduction, the procedures herein are intended + to ensure that maintenance of zones, such as re-signing or key + rollovers, will be transparent to the verifying clients on the + Internet. + + Administrators of secured zones will have to keep in mind that data + published on an authoritative primary server will not be immediately + seen by verifying clients; it may take some time for the data to be + transferred to other secondary authoritative nameservers and clients + may be fetching data from caching non-authoritative servers. In this + light, note that the time for a zone transfer from master to slave is + negligible when using NOTIFY [8] and incremental transfer (IXFR) [7]. + It increases when full zone transfers (AXFR) are used in combination + with NOTIFY. It increases even more if you rely on full zone + transfers based on only the SOA timing parameters for refresh. + + For the verifying clients, it is important that data from secured + zones can be used to build chains of trust regardless of whether the + data came directly from an authoritative server, a caching + nameserver, or some middle box. Only by carefully using the + available timing parameters can a zone administrator ensure that the + data necessary for verification can be obtained. + + The responsibility for maintaining the chain of trust is shared by + administrators of secured zones in the chain of trust. This is most + obvious in the case of a 'key compromise' when a trade-off between + maintaining a valid chain of trust and replacing the compromised keys + as soon as possible must be made. Then zone administrators will have + to make a trade-off, between keeping the chain of trust intact -- + thereby allowing for attacks with the compromised key -- or + deliberately breaking the chain of trust and making secured + subdomains invisible to security-aware resolvers. Also see + Section 4.3. + +3. Keys Generation and Storage + + This section describes a number of considerations with respect to the + security of keys. It deals with the generation, effectivity period, + size, and storage of private keys. + +3.1. Zone and Key Signing Keys + + The DNSSEC validation protocol does not distinguish between different + types of DNSKEYs. All DNSKEYs can be used during the validation. In + practice, operators use Key Signing and Zone Signing Keys and use the + + + +Kolkman & Gieben Expires September 8, 2009 [Page 6] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + so-called Secure Entry Point (SEP) [5] flag to distinguish between + them during operations. The dynamics and considerations are + discussed below. + + To make zone re-signing and key rollover procedures easier to + implement, it is possible to use one or more keys as Key Signing Keys + (KSKs). These keys will only sign the apex DNSKEY RRSet in a zone. + Other keys can be used to sign all the RRSets in a zone and are + referred to as Zone Signing Keys (ZSKs). In this document, we assume + that KSKs are the subset of keys that are used for key exchanges with + the parent and potentially for configuration as trusted anchors -- + the SEP keys. In this document, we assume a one-to-one mapping + between KSK and SEP keys and we assume the SEP flag to be set on all + KSKs. + +3.1.1. Motivations for the KSK and ZSK Separation + + Differentiating between the KSK and ZSK functions has several + advantages: + + o No parent/child interaction is required when ZSKs are updated. + + o [OK: Bullet removed, strawman Paul Hoffman] + + o As the KSK is only used to sign a key set, which is most probably + updated less frequently than other data in the zone, it can be + stored separately from and in a safer location than the ZSK. + + o A KSK can have a longer key effectivity period. + + For almost any method of key management and zone signing, the KSK is + used less frequently than the ZSK. Once a key set is signed with the + KSK, all the keys in the key set can be used as ZSKs. If a ZSK is + compromised, it can be simply dropped from the key set. The new key + set is then re-signed with the KSK. + + Given the assumption that for KSKs the SEP flag is set, the KSK can + be distinguished from a ZSK by examining the flag field in the DNSKEY + RR. If the flag field is an odd number it is a KSK. If it is an + even number it is a ZSK. + + The Zone Signing Key can be used to sign all the data in a zone on a + regular basis. When a Zone Signing Key is to be rolled, no + interaction with the parent is needed. This allows for signature + validity periods on the order of days. + + The Key Signing Key is only to be used to sign the DNSKEY RRs in a + zone. If a Key Signing Key is to be rolled over, there will be + + + +Kolkman & Gieben Expires September 8, 2009 [Page 7] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + interactions with parties other than the zone administrator. If + there is a parent zone, these can include the registry of the parent + zone or administrators of verifying resolvers that have the + particular key configured as secure entry points. If this is a trust + anchor, everyone relying on the trust anchor needs to roll over to + the new key. The latter may be subject to stability costs if + automated trust-anchor rollover mechanisms (such as e.g. RFC5011 + [18]) are not in place. Hence, the key effectivity period of these + keys can and should be made much longer. + + There are two schools of thought on rolling a KSK that is not a trust + anchor [OK: One can never be sure a KSK is _not_ a trust anchor]: + + o It should be done regularly (possibly every few months) so that a + key rollover remains an operational routine. + + o It should only be done when it is known or strongly suspected that + the key has been compromised in order to reduce the stability + issues on systems where the rollover does not happen cleanly. + + There is no widespread agreement on which of these two schools of + thought is better for different deployments of DNSSEC. There is a + stability cost every time a non-anchor KSK is rolled over, but it is + possibly low if the communication between the child and the parent is + good. On the other hand, the only completely effective way to tell + if the communication is good is to test it periodically. Thus, + rolling a KSK with a parent is only done for two reasons: to test and + verify the rolling system to prepare for an emergency, and in the + case of an actual emergency. + + [OK: The paragraph below is a straw-man by Paul Hoffman] Because of + the difficulty of getting all users of a trust anchor to replace an + old trust anchor with a new one, a KSK that is a trust anchor should + never be rolled unless it is known or strongly suspected that the key + has been compromised. + + [OK: This is an alternative straw-man by Olaf Kolkman] The same + operational concerns apply to the rollover of KSKs that are used as + trust-anchors. Since the administrator of a zone can not be certain + that the zone's KSK is in use as a trust-anchor she will have to + assume that a rollover will cause a stability cost for the users that + did configure her key as a trust-anchor. Those costs can be + minimized by automating the rollover RFC5011 [18] and by rolling the + key regularly, and advertising such, so that the operators of + recursive nameservers will put the appropriate mechanism in place to + deal with these stability costs, or, in other words, budget for these + costs instead of incuring them unexpectedly. + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 8] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + +3.1.2. Differentiation for 'High-Level' Zones + + In an earlier version of this document we made a differentiation + between KSKs used for zones that are high in the DNS hierarchy versus + KSKs used for zones low in that hierarchy. We have come to realize + that there are other considerations that argue such differentiation + does not need to be made. + + Longer keys are not useful because the crypto guidance is that + everyone should use keys that no one can break. Also, it is + impossible to judge which zones are more or less valuable to an + attacker. An attack can only be used if the compromise is unnoticed + and the attacker can act as an man-in-the-middle attack (MITM) in an + unnoticed way. If .example is compromised and the attacker forges + answers for somebank.example and sends them out as an MITM, when the + attack is discovered it will be simple to prove that .example has + been compromised and the KSK will be rolled. Defining a long-term + successful attack is difficult for keys at any level. + +3.2. Key Generation + + Careful generation of all keys is a sometimes overlooked but + absolutely essential element in any cryptographically secure system. + The strongest algorithms used with the longest keys are still of no + use if an adversary can guess enough to lower the size of the likely + key space so that it can be exhaustively searched. Technical + suggestions for the generation of random keys will be found in RFC + 4086 [14] and NIST SP 800-900 [20]. One should carefully assess if + the random number generator used during key generation adheres to + these suggestions. + + Keys with a long effectivity period are particularly sensitive as + they will represent a more valuable target and be subject to attack + for a longer time than short-period keys. It is strongly recommended + that long-term key generation occur off-line in a manner isolated + from the network via an air gap or, at a minimum, high-level secure + hardware. + +3.3. Key Effectivity Period + + From a purely operational perspective, a reasonable key effectivity + period for KSKs that have a parent zone is 13 months, with the intent + to replace them after 12 months. An intended key effectivity period + of a month is reasonable for Zone Signing Keys. This annual rollover + gives operational practice to rollovers. + + Ignoring the operational perspective, a reasonable effectivity period + for KSKs that have a parent zone is of the order of 2 decades or + + + +Kolkman & Gieben Expires September 8, 2009 [Page 9] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + longer. That is, if one does not plan to test the rollover + procedure, the key should be effective essentially forever, and then + only rolled over in case of emergency. + + The "operational habit" argument also applies to trust anchor + reconfiguration. If a short key effectivity period is used and the + trust anchor configuration has to be revisited on a regular basis, + the odds that the configuration tends to be forgotten is smaller. + The trade-off is against a system that is so dynamic that + administrators of the validating clients will not be able to follow + the modifications.Note that if a trust anchor replacement is done + incorrectly, the entire zone that the trust anchor covers will become + bogus until the trust anchor is corrected. + + Key effectivity periods can be made very short, as in a few minutes. + But when replacing keys one has to take the considerations from + Section 4.1 and Section 4.2 into account. + +3.4. Key Algorithm + + There are currently two types of signature algorithms that can be + used in DNSSEC: RSA and DSA. Both are fully specified in many + freely-available documents, and both are widely considered to be + patent-free. The creation of signatures wiht RSA and DSA takes + roughly the same time, but DSA is about ten times slower for + signature verification. + + We suggest the use of either RSA/SHA-1 or RSA/SHA-256 as the + preferred signature algorithms. Both have advantages and + disadvantages. RSA/SHA-1 has been deployed for many years, while + RSA/SHA-256 has only begun to be deployed. On the other hand, it is + expected that if effective attacks on either algorithm appeark, they + will appear for RSA/SHA-1 first. RSA/MD5 should not be considered + for use because RSA/MD5 will very likely be the first common-use + signature algorithm to have an effective attack. + + At the time of publication, it is known that the SHA-1 hash has + cryptanalysis issues. There is work in progress on addressing these + issues. We recommend the use of public key algorithms based on + hashes stronger than SHA-1 (e.g., SHA-256), as soon as these + algorithms are available in protocol specifications (see [21] and + [22]) and implementations. + +3.5. Key Sizes + + DNSSEC signing keys should be large enough to avoid all know + cryptographic attacks during the lifetime of the key. To date, + despite huge efforts, no one has broken a regular 1024-bit key; in + + + +Kolkman & Gieben Expires September 8, 2009 [Page 10] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + fact, the best completed attack is estimated to be the equivalent of + a 700-bit key. An attacker breaking a 1024-bit signing key would + need expend phenominal amounts of networked computing power in a way + that would not be detected in order to break a single key. Because + of this, it is estimated that most zones can safely use 1024-bit keys + for at least the next ten years. A 1024-bit asymmetric key has an + approximate equivalent strength of a symmetric 80-bit key. + + Keys that are used as extremely high value trust anchors, or non- + anchor keys that may be difficult to roll over, may want to use + lengths longer than 1024 bits. Typically, the next larger key size + used is 2048 bits, which have the approximate equivalent strength of + a symmetric 112-bit key. In a standard CPU, it takes about four + times as long to sign or verify with a 2048-bit key as it does with a + 1024-bit key. + + Another way to decide on the size of key to use is to remember that + the phenominal effort it takes for an attacker to break a 1024-bit + key is the same regardless of how the key is used. If an attacker + has the capability of breaking a 1024-bit DNSSEC key, he also has the + capability of breaking one of the many 1024-bit TLS trust anchor keys + that are installed with web browsers. If the value of a DNSSEC key + is lower to the attacker than the value of a TLS trust anchor, the + attacker will use the resources to attack the TLS trust anchor. + + It is possible that there is a unexpected improvement in the ability + for attackers to beak keys, and that such an attack would make it + feasible to break 1024-bit keys but not 2048-bit keys. If such an + improvement happens, it is likely that there will be a huge amount of + publicity, particularly because of the large number of 1024-bit TLS + trust anchors build into popular web browsers. At that time, all + 1024-bit keys (both ones with parent zones and ones that are trust + anchors) can be rolled over and replaced with larger keys. + + Earlier documents (including the previous version of this document) + urged the use of longer keys in situations where a particular key was + "heavily used". That advice may have been true 15 years ago, but it + is not true today when using RSA or DSA algorithms and keys of 1024 + bits or higher. + +3.6. Private Key Storage + + It is recommended that, where possible, zone private keys and the + zone file master copy that is to be signed be kept and used in off- + line, non-network-connected, physically secure machines only. + Periodically, an application can be run to add authentication to a + zone by adding RRSIG and NSEC RRs. Then the augmented file can be + transferred. + + + +Kolkman & Gieben Expires September 8, 2009 [Page 11] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + When relying on dynamic update to manage a signed zone [11], be aware + that at least one private key of the zone will have to reside on the + master server. This key is only as secure as the amount of exposure + the server receives to unknown clients and the security of the host. + Although not mandatory, one could administer the DNS in the following + way. The master that processes the dynamic updates is unavailable + from generic hosts on the Internet, it is not listed in the NS RRSet, + although its name appears in the SOA RRs MNAME field. The + nameservers in the NS RRSet are able to receive zone updates through + NOTIFY, IXFR, AXFR, or an out-of-band distribution mechanism. This + approach is known as the "hidden master" setup. + + The ideal situation is to have a one-way information flow to the + network to avoid the possibility of tampering from the network. + Keeping the zone master file on-line on the network and simply + cycling it through an off-line signer does not do this. The on-line + version could still be tampered with if the host it resides on is + compromised. For maximum security, the master copy of the zone file + should be off-net and should not be updated based on an unsecured + network mediated communication. + + In general, keeping a zone file off-line will not be practical and + the machines on which zone files are maintained will be connected to + a network. Operators are advised to take security measures to shield + unauthorized access to the master copy. + + For dynamically updated secured zones [11], both the master copy and + the private key that is used to update signatures on updated RRs will + need to be on-line. + +4. Signature Generation, Key Rollover, and Related Policies + +4.1. Time in DNSSEC + + Without DNSSEC, all times in the DNS are relative. The SOA fields + REFRESH, RETRY, and EXPIRATION are timers used to determine the time + elapsed after a slave server synchronized with a master server. The + Time to Live (TTL) value and the SOA RR minimum TTL parameter [9] are + used to determine how long a forwarder should cache data after it has + been fetched from an authoritative server. By using a signature + validity period, DNSSEC introduces the notion of an absolute time in + the DNS. Signatures in DNSSEC have an expiration date after which + the signature is marked as invalid and the signed data is to be + considered Bogus. + + + + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 12] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + +4.1.1. Time Considerations + + Because of the expiration of signatures, one should consider the + following: + + o We suggest the Maximum Zone TTL of your zone data to be a fraction + of your signature validity period. + + If the TTL would be of similar order as the signature validity + period, then all RRSets fetched during the validity period + would be cached until the signature expiration time. Section + 7.1 of [3] suggests that "the resolver may use the time + remaining before expiration of the signature validity period of + a signed RRSet as an upper bound for the TTL". As a result, + query load on authoritative servers would peak at signature + expiration time, as this is also the time at which records + simultaneously expire from caches. + + To avoid query load peaks, we suggest the TTL on all the RRs in + your zone to be at least a few times smaller than your + signature validity period. + + o We suggest the signature publication period to end at least one + Maximum Zone TTL duration before the end of the signature validity + period. + + Re-signing a zone shortly before the end of the signature + validity period may cause simultaneous expiration of data from + caches. This in turn may lead to peaks in the load on + authoritative servers. + + o We suggest the Minimum Zone TTL to be long enough to both fetch + and verify all the RRs in the trust chain. In workshop + environments, it has been demonstrated [19] that a low TTL (under + 5 to 10 minutes) caused disruptions because of the following two + problems: + + 1. During validation, some data may expire before the + validation is complete. The validator should be able to keep + all data until it is completed. This applies to all RRs needed + to complete the chain of trust: DSes, DNSKEYs, RRSIGs, and the + final answers, i.e., the RRSet that is returned for the initial + query. + + 2. Frequent verification causes load on recursive nameservers. + Data at delegation points, DSes, DNSKEYs, and RRSIGs benefit + from caching. The TTL on those should be relatively long. + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 13] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + o Slave servers will need to be able to fetch newly signed zones + well before the RRSIGs in the zone served by the slave server pass + their signature expiration time. + + When a slave server is out of sync with its master and data in + a zone is signed by expired signatures, it may be better for + the slave server not to give out any answer. + + Normally, a slave server that is not able to contact a master + server for an extended period will expire a zone. When that + happens, the server will respond differently to queries for + that zone. Some servers issue SERVFAIL, whereas others turn + off the 'AA' bit in the answers. The time of expiration is set + in the SOA record and is relative to the last successful + refresh between the master and the slave servers. There exists + no coupling between the signature expiration of RRSIGs in the + zone and the expire parameter in the SOA. + + If the server serves a DNSSEC zone, then it may well happen + that the signatures expire well before the SOA expiration timer + counts down to zero. It is not possible to completely prevent + this from happening by tweaking the SOA parameters. + + However, the effects can be minimized where the SOA expiration + time is equal to or shorter than the signature validity period. + + The consequence of an authoritative server not being able to + update a zone, whilst that zone includes expired signatures, is + that non-secure resolvers will continue to be able to resolve + data served by the particular slave servers while security- + aware resolvers will experience problems because of answers + being marked as Bogus. + + We suggest the SOA expiration timer being approximately one + third or one fourth of the signature validity period. It will + allow problems with transfers from the master server to be + noticed before the actual signature times out. + + We also suggest that operators of nameservers that supply + secondary services develop 'watch dogs' to spot upcoming + signature expirations in zones they slave, and take appropriate + action. + + When determining the value for the expiration parameter one has + to take the following into account: What are the chances that + all my secondaries expire the zone? How quickly can I reach an + administrator of secondary servers to load a valid zone? These + questions are not DNSSEC specific but may influence the choice + + + +Kolkman & Gieben Expires September 8, 2009 [Page 14] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + of your signature validity intervals. + +4.2. Key Rollovers + + Regardless of whether a zone uses periodic key rollovers in order to + practice for emergencies, or only rolls over keys in an emergency, + key rollovers are a fact of life when using DNSSEC. Zone + administrators who are in the process of rolling their keys have to + take into account that data published in previous versions of their + zone still lives in caches. When deploying DNSSEC, this becomes an + important consideration; ignoring data that may be in caches may lead + to loss of service for clients. + + The most pressing example of this occurs when zone material signed + with an old key is being validated by a resolver that does not have + the old zone key cached. If the old key is no longer present in the + current zone, this validation fails, marking the data "Bogus". + Alternatively, an attempt could be made to validate data that is + signed with a new key against an old key that lives in a local cache, + also resulting in data being marked "Bogus". + +4.2.1. Zone Signing Key Rollovers + + For "Zone Signing Key rollovers", there are two ways to make sure + that during the rollover data still cached can be verified with the + new key sets or newly generated signatures can be verified with the + keys still in caches. One schema, described in Section 4.2.1.2, uses + double signatures; the other uses key pre-publication + (Section 4.2.1.1). The pros, cons, and recommendations are described + in Section 4.2.1.3. + +4.2.1.1. Pre-Publish Key Rollover + + This section shows how to perform a ZSK rollover without the need to + sign all the data in a zone twice -- the "pre-publish key rollover". + This method has advantages in the case of a key compromise. If the + old key is compromised, the new key has already been distributed in + the DNS. The zone administrator is then able to quickly switch to + the new key and remove the compromised key from the zone. Another + major advantage is that the zone size does not double, as is the case + with the double signature ZSK rollover. A small "how-to" for this + kind of rollover can be found in Appendix B. + + + + + + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 15] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + Pre-publish key rollover involves four stages as follows: + + ---------------------------------------------------------------- + initial new DNSKEY new RRSIGs DNSKEY removal + ---------------------------------------------------------------- + SOA0 SOA1 SOA2 SOA3 + RRSIG10(SOA0) RRSIG10(SOA1) RRSIG11(SOA2) RRSIG11(SOA3) + + DNSKEY1 DNSKEY1 DNSKEY1 DNSKEY1 + DNSKEY10 DNSKEY10 DNSKEY10 DNSKEY11 + DNSKEY11 DNSKEY11 + RRSIG1 (DNSKEY) RRSIG1 (DNSKEY) RRSIG1(DNSKEY) RRSIG1 (DNSKEY) + RRSIG10(DNSKEY) RRSIG10(DNSKEY) RRSIG11(DNSKEY) RRSIG11(DNSKEY) + ---------------------------------------------------------------- + + Pre-Publish Key Rollover + + initial: Initial version of the zone: DNSKEY 1 is the Key Signing + Key. DNSKEY 10 is used to sign all the data of the zone, the Zone + Signing Key. + + new DNSKEY: DNSKEY 11 is introduced into the key set. Note that no + signatures are generated with this key yet, but this does not + secure against brute force attacks on the public key. The minimum + duration of this pre-roll phase is the time it takes for the data + to propagate to the authoritative servers plus TTL value of the + key set. + + new RRSIGs: At the "new RRSIGs" stage (SOA serial 2), DNSKEY 11 is + used to sign the data in the zone exclusively (i.e., all the + signatures from DNSKEY 10 are removed from the zone). DNSKEY 10 + remains published in the key set. This way data that was loaded + into caches from version 1 of the zone can still be verified with + key sets fetched from version 2 of the zone. The minimum time + that the key set including DNSKEY 10 is to be published is the + time that it takes for zone data from the previous version of the + zone to expire from old caches, i.e., the time it takes for this + zone to propagate to all authoritative servers plus the Maximum + Zone TTL value of any of the data in the previous version of the + zone. + + DNSKEY removal: DNSKEY 10 is removed from the zone. The key set, + now only containing DNSKEY 1 and DNSKEY 11, is re-signed with the + DNSKEY 1. + + The above scheme can be simplified by always publishing the "future" + key immediately after the rollover. The scheme would look as follows + (we show two rollovers); the future key is introduced in "new DNSKEY" + + + +Kolkman & Gieben Expires September 8, 2009 [Page 16] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + as DNSKEY 12 and again a newer one, numbered 13, in "new DNSKEY + (II)": + + + initial new RRSIGs new DNSKEY + ----------------------------------------------------------------- + SOA0 SOA1 SOA2 + RRSIG10(SOA0) RRSIG11(SOA1) RRSIG11(SOA2) + + DNSKEY1 DNSKEY1 DNSKEY1 + DNSKEY10 DNSKEY10 DNSKEY11 + DNSKEY11 DNSKEY11 DNSKEY12 + RRSIG1(DNSKEY) RRSIG1 (DNSKEY) RRSIG1(DNSKEY) + RRSIG10(DNSKEY) RRSIG11(DNSKEY) RRSIG11(DNSKEY) + ---------------------------------------------------------------- + + ---------------------------------------------------------------- + new RRSIGs (II) new DNSKEY (II) + ---------------------------------------------------------------- + SOA3 SOA4 + RRSIG12(SOA3) RRSIG12(SOA4) + + DNSKEY1 DNSKEY1 + DNSKEY11 DNSKEY12 + DNSKEY12 DNSKEY13 + RRSIG1(DNSKEY) RRSIG1(DNSKEY) + RRSIG12(DNSKEY) RRSIG12(DNSKEY) + ---------------------------------------------------------------- + + Pre-Publish Key Rollover, Showing Two Rollovers + + Note that the key introduced in the "new DNSKEY" phase is not used + for production yet; the private key can thus be stored in a + physically secure manner and does not need to be 'fetched' every time + a zone needs to be signed. + +4.2.1.2. Double Signature Zone Signing Key Rollover + + This section shows how to perform a ZSK key rollover using the double + zone data signature scheme, aptly named "double signature rollover". + + During the "new DNSKEY" stage the new version of the zone file will + need to propagate to all authoritative servers and the data that + exists in (distant) caches will need to expire, requiring at least + the Maximum Zone TTL. + + + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 17] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + Double signature ZSK rollover involves three stages as follows: + + ---------------------------------------------------------------- + initial new DNSKEY DNSKEY removal + ---------------------------------------------------------------- + SOA0 SOA1 SOA2 + RRSIG10(SOA0) RRSIG10(SOA1) RRSIG11(SOA2) + RRSIG11(SOA1) + DNSKEY1 DNSKEY1 DNSKEY1 + DNSKEY10 DNSKEY10 DNSKEY11 + DNSKEY11 + RRSIG1(DNSKEY) RRSIG1(DNSKEY) RRSIG1(DNSKEY) + RRSIG10(DNSKEY) RRSIG10(DNSKEY) RRSIG11(DNSKEY) + RRSIG11(DNSKEY) + ---------------------------------------------------------------- + + Double Signature Zone Signing Key Rollover + + initial: Initial Version of the zone: DNSKEY 1 is the Key Signing + Key. DNSKEY 10 is used to sign all the data of the zone, the Zone + Signing Key. + + new DNSKEY: At the "New DNSKEY" stage (SOA serial 1) DNSKEY 11 is + introduced into the key set and all the data in the zone is signed + with DNSKEY 10 and DNSKEY 11. The rollover period will need to + continue until all data from version 0 of the zone has expired + from remote caches. This will take at least the Maximum Zone TTL + of version 0 of the zone. + + DNSKEY removal: DNSKEY 10 is removed from the zone. All the + signatures from DNSKEY 10 are removed from the zone. The key set, + now only containing DNSKEY 11, is re-signed with DNSKEY 1. + + At every instance, RRSIGs from the previous version of the zone can + be verified with the DNSKEY RRSet from the current version and the + other way around. The data from the current version can be verified + with the data from the previous version of the zone. The duration of + the "new DNSKEY" phase and the period between rollovers should be at + least the Maximum Zone TTL. + + Making sure that the "new DNSKEY" phase lasts until the signature + expiration time of the data in the initial version of the zone is + recommended. This way all caches are cleared of the old signatures. + However, this duration could be considerably longer than the Maximum + Zone TTL, making the rollover a lengthy procedure. + + Note that in this example we assumed that the zone was not modified + during the rollover. New data can be introduced in the zone as long + + + +Kolkman & Gieben Expires September 8, 2009 [Page 18] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + as it is signed with both keys. + +4.2.1.3. Pros and Cons of the Schemes + + Pre-publish key rollover: This rollover does not involve signing the + zone data twice. Instead, before the actual rollover, the new key + is published in the key set and thus is available for + cryptanalysis attacks. A small disadvantage is that this process + requires four steps. Also the pre-publish scheme involves more + parental work when used for KSK rollovers as explained in + Section 4.2.3. + + Double signature ZSK rollover: The drawback of this signing scheme + is that during the rollover the number of signatures in your zone + doubles; this may be prohibitive if you have very big zones. An + advantage is that it only requires three steps. + +4.2.2. Key Signing Key Rollovers + + For the rollover of a Key Signing Key, the same considerations as for + the rollover of a Zone Signing Key apply. However, we can use a + double signature scheme to guarantee that old data (only the apex key + set) in caches can be verified with a new key set and vice versa. + Since only the key set is signed with a KSK, zone size considerations + do not apply. + + + + + + + + + + + + + + + + + + + + + + + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 19] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + -------------------------------------------------------------------- + initial new DNSKEY DS change DNSKEY removal + -------------------------------------------------------------------- + Parent: + SOA0 --------> SOA1 --------> + RRSIGpar(SOA0) --------> RRSIGpar(SOA1) --------> + DS1 --------> DS2 --------> + RRSIGpar(DS) --------> RRSIGpar(DS) --------> + + + Child: + SOA0 SOA1 --------> SOA2 + RRSIG10(SOA0) RRSIG10(SOA1) --------> RRSIG10(SOA2) + --------> + DNSKEY1 DNSKEY1 --------> DNSKEY2 + DNSKEY2 --------> + DNSKEY10 DNSKEY10 --------> DNSKEY10 + RRSIG1 (DNSKEY) RRSIG1 (DNSKEY) --------> RRSIG2 (DNSKEY) + RRSIG2 (DNSKEY) --------> + RRSIG10(DNSKEY) RRSIG10(DNSKEY) --------> RRSIG10(DNSKEY) + -------------------------------------------------------------------- + + Stages of Deployment for a Double Signature Key Signing Key Rollover + + initial: Initial version of the zone. The parental DS points to + DNSKEY1. Before the rollover starts, the child will have to + verify what the TTL is of the DS RR that points to DNSKEY1 -- it + is needed during the rollover and we refer to the value as TTL_DS. + + new DNSKEY: During the "new DNSKEY" phase, the zone administrator + generates a second KSK, DNSKEY2. The key is provided to the + parent, and the child will have to wait until a new DS RR has been + generated that points to DNSKEY2. After that DS RR has been + published on all servers authoritative for the parent's zone, the + zone administrator has to wait at least TTL_DS to make sure that + the old DS RR has expired from caches. + + DS change: The parent replaces DS1 with DS2. + + DNSKEY removal: DNSKEY1 has been removed. + + The scenario above puts the responsibility for maintaining a valid + chain of trust with the child. It also is based on the premise that + the parent only has one DS RR (per algorithm) per zone. An + alternative mechanism has been considered. Using an established + trust relation, the interaction can be performed in-band, and the + removal of the keys by the child can possibly be signaled by the + parent. In this mechanism, there are periods where there are two DS + + + +Kolkman & Gieben Expires September 8, 2009 [Page 20] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + RRs at the parent. Since at the moment of writing the protocol for + this interaction has not been developed, further discussion is out of + scope for this document. + +4.2.3. Difference Between ZSK and KSK Rollovers + + Note that KSK rollovers and ZSK rollovers are different in the sense + that a KSK rollover requires interaction with the parent (and + possibly replacing of trust anchors) and the ensuing delay while + waiting for it. + + A zone key rollover can be handled in two different ways: pre-publish + (Section 4.2.1.1) and double signature (Section 4.2.1.2). + + As the KSK is used to validate the key set and because the KSK is not + changed during a ZSK rollover, a cache is able to validate the new + key set of the zone. The pre-publish method would also work for a + KSK rollover. The records that are to be pre-published are the + parental DS RRs. The pre-publish method has some drawbacks for KSKs. + We first describe the rollover scheme and then indicate these + drawbacks. + + + -------------------------------------------------------------------- + initial new DS new DNSKEY DS/DNSKEY removal + -------------------------------------------------------------------- + Parent: + SOA0 SOA1 --------> SOA2 + RRSIGpar(SOA0) RRSIGpar(SOA1) --------> RRSIGpar(SOA2) + DS1 DS1 --------> DS2 + DS2 --------> + RRSIGpar(DS) RRSIGpar(DS) --------> RRSIGpar(DS) + + Child: + SOA0 --------> SOA1 SOA1 + RRSIG10(SOA0) --------> RRSIG10(SOA1) RRSIG10(SOA1) + --------> + DNSKEY1 --------> DNSKEY2 DNSKEY2 + --------> + DNSKEY10 --------> DNSKEY10 DNSKEY10 + RRSIG1 (DNSKEY) --------> RRSIG2(DNSKEY) RRSIG2 (DNSKEY) + RRSIG10(DNSKEY) --------> RRSIG10(DNSKEY) RRSIG10(DNSKEY) + -------------------------------------------------------------------- + + Stages of Deployment for a Pre-Publish Key Signing Key Rollover + + When the child zone wants to roll, it notifies the parent during the + "new DS" phase and submits the new key (or the corresponding DS) to + + + +Kolkman & Gieben Expires September 8, 2009 [Page 21] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + the parent. The parent publishes DS1 and DS2, pointing to DNSKEY1 + and DNSKEY2, respectively. During the rollover ("new DNSKEY" phase), + which can take place as soon as the new DS set propagated through the + DNS, the child replaces DNSKEY1 with DNSKEY2. Immediately after that + ("DS/DNSKEY removal" phase), it can notify the parent that the old DS + record can be deleted. + + The drawbacks of this scheme are that during the "new DS" phase the + parent cannot verify the match between the DS2 RR and DNSKEY2 using + the DNS -- as DNSKEY2 is not yet published. Besides, we introduce a + "security lame" key (see Section 4.4.3). Finally, the child-parent + interaction consists of two steps. The "double signature" method + only needs one interaction. + +4.2.4. Key algorithm rollover + + [OK: The txt of this section is a strawman for the issue in: http:// + www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/Key_algorithm_roll + ] + + A special class of keyrollover is the rollover of key algorithms + (either adding a new algorithm, removing an old algorithm, or both), + additional steps are needed to retain integrity during the rollover. + + Because of the algorithm downgrade protection in RFC4035 section 2.2, + you may not have a key of an algorithm for which you do not have + signatures. + + When adding a new algorithm, the signatures should be added first. + After the TTL has expired, and caches have dropped the old data + covered by those signatures, the DNSKEY with the new algorithm can be + added. When removing an old algorithm, the DNSKEY should be removed + first. + + To do both, the following steps can be used. For simplicity, we use + a zone that is only signed by one zone signing key. + + + + + + + + + + + + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 22] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + ---------------------------------------------------------------- + 1 Initial 2 New RRSIGS 3 New DNSKEY + ---------------------------------------------------------------- + SOA0 SOA1 SOA2 + RRSIG1(SOA0) RRSIG1(SOA1) RRSIG1(SOA2) + RRSIG2(SOA1) RRSIG2(SOA2) + + DNSKEY1 DNSKEY1 DNSKEY1 + RRSIG1(DNSKEY) RRSIG1(DNSKEY) DNSKEY2 + RRSIG2(DNSKEY) RRSIG1(DNSKEY) + RRSIG2(DNSKEY) + ---------------------------------------------------------------- + 4 Remove DNSKEY 5 Remove RRSIGS + ---------------------------------------------------------------- + SOA3 SOA4 + RRSIG1(SOA3) RRSIG2(SOA4) + RRSIG2(SOA3) + + DNSKEY2 DNSKEY2 + RRSIG1(DNSKEY) RRSIG2(DNSKEY) + RRSIG2(DNSKEY) + ---------------------------------------------------------------- + + Stages of Deployment during an Algorithm Rollover. + + In step 2, the signatures for the new key are added, but the key + itself is not. While in theory, the signatures of the keyset should + always be synchronized with the keyset itself, it can be possible + that RRSIGS are requested separately, so it might be prudent to also + sign the DNSKEY set with the new signature. + + After the cache data has expired, the new key can be added to the + zone, as done in step 3. + + The next step is to remove the old algorithm. This time the key + needs to be removed first, before removing the signatures. The key + is removed in step 4, and after the cache data has expired, the + signatures can be removed in step 5. + + The above steps ensure that during the rollover to a new algorithm, + the integrity of the zone is never broken. + +4.2.5. Automated Key Rollovers + + As keys must be renewed periodically, there is some motivation to + automate the rollover process. Consider the following: + + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 23] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + o ZSK rollovers are easy to automate as only the child zone is + involved. + + o A KSK rollover needs interaction between parent and child. Data + exchange is needed to provide the new keys to the parent; + consequently, this data must be authenticated and integrity must + be guaranteed in order to avoid attacks on the rollover. + +4.3. Planning for Emergency Key Rollover + + This section deals with preparation for a possible key compromise. + Our advice is to have a documented procedure ready for when a key + compromise is suspected or confirmed. + + When the private material of one of your keys is compromised it can + be used for as long as a valid trust chain exists. A trust chain + remains intact for + + o as long as a signature over the compromised key in the trust chain + is valid, + + o as long as a parental DS RR (and signature) points to the + compromised key, + + o as long as the key is anchored in a resolver and is used as a + starting point for validation (this is generally the hardest to + update). + + While a trust chain to your compromised key exists, your namespace is + vulnerable to abuse by anyone who has obtained illegitimate + possession of the key. Zone operators have to make a trade-off if + the abuse of the compromised key is worse than having data in caches + that cannot be validated. If the zone operator chooses to break the + trust chain to the compromised key, data in caches signed with this + key cannot be validated. However, if the zone administrator chooses + to take the path of a regular rollover, the malicious key holder can + spoof data so that it appears to be valid. + +4.3.1. KSK Compromise + + A zone containing a DNSKEY RRSet with a compromised KSK is vulnerable + as long as the compromised KSK is configured as trust anchor or a + parental DS points to it. + + A compromised KSK can be used to sign the key set of an attacker's + zone. That zone could be used to poison the DNS. + + Therefore, when the KSK has been compromised, the trust anchor or the + + + +Kolkman & Gieben Expires September 8, 2009 [Page 24] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + parental DS should be replaced as soon as possible. It is local + policy whether to break the trust chain during the emergency + rollover. The trust chain would be broken when the compromised KSK + is removed from the child's zone while the parent still has a DS + pointing to the compromised KSK (the assumption is that there is only + one DS at the parent. If there are multiple DSes this does not apply + -- however the chain of trust of this particular key is broken). + + Note that an attacker's zone still uses the compromised KSK and the + presence of a parental DS would cause the data in this zone to appear + as valid. Removing the compromised key would cause the attacker's + zone to appear as valid and the child's zone as Bogus. Therefore, we + advise not to remove the KSK before the parent has a DS to a new KSK + in place. + +4.3.1.1. Keeping the Chain of Trust Intact + + If we follow this advice, the timing of the replacement of the KSK is + somewhat critical. The goal is to remove the compromised KSK as soon + as the new DS RR is available at the parent. And also make sure that + the signature made with a new KSK over the key set with the + compromised KSK in it expires just after the new DS appears at the + parent, thus removing the old cruft in one swoop. + + The procedure is as follows: + + 1. Introduce a new KSK into the key set, keep the compromised KSK in + the key set. + + 2. Sign the key set, with a short validity period. The validity + period should expire shortly after the DS is expected to appear + in the parent and the old DSes have expired from caches. + + 3. Upload the DS for this new key to the parent. + + 4. Follow the procedure of the regular KSK rollover: Wait for the DS + to appear in the authoritative servers and then wait as long as + the TTL of the old DS RRs. If necessary re-sign the DNSKEY RRSet + and modify/extend the expiration time. + + 5. Remove the compromised DNSKEY RR from the zone and re-sign the + key set using your "normal" validity interval. + + An additional danger of a key compromise is that the compromised key + could be used to facilitate a legitimate DNSKEY/DS rollover and/or + nameserver changes at the parent. When that happens, the domain may + be in dispute. An authenticated out-of-band and secure notify + mechanism to contact a parent is needed in this case. + + + +Kolkman & Gieben Expires September 8, 2009 [Page 25] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + Note that this is only a problem when the DNSKEY and or DS records + are used for authentication at the parent. + +4.3.1.2. Breaking the Chain of Trust + + There are two methods to break the chain of trust. The first method + causes the child zone to appear 'Bogus' to validating resolvers. The + other causes the child zone to appear 'insecure'. These are + described below. + + In the method that causes the child zone to appear 'Bogus' to + validating resolvers, the child zone replaces the current KSK with a + new one and re-signs the key set. Next it sends the DS of the new + key to the parent. Only after the parent has placed the new DS in + the zone is the child's chain of trust repaired. + + An alternative method of breaking the chain of trust is by removing + the DS RRs from the parent zone altogether. As a result, the child + zone would become insecure. + +4.3.2. ZSK Compromise + + Primarily because there is no parental interaction required when a + ZSK is compromised, the situation is less severe than with a KSK + compromise. The zone must still be re-signed with a new ZSK as soon + as possible. As this is a local operation and requires no + communication between the parent and child, this can be achieved + fairly quickly. However, one has to take into account that just as + with a normal rollover the immediate disappearance of the old + compromised key may lead to verification problems. Also note that as + long as the RRSIG over the compromised ZSK is not expired the zone + may be still at risk. + +4.3.3. Compromises of Keys Anchored in Resolvers + + A key can also be pre-configured in resolvers. For instance, if + DNSSEC is successfully deployed the root key may be pre-configured in + most security aware resolvers. + + If trust-anchor keys are compromised, the resolvers using these keys + should be notified of this fact. Zone administrators may consider + setting up a mailing list to communicate the fact that a SEP key is + about to be rolled over. This communication will of course need to + be authenticated, e.g., by using digital signatures. + + End-users faced with the task of updating an anchored key should + always validate the new key. New keys should be authenticated out- + of-band, for example, through the use of an announcement website that + + + +Kolkman & Gieben Expires September 8, 2009 [Page 26] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + is secured using secure sockets (TLS) [23]. + +4.4. Parental Policies + +4.4.1. Initial Key Exchanges and Parental Policies Considerations + + The initial key exchange is always subject to the policies set by the + parent. When designing a key exchange policy one should take into + account that the authentication and authorization mechanisms used + during a key exchange should be as strong as the authentication and + authorization mechanisms used for the exchange of delegation + information between parent and child. That is, there is no implicit + need in DNSSEC to make the authentication process stronger than it + was in DNS. + + Using the DNS itself as the source for the actual DNSKEY material, + with an out-of-band check on the validity of the DNSKEY, has the + benefit that it reduces the chances of user error. A DNSKEY query + tool can make use of the SEP bit [5] to select the proper key from a + DNSSEC key set, thereby reducing the chance that the wrong DNSKEY is + sent. It can validate the self-signature over a key; thereby + verifying the ownership of the private key material. Fetching the + DNSKEY from the DNS ensures that the chain of trust remains intact + once the parent publishes the DS RR indicating the child is secure. + + Note: the out-of-band verification is still needed when the key + material is fetched via the DNS. The parent can never be sure + whether or not the DNSKEY RRs have been spoofed. + +4.4.2. Storing Keys or Hashes? + + When designing a registry system one should consider which of the + DNSKEYs and/or the corresponding DSes to store. Since a child zone + might wish to have a DS published using a message digest algorithm + not yet understood by the registry, the registry can't count on being + able to generate the DS record from a raw DNSKEY. Thus, we recommend + that registry systems at least support storing DS records. + + It may also be useful to store DNSKEYs, since having them may help + during troubleshooting and, as long as the child's chosen message + digest is supported, the overhead of generating DS records from them + is minimal. Having an out-of-band mechanism, such as a registry + directory (e.g., Whois), to find out which keys are used to generate + DS Resource Records for specific owners and/or zones may also help + with troubleshooting. + + The storage considerations also relate to the design of the customer + interface and the method by which data is transferred between + + + +Kolkman & Gieben Expires September 8, 2009 [Page 27] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + registrant and registry; Will the child zone administrator be able to + upload DS RRs with unknown hash algorithms or does the interface only + allow DNSKEYs? In the registry-registrar model, one can use the + DNSSEC extensions to the Extensible Provisioning Protocol (EPP) [15], + which allows transfer of DS RRs and optionally DNSKEY RRs. + +4.4.3. Security Lameness + + Security lameness is defined as what happens when a parent has a DS + RR pointing to a non-existing DNSKEY RR. When this happens, the + child's zone may be marked "Bogus" by verifying DNS clients. + + As part of a comprehensive delegation check, the parent could, at key + exchange time, verify that the child's key is actually configured in + the DNS. However, if a parent does not understand the hashing + algorithm used by child, the parental checks are limited to only + comparing the key id. + + Child zones should be very careful in removing DNSKEY material, + specifically SEP keys, for which a DS RR exists. + + Once a zone is "security lame", a fix (e.g., removing a DS RR) will + take time to propagate through the DNS. + +4.4.4. DS Signature Validity Period + + Since the DS can be replayed as long as it has a valid signature, a + short signature validity period over the DS minimizes the time a + child is vulnerable in the case of a compromise of the child's + KSK(s). A signature validity period that is too short introduces the + possibility that a zone is marked "Bogus" in case of a configuration + error in the signer. There may not be enough time to fix the + problems before signatures expire. Something as mundane as operator + unavailability during weekends shows the need for DS signature + validity periods longer than 2 days. We recommend an absolute + minimum for a DS signature validity period of a few days. + + The maximum signature validity period of the DS record depends on how + long child zones are willing to be vulnerable after a key compromise. + On the other hand, shortening the DS signature validity interval + increases the operational risk for the parent. Therefore, the parent + may have policy to use a signature validity interval that is + considerably longer than the child would hope for. + + A compromise between the operational constraints of the parent and + minimizing damage for the child may result in a DS signature validity + period somewhere between a week and months. + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 28] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + In addition to the signature validity period, which sets a lower + bound on the number of times the zone owner will need to sign the + zone data and which sets an upper bound to the time a child is + vulnerable after key compromise, there is the TTL value on the DS + RRs. Shortening the TTL means that the authoritative servers will + see more queries. But on the other hand, a short TTL lowers the + persistence of DS RRSets in caches thereby increasing the speed with + which updated DS RRSets propagate through the DNS. + +4.4.5. (Non) Cooperating Registrars + + [OK: this is a first strawman, and is intended to start the + discussion of the issue. By no means this is intended to be a final + text.] + + The parent-child relation is often described in terms of a (thin) + registry model. Where a registry maintains the parent zone, and the + registrant (the user of the child-domain name), deals with the + registry through an intermediary called a registrar. (See [12] for a + comprehensive definition). Registrants may out-source the + maintenance of their DNS system, including the maintenance of DNSSEC + key material, to the registrar or to another third party. The entity + that has control over the DNS zone and its keys may prevent the + registrant to make a timely move to a different registrar. [OK: I + use the term registrar below while it is the operator of the DNS zone + who is the actual culprit. For instance, the case also applies when + a registrant passes a zone to another registrant. Should I just use + "DNS Administrator"?] + + Suppose that the registrant wants to move from losing registrar A to + gaining registrar B. Let us first look what would happen in a + cooperative environment. The assumption is that registrar A will not + hand off any private key material to registrar B because that would + be a trivial case. + + In a cooperating environment one could proceed with a pre-publish ZSK + rollover whereby registrar A pre-publishes the ZSK of registrar B, + combined with a double signature KSK rollover where the two + registrars exchange public keys and independently generate a + signature over the keysets that they combine and both publish in the + zone. + + In the non-cooperative case matters are more complicated. The + loosing registrar A may not cooperate and leave the data in the DNS + as is. In the extreme case registrar A may become obstructive and + publish a DNSKEY RR with a high TTL and corresponding signature + validity so that registrar A's DNSKEY, would end up in caches for, in + theory, tens of years. + + + +Kolkman & Gieben Expires September 8, 2009 [Page 29] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + The problem arises when a validator tries to validate with A's key + and there is no signature material produced with Registrars A + available in the delegation path after redelegation from registrar A + to registrar B has taken place. One could imagine a rollover + scenario where registrar B pulls all RRSIGs created by registar A and + publishes those in conjunction with its own signatures, but that + would not allow any changes in the zone content. Since a + redelegation took place the NS RRset has -- per definition-- changed + so such rollover scenario will not work. Besides if zone transfers + are not allowed by A and NSEC3 is deployed in the A's zone then + registrar B will not have certainty that all of A's RRSIGs are + transfered. + + The only viable option for the registrant is to publish its zone + unsigned and ask the registry to remove the DS pointing to registrar + A for as long as the DNSKEY of registrar A, or any of the signatures + produced by registrar A are likely to appear in caches, which as + mentioned above could in theory be for tens of years. [OK: Some + implementations limit the time data is cached. Although that is not + a protocol requirement (and may even be considered a protocol + violation) it seems that that practice may limit the impact of this + problem, is that worth mentioning?] + + [OK: This is really the point that I'm trying to make, is the above + text needed?] There is no operational methodology to work around + this business issue and proper contractual relations ships between + registrants and their registrars seem to be the only solution to cope + with these problems. + +5. Security Considerations + + DNSSEC adds data integrity to the DNS. This document tries to assess + the operational considerations to maintain a stable and secure DNSSEC + service. Not taking into account the 'data propagation' properties + in the DNS will cause validation failures and may make secured zones + unavailable to security-aware resolvers. + +6. IANA considerations + + There are no IANA considerations with respect to this document + +7. Acknowledgments + + Most of the text of this document is copied from RFC4641 [16] people + involved in that work were in random order: Rip Loomis, Olafur + Gudmundsson, Wesley Griffin, Michael Richardson, Scott Rose, Rick van + Rein, Tim McGinnis, Gilles Guette Olivier Courtay, Sam Weiler, Jelte + Jansen, Niall O'Reilly, Holger Zuleger, Ed Lewis, Hilarie Orman, + + + +Kolkman & Gieben Expires September 8, 2009 [Page 30] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + Marcos Sanz, Peter Koch, Mike StJohns, Emmar Bretherick, Adrian + Bedford, and Lindy Foster, G. Guette, and O. Courtay. + + For this version of the document we would like to acknowldge: + + o Paul Hoffman for his contribution on the choice of cryptographic + paramenters and addressing some of the trust anchor issues. + + o Jelte Jansen provided the text in Section 4.2.4 + +8. References + +8.1. Normative References + + [1] Mockapetris, P., "Domain names - concepts and facilities", + STD 13, RFC 1034, November 1987. + + [2] Mockapetris, P., "Domain names - implementation and + specification", STD 13, RFC 1035, November 1987. + + [3] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, + "DNS Security Introduction and Requirements", RFC 4033, + March 2005. + + [4] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, + "Resource Records for the DNS Security Extensions", RFC 4034, + March 2005. + + [5] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, + "Protocol Modifications for the DNS Security Extensions", + RFC 4035, March 2005. + +8.2. Informative References + + [6] Bradner, S., "Key words for use in RFCs to Indicate Requirement + Levels", BCP 14, RFC 2119, March 1997. + + [7] Ohta, M., "Incremental Zone Transfer in DNS", RFC 1995, + August 1996. + + [8] Vixie, P., "A Mechanism for Prompt Notification of Zone Changes + (DNS NOTIFY)", RFC 1996, August 1996. + + [9] Andrews, M., "Negative Caching of DNS Queries (DNS NCACHE)", + RFC 2308, March 1998. + + [10] Eastlake, D., "DNS Security Operational Considerations", + RFC 2541, March 1999. + + + +Kolkman & Gieben Expires September 8, 2009 [Page 31] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + [11] Wellington, B., "Secure Domain Name System (DNS) Dynamic + Update", RFC 3007, November 2000. + + [12] Hollenbeck, S., "Generic Registry-Registrar Protocol + Requirements", RFC 3375, September 2002. + + [13] Orman, H. and P. Hoffman, "Determining Strengths For Public + Keys Used For Exchanging Symmetric Keys", BCP 86, RFC 3766, + April 2004. + + [14] Eastlake, D., Schiller, J., and S. Crocker, "Randomness + Requirements for Security", BCP 106, RFC 4086, June 2005. + + [15] Hollenbeck, S., "Domain Name System (DNS) Security Extensions + Mapping for the Extensible Provisioning Protocol (EPP)", + RFC 4310, December 2005. + + [16] Kolkman, O. and R. Gieben, "DNSSEC Operational Practices", + RFC 4641, September 2006. + + [17] Shirey, R., "Internet Security Glossary, Version 2", RFC 4949, + August 2007. + + [18] StJohns, M., "Automated Updates of DNS Security (DNSSEC) Trust + Anchors", RFC 5011, September 2007. + + [19] Rose, S., "NIST DNSSEC workshop notes", , June 2001. + + [20] Barker, E. and J. Kelsey, "Recommendation for Random Number + Generation Using Deterministic Random Bit Generators + (Revised)", Nist Special Publication 800-90, March 2007. + + [21] Jansen, J., "Use of SHA-2 algorithms with RSA in DNSKEY and + RRSIG Resource Records for DNSSEC", + draft-ietf-dnsext-dnssec-rsasha256-05 (work in progress), + July 2008. + + [22] Hardaker, W., "Use of SHA-256 in DNSSEC Delegation Signer (DS) + Resource Records (RRs)", RFC 4509, May 2006. + + [23] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J., and + T. Wright, "Transport Layer Security (TLS) Extensions", + RFC 4366, April 2006. + +Appendix A. Terminology + + In this document, there is some jargon used that is defined in other + documents. In most cases, we have not copied the text from the + + + +Kolkman & Gieben Expires September 8, 2009 [Page 32] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + documents defining the terms but have given a more elaborate + explanation of the meaning. Note that these explanations should not + be seen as authoritative. + + Anchored key: A DNSKEY configured in resolvers around the globe. + This key is hard to update, hence the term anchored. + + Bogus: Also see Section 5 of [3]. An RRSet in DNSSEC is marked + "Bogus" when a signature of an RRSet does not validate against a + DNSKEY. + + Key Signing Key or KSK: A Key Signing Key (KSK) is a key that is + used exclusively for signing the apex key set. The fact that a + key is a KSK is only relevant to the signing tool. + + Key size: The term 'key size' can be substituted by 'modulus size' + throughout the document. It is mathematically more correct to use + modulus size, but as this is a document directed at operators we + feel more at ease with the term key size. + + Private and public keys: DNSSEC secures the DNS through the use of + public key cryptography. Public key cryptography is based on the + existence of two (mathematically related) keys, a public key and a + private key. The public keys are published in the DNS by use of + the DNSKEY Resource Record (DNSKEY RR). Private keys should + remain private. + + Key rollover: A key rollover (also called key supercession in some + environments) is the act of replacing one key pair with another at + the end of a key effectivity period. + + Secure Entry Point (SEP) key: A KSK that has a parental DS record + pointing to it or is configured as a trust anchor. Although not + required by the protocol, we recommend that the SEP flag [5] is + set on these keys. + + Self-signature: This only applies to signatures over DNSKEYs; a + signature made with DNSKEY x, over DNSKEY x is called a self- + signature. Note: without further information, self-signatures + convey no trust. They are useful to check the authenticity of the + DNSKEY, i.e., they can be used as a hash. + + Singing the zone file: The term used for the event where an + administrator joyfully signs its zone file while producing melodic + sound patterns. + + + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 33] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + Signer: The system that has access to the private key material and + signs the Resource Record sets in a zone. A signer may be + configured to sign only parts of the zone, e.g., only those RRSets + for which existing signatures are about to expire. + + Zone Signing Key (ZSK): A key that is used for signing all data in a + zone (except, perhaps, the DNSKEY RRSet). The fact that a key is + a ZSK is only relevant to the signing tool. + + Zone administrator: The 'role' that is responsible for signing a + zone and publishing it on the primary authoritative server. + +Appendix B. Zone Signing Key Rollover How-To + + Using the pre-published signature scheme and the most conservative + method to assure oneself that data does not live in caches, here + follows the "how-to". + + Step 0: The preparation: Create two keys and publish both in your + key set. Mark one of the keys "active" and the other "published". + Use the "active" key for signing your zone data. Store the + private part of the "published" key, preferably off-line. The + protocol does not provide for attributes to mark a key as active + or published. This is something you have to do on your own, + through the use of a notebook or key management tool. + + Step 1: Determine expiration: At the beginning of the rollover make + a note of the highest expiration time of signatures in your zone + file created with the current key marked as active. Wait until + the expiration time marked in Step 1 has passed. + + Step 2: Then start using the key that was marked "published" to sign + your data (i.e., mark it "active"). Stop using the key that was + marked "active"; mark it "rolled". + + Step 3: It is safe to engage in a new rollover (Step 1) after at + least one signature validity period. + +Appendix C. Typographic Conventions + + The following typographic conventions are used in this document: + + Key notation: A key is denoted by DNSKEYx, where x is a number or an + identifier, x could be thought of as the key id. + + + + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 34] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + RRSet notations: RRs are only denoted by the type. All other + information -- owner, class, rdata, and TTL -- is left out. Thus: + "example.com 3600 IN A 192.0.2.1" is reduced to "A". RRSets are a + list of RRs. A example of this would be "A1, A2", specifying the + RRSet containing two "A" records. This could again be abbreviated + to just "A". + + Signature notation: Signatures are denoted as RRSIGx(RRSet), which + means that RRSet is signed with DNSKEYx. + + Zone representation: Using the above notation we have simplified the + representation of a signed zone by leaving out all unnecessary + details such as the names and by representing all data by "SOAx" + + SOA representation: SOAs are represented as SOAx, where x is the + serial number. + + Using this notation the following signed zone: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 35] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + example.net. 86400 IN SOA ns.example.net. bert.example.net. ( + 2006022100 ; serial + 86400 ; refresh ( 24 hours) + 7200 ; retry ( 2 hours) + 3600000 ; expire (1000 hours) + 28800 ) ; minimum ( 8 hours) + 86400 RRSIG SOA 5 2 86400 20130522213204 ( + 20130422213204 14 example.net. + cmL62SI6iAX46xGNQAdQ... ) + 86400 NS a.example.net. + 86400 NS b.example.net. + 86400 RRSIG NS 5 2 86400 20130507213204 ( + 20130407213204 14 example.net. + SO5epiJei19AjXoUpFnQ ... ) + 86400 DNSKEY 256 3 5 ( + EtRB9MP5/AvOuVO0I8XDxy0... ) ; id = 14 + 86400 DNSKEY 257 3 5 ( + gsPW/Yy19GzYIY+Gnr8HABU... ) ; id = 15 + 86400 RRSIG DNSKEY 5 2 86400 20130522213204 ( + 20130422213204 14 example.net. + J4zCe8QX4tXVGjV4e1r9... ) + 86400 RRSIG DNSKEY 5 2 86400 20130522213204 ( + 20130422213204 15 example.net. + keVDCOpsSeDReyV6O... ) + 86400 RRSIG NSEC 5 2 86400 20130507213204 ( + 20130407213204 14 example.net. + obj3HEp1GjnmhRjX... ) + a.example.net. 86400 IN TXT "A label" + 86400 RRSIG TXT 5 3 86400 20130507213204 ( + 20130407213204 14 example.net. + IkDMlRdYLmXH7QJnuF3v... ) + 86400 NSEC b.example.com. TXT RRSIG NSEC + 86400 RRSIG NSEC 5 3 86400 20130507213204 ( + 20130407213204 14 example.net. + bZMjoZ3bHjnEz0nIsPMM... ) + ... + + is reduced to the following representation: + + SOA2006022100 + RRSIG14(SOA2006022100) + DNSKEY14 + DNSKEY15 + + RRSIG14(KEY) + RRSIG15(KEY) + + The rest of the zone data has the same signature as the SOA record, + + + +Kolkman & Gieben Expires September 8, 2009 [Page 36] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + i.e., an RRSIG created with DNSKEY 14. + +Appendix D. Document Editing History + + [To be removed prior to publication as an RFC] + +D.1. draft-ietf-dnsop-rfc4641-00 + + Version 0 was differs from RFC4641 in the following ways. + + o Status of this memo appropriate for I-D + + o TOC formatting differs. + + o Whitespaces, linebreaks, and pagebreaks may be slightly different + because of xml2rfc generation. + + o References slightly reordered. + + o Applied the errata from + http://www.rfc-editor.org/errata_search.php?rfc=4641 + + o Inserted trivial "IANA considertations" section. + + In other words it should not contain substantive changes in content + as intended by the workinggroup for the original RFC4641. + +D.2. version 0->1 + + Cryptography details rewritten. (See http://www.nlnetlabs.nl/svn/ + rfc4641bis/trunk/open-issues/cryptography_flawed) + + o Reference to NIST 800-90 added + + o RSA/SHA256 is being recommended in addition to RSA/SHA1. + + o Complete rewrite of Section 3.5 removing the table and suggesting + a keysize of 1024 for keys in use for less than 8 years, issued up + to at least 2015. + + o Replaced the reference to Schneiers' applied cryptograpy with a + reference to RFC4949. + + o Removed the KSK for high level zones consideration + + Applied some differentiation with respect of the use of a KSK for + parent or trust-anchor relation http://www.nlnetlabs.nl/svn/ + rfc4641bis/trunk/open-issues/differentiation_trustanchor_parent + + + +Kolkman & Gieben Expires September 8, 2009 [Page 37] + +Internet-Draft DNSSEC Operational Practices, Version 2 March 2009 + + + http://www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/ + rollover_assumptions + + Added Section 4.2.4 as suggested by Jelte Jansen in http:// + www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/Key_algorithm_roll + + Added Section 4.4.5 Issue identified by Antoin Verschuur http:// + www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/ + non-cooperative-registrars + + In Appendix A: ZSK does not nescessarily sign the DNSKEY RRset. + + $Id: draft-ietf-dnsop-rfc4641bis-01.txt 28 2009-03-06 14:03:57Z olaf $ + +Authors' Addresses + + Olaf M. Kolkman + NLnet Labs + Kruislaan 419 + Amsterdam 1098 VA + The Netherlands + + EMail: olaf@nlnetlabs.nl + URI: http://www.nlnetlabs.nl + + + Miek Gieben + + + EMail: miek@miek.nl + + + + + + + + + + + + + + + + + + + + + +Kolkman & Gieben Expires September 8, 2009 [Page 38] + diff --git a/contrib/zkt-1.1.2/doc/rfc4641.txt b/contrib/zkt-1.1.2/doc/rfc4641.txt new file mode 100644 index 0000000000..0a013bcba5 --- /dev/null +++ b/contrib/zkt-1.1.2/doc/rfc4641.txt @@ -0,0 +1,1963 @@ + + + + + + +Network Working Group O. Kolkman +Request for Comments: 4641 R. Gieben +Obsoletes: 2541 NLnet Labs +Category: Informational September 2006 + + + DNSSEC Operational Practices + +Status of This Memo + + This memo provides information for the Internet community. It does + not specify an Internet standard of any kind. Distribution of this + memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2006). + +Abstract + + This document describes a set of practices for operating the DNS with + security extensions (DNSSEC). The target audience is zone + administrators deploying DNSSEC. + + The document discusses operational aspects of using keys and + signatures in the DNS. It discusses issues of key generation, key + storage, signature generation, key rollover, and related policies. + + This document obsoletes RFC 2541, as it covers more operational + ground and gives more up-to-date requirements with respect to key + sizes and the new DNSSEC specification. + + + + + + + + + + + + + + + + + + + + +Kolkman & Gieben Informational [Page 1] + +RFC 4641 DNSSEC Operational Practices September 2006 + + +Table of Contents + + 1. Introduction ....................................................3 + 1.1. The Use of the Term 'key' ..................................4 + 1.2. Time Definitions ...........................................4 + 2. Keeping the Chain of Trust Intact ...............................5 + 3. Keys Generation and Storage .....................................6 + 3.1. Zone and Key Signing Keys ..................................6 + 3.1.1. Motivations for the KSK and ZSK Separation ..........6 + 3.1.2. KSKs for High-Level Zones ...........................7 + 3.2. Key Generation .............................................8 + 3.3. Key Effectivity Period .....................................8 + 3.4. Key Algorithm ..............................................9 + 3.5. Key Sizes ..................................................9 + 3.6. Private Key Storage .......................................11 + 4. Signature Generation, Key Rollover, and Related Policies .......12 + 4.1. Time in DNSSEC ............................................12 + 4.1.1. Time Considerations ................................12 + 4.2. Key Rollovers .............................................14 + 4.2.1. Zone Signing Key Rollovers .........................14 + 4.2.1.1. Pre-Publish Key Rollover ..................15 + 4.2.1.2. Double Signature Zone Signing Key + Rollover ..................................17 + 4.2.1.3. Pros and Cons of the Schemes ..............18 + 4.2.2. Key Signing Key Rollovers ..........................18 + 4.2.3. Difference Between ZSK and KSK Rollovers ...........20 + 4.2.4. Automated Key Rollovers ............................21 + 4.3. Planning for Emergency Key Rollover .......................21 + 4.3.1. KSK Compromise .....................................22 + 4.3.1.1. Keeping the Chain of Trust Intact .........22 + 4.3.1.2. Breaking the Chain of Trust ...............23 + 4.3.2. ZSK Compromise .....................................23 + 4.3.3. Compromises of Keys Anchored in Resolvers ..........24 + 4.4. Parental Policies .........................................24 + 4.4.1. Initial Key Exchanges and Parental Policies + Considerations .....................................24 + 4.4.2. Storing Keys or Hashes? ............................25 + 4.4.3. Security Lameness ..................................25 + 4.4.4. DS Signature Validity Period .......................26 + 5. Security Considerations ........................................26 + 6. Acknowledgments ................................................26 + 7. References .....................................................27 + 7.1. Normative References ......................................27 + 7.2. Informative References ....................................28 + Appendix A. Terminology ...........................................30 + Appendix B. Zone Signing Key Rollover How-To ......................31 + Appendix C. Typographic Conventions ...............................32 + + + + +Kolkman & Gieben Informational [Page 2] + +RFC 4641 DNSSEC Operational Practices September 2006 + + +1. Introduction + + This document describes how to run a DNS Security (DNSSEC)-enabled + environment. It is intended for operators who have knowledge of the + DNS (see RFC 1034 [1] and RFC 1035 [2]) and want to deploy DNSSEC. + See RFC 4033 [4] for an introduction to DNSSEC, RFC 4034 [5] for the + newly introduced Resource Records (RRs), and RFC 4035 [6] for the + protocol changes. + + During workshops and early operational deployment tests, operators + and system administrators have gained experience about operating the + DNS with security extensions (DNSSEC). This document translates + these experiences into a set of practices for zone administrators. + At the time of writing, there exists very little experience with + DNSSEC in production environments; this document should therefore + explicitly not be seen as representing 'Best Current Practices'. + + The procedures herein are focused on the maintenance of signed zones + (i.e., signing and publishing zones on authoritative servers). It is + intended that maintenance of zones such as re-signing or key + rollovers be transparent to any verifying clients on the Internet. + + The structure of this document is as follows. In Section 2, we + discuss the importance of keeping the "chain of trust" intact. + Aspects of key generation and storage of private keys are discussed + in Section 3; the focus in this section is mainly on the private part + of the key(s). Section 4 describes considerations concerning the + public part of the keys. Since these public keys appear in the DNS + one has to take into account all kinds of timing issues, which are + discussed in Section 4.1. Section 4.2 and Section 4.3 deal with the + rollover, or supercession, of keys. Finally, Section 4.4 discusses + considerations on how parents deal with their children's public keys + in order to maintain chains of trust. + + The typographic conventions used in this document are explained in + Appendix C. + + Since this is a document with operational suggestions and there are + no protocol specifications, the RFC 2119 [7] language does not apply. + + This document obsoletes RFC 2541 [12] to reflect the evolution of the + underlying DNSSEC protocol since then. Changes in the choice of + cryptographic algorithms, DNS record types and type names, and the + parent-child key and signature exchange demanded a major rewrite and + additional information and explanation. + + + + + + +Kolkman & Gieben Informational [Page 3] + +RFC 4641 DNSSEC Operational Practices September 2006 + + +1.1. The Use of the Term 'key' + + It is assumed that the reader is familiar with the concept of + asymmetric keys on which DNSSEC is based (public key cryptography + [17]). Therefore, this document will use the term 'key' rather + loosely. Where it is written that 'a key is used to sign data' it is + assumed that the reader understands that it is the private part of + the key pair that is used for signing. It is also assumed that the + reader understands that the public part of the key pair is published + in the DNSKEY Resource Record and that it is the public part that is + used in key exchanges. + +1.2. Time Definitions + + In this document, we will be using a number of time-related terms. + The following definitions apply: + + o "Signature validity period" The period that a signature is valid. + It starts at the time specified in the signature inception field + of the RRSIG RR and ends at the time specified in the expiration + field of the RRSIG RR. + + o "Signature publication period" Time after which a signature (made + with a specific key) is replaced with a new signature (made with + the same key). This replacement takes place by publishing the + relevant RRSIG in the master zone file. After one stops + publishing an RRSIG in a zone, it may take a while before the + RRSIG has expired from caches and has actually been removed from + the DNS. + + o "Key effectivity period" The period during which a key pair is + expected to be effective. This period is defined as the time + between the first inception time stamp and the last expiration + date of any signature made with this key, regardless of any + discontinuity in the use of the key. The key effectivity period + can span multiple signature validity periods. + + o "Maximum/Minimum Zone Time to Live (TTL)" The maximum or minimum + value of the TTLs from the complete set of RRs in a zone. Note + that the minimum TTL is not the same as the MINIMUM field in the + SOA RR. See [11] for more information. + + + + + + + + + + +Kolkman & Gieben Informational [Page 4] + +RFC 4641 DNSSEC Operational Practices September 2006 + + +2. Keeping the Chain of Trust Intact + + Maintaining a valid chain of trust is important because broken chains + of trust will result in data being marked as Bogus (as defined in [4] + Section 5), which may cause entire (sub)domains to become invisible + to verifying clients. The administrators of secured zones have to + realize that their zone is, to verifying clients, part of a chain of + trust. + + As mentioned in the introduction, the procedures herein are intended + to ensure that maintenance of zones, such as re-signing or key + rollovers, will be transparent to the verifying clients on the + Internet. + + Administrators of secured zones will have to keep in mind that data + published on an authoritative primary server will not be immediately + seen by verifying clients; it may take some time for the data to be + transferred to other secondary authoritative nameservers and clients + may be fetching data from caching non-authoritative servers. In this + light, note that the time for a zone transfer from master to slave is + negligible when using NOTIFY [9] and incremental transfer (IXFR) [8]. + It increases when full zone transfers (AXFR) are used in combination + with NOTIFY. It increases even more if you rely on full zone + transfers based on only the SOA timing parameters for refresh. + + For the verifying clients, it is important that data from secured + zones can be used to build chains of trust regardless of whether the + data came directly from an authoritative server, a caching + nameserver, or some middle box. Only by carefully using the + available timing parameters can a zone administrator ensure that the + data necessary for verification can be obtained. + + The responsibility for maintaining the chain of trust is shared by + administrators of secured zones in the chain of trust. This is most + obvious in the case of a 'key compromise' when a trade-off between + maintaining a valid chain of trust and replacing the compromised keys + as soon as possible must be made. Then zone administrators will have + to make a trade-off, between keeping the chain of trust intact -- + thereby allowing for attacks with the compromised key -- or + deliberately breaking the chain of trust and making secured + subdomains invisible to security-aware resolvers. Also see Section + 4.3. + + + + + + + + + +Kolkman & Gieben Informational [Page 5] + +RFC 4641 DNSSEC Operational Practices September 2006 + + +3. Keys Generation and Storage + + This section describes a number of considerations with respect to the + security of keys. It deals with the generation, effectivity period, + size, and storage of private keys. + +3.1. Zone and Key Signing Keys + + The DNSSEC validation protocol does not distinguish between different + types of DNSKEYs. All DNSKEYs can be used during the validation. In + practice, operators use Key Signing and Zone Signing Keys and use the + so-called Secure Entry Point (SEP) [3] flag to distinguish between + them during operations. The dynamics and considerations are + discussed below. + + To make zone re-signing and key rollover procedures easier to + implement, it is possible to use one or more keys as Key Signing Keys + (KSKs). These keys will only sign the apex DNSKEY RRSet in a zone. + Other keys can be used to sign all the RRSets in a zone and are + referred to as Zone Signing Keys (ZSKs). In this document, we assume + that KSKs are the subset of keys that are used for key exchanges with + the parent and potentially for configuration as trusted anchors -- + the SEP keys. In this document, we assume a one-to-one mapping + between KSK and SEP keys and we assume the SEP flag to be set on all + KSKs. + +3.1.1. Motivations for the KSK and ZSK Separation + + Differentiating between the KSK and ZSK functions has several + advantages: + + o No parent/child interaction is required when ZSKs are updated. + + o The KSK can be made stronger (i.e., using more bits in the key + material). This has little operational impact since it is only + used to sign a small fraction of the zone data. Also, the KSK is + only used to verify the zone's key set, not for other RRSets in + the zone. + + o As the KSK is only used to sign a key set, which is most probably + updated less frequently than other data in the zone, it can be + stored separately from and in a safer location than the ZSK. + + o A KSK can have a longer key effectivity period. + + For almost any method of key management and zone signing, the KSK is + used less frequently than the ZSK. Once a key set is signed with the + KSK, all the keys in the key set can be used as ZSKs. If a ZSK is + + + +Kolkman & Gieben Informational [Page 6] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + compromised, it can be simply dropped from the key set. The new key + set is then re-signed with the KSK. + + Given the assumption that for KSKs the SEP flag is set, the KSK can + be distinguished from a ZSK by examining the flag field in the DNSKEY + RR. If the flag field is an odd number it is a KSK. If it is an + even number it is a ZSK. + + The Zone Signing Key can be used to sign all the data in a zone on a + regular basis. When a Zone Signing Key is to be rolled, no + interaction with the parent is needed. This allows for signature + validity periods on the order of days. + + The Key Signing Key is only to be used to sign the DNSKEY RRs in a + zone. If a Key Signing Key is to be rolled over, there will be + interactions with parties other than the zone administrator. These + can include the registry of the parent zone or administrators of + verifying resolvers that have the particular key configured as secure + entry points. Hence, the key effectivity period of these keys can + and should be made much longer. Although, given a long enough key, + the key effectivity period can be on the order of years, we suggest + planning for a key effectivity on the order of a few months so that a + key rollover remains an operational routine. + +3.1.2. KSKs for High-Level Zones + + Higher-level zones are generally more sensitive than lower-level + zones. Anyone controlling or breaking the security of a zone thereby + obtains authority over all of its subdomains (except in the case of + resolvers that have locally configured the public key of a subdomain, + in which case this, and only this, subdomain wouldn't be affected by + the compromise of the parent zone). Therefore, extra care should be + taken with high-level zones, and strong keys should be used. + + The root zone is the most critical of all zones. Someone controlling + or compromising the security of the root zone would control the + entire DNS namespace of all resolvers using that root zone (except in + the case of resolvers that have locally configured the public key of + a subdomain). Therefore, the utmost care must be taken in the + securing of the root zone. The strongest and most carefully handled + keys should be used. The root zone private key should always be kept + off-line. + + Many resolvers will start at a root server for their access to and + authentication of DNS data. Securely updating the trust anchors in + an enormous population of resolvers around the world will be + extremely difficult. + + + + +Kolkman & Gieben Informational [Page 7] + +RFC 4641 DNSSEC Operational Practices September 2006 + + +3.2. Key Generation + + Careful generation of all keys is a sometimes overlooked but + absolutely essential element in any cryptographically secure system. + The strongest algorithms used with the longest keys are still of no + use if an adversary can guess enough to lower the size of the likely + key space so that it can be exhaustively searched. Technical + suggestions for the generation of random keys will be found in RFC + 4086 [14]. One should carefully assess if the random number + generator used during key generation adheres to these suggestions. + + Keys with a long effectivity period are particularly sensitive as + they will represent a more valuable target and be subject to attack + for a longer time than short-period keys. It is strongly recommended + that long-term key generation occur off-line in a manner isolated + from the network via an air gap or, at a minimum, high-level secure + hardware. + +3.3. Key Effectivity Period + + For various reasons, keys in DNSSEC need to be changed once in a + while. The longer a key is in use, the greater the probability that + it will have been compromised through carelessness, accident, + espionage, or cryptanalysis. Furthermore, when key rollovers are too + rare an event, they will not become part of the operational habit and + there is risk that nobody on-site will remember the procedure for + rollover when the need is there. + + From a purely operational perspective, a reasonable key effectivity + period for Key Signing Keys is 13 months, with the intent to replace + them after 12 months. An intended key effectivity period of a month + is reasonable for Zone Signing Keys. + + For key sizes that match these effectivity periods, see Section 3.5. + + As argued in Section 3.1.2, securely updating trust anchors will be + extremely difficult. On the other hand, the "operational habit" + argument does also apply to trust anchor reconfiguration. If a short + key effectivity period is used and the trust anchor configuration has + to be revisited on a regular basis, the odds that the configuration + tends to be forgotten is smaller. The trade-off is against a system + that is so dynamic that administrators of the validating clients will + not be able to follow the modifications. + + Key effectivity periods can be made very short, as in a few minutes. + But when replacing keys one has to take the considerations from + Section 4.1 and Section 4.2 into account. + + + + +Kolkman & Gieben Informational [Page 8] + +RFC 4641 DNSSEC Operational Practices September 2006 + + +3.4. Key Algorithm + + There are currently three different types of algorithms that can be + used in DNSSEC: RSA, DSA, and elliptic curve cryptography. The + latter is fairly new and has yet to be standardized for usage in + DNSSEC. + + RSA has been developed in an open and transparent manner. As the + patent on RSA expired in 2000, its use is now also free. + + DSA has been developed by the National Institute of Standards and + Technology (NIST). The creation of signatures takes roughly the same + time as with RSA, but is 10 to 40 times as slow for verification + [17]. + + We suggest the use of RSA/SHA-1 as the preferred algorithm for the + key. The current known attacks on RSA can be defeated by making your + key longer. As the MD5 hashing algorithm is showing cracks, we + recommend the usage of SHA-1. + + At the time of publication, it is known that the SHA-1 hash has + cryptanalysis issues. There is work in progress on addressing these + issues. We recommend the use of public key algorithms based on + hashes stronger than SHA-1 (e.g., SHA-256), as soon as these + algorithms are available in protocol specifications (see [19] and + [20]) and implementations. + +3.5. Key Sizes + + When choosing key sizes, zone administrators will need to take into + account how long a key will be used, how much data will be signed + during the key publication period (see Section 8.10 of [17]), and, + optionally, how large the key size of the parent is. As the chain of + trust really is "a chain", there is not much sense in making one of + the keys in the chain several times larger then the others. As + always, it's the weakest link that defines the strength of the entire + chain. Also see Section 3.1.1 for a discussion of how keys serving + different roles (ZSK vs. KSK) may need different key sizes. + + Generating a key of the correct size is a difficult problem; RFC 3766 + [13] tries to deal with that problem. The first part of the + selection procedure in Section 1 of the RFC states: + + 1. Determine the attack resistance necessary to satisfy the + security requirements of the application. Do this by + estimating the minimum number of computer operations that the + attacker will be forced to do in order to compromise the + + + + +Kolkman & Gieben Informational [Page 9] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + security of the system and then take the logarithm base two of + that number. Call that logarithm value "n". + + A 1996 report recommended 90 bits as a good all-around choice + for system security. The 90 bit number should be increased by + about 2/3 bit/year, or about 96 bits in 2005. + + [13] goes on to explain how this number "n" can be used to calculate + the key sizes in public key cryptography. This culminated in the + table given below (slightly modified for our purpose): + + +-------------+-----------+--------------+ + | System | | | + | requirement | Symmetric | RSA or DSA | + | for attack | key size | modulus size | + | resistance | (bits) | (bits) | + | (bits) | | | + +-------------+-----------+--------------+ + | 70 | 70 | 947 | + | 80 | 80 | 1228 | + | 90 | 90 | 1553 | + | 100 | 100 | 1926 | + | 150 | 150 | 4575 | + | 200 | 200 | 8719 | + | 250 | 250 | 14596 | + +-------------+-----------+--------------+ + + The key sizes given are rather large. This is because these keys are + resilient against a trillionaire attacker. Assuming this rich + attacker will not attack your key and that the key is rolled over + once a year, we come to the following recommendations about KSK + sizes: 1024 bits for low-value domains, 1300 bits for medium-value + domains, and 2048 bits for high-value domains. + + Whether a domain is of low, medium, or high value depends solely on + the views of the zone owner. One could, for instance, view leaf + nodes in the DNS as of low value, and top-level domains (TLDs) or the + root zone of high value. The suggested key sizes should be safe for + the next 5 years. + + As ZSKs can be rolled over more easily (and thus more often), the key + sizes can be made smaller. But as said in the introduction of this + paragraph, making the ZSKs' key sizes too small (in relation to the + KSKs' sizes) doesn't make much sense. Try to limit the difference in + size to about 100 bits. + + + + + + +Kolkman & Gieben Informational [Page 10] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + Note that nobody can see into the future and that these key sizes are + only provided here as a guide. Further information can be found in + [16] and Section 7.5 of [17]. It should be noted though that [16] is + already considered overly optimistic about what key sizes are + considered safe. + + One final note concerning key sizes. Larger keys will increase the + sizes of the RRSIG and DNSKEY records and will therefore increase the + chance of DNS UDP packet overflow. Also, the time it takes to + validate and create RRSIGs increases with larger keys, so don't + needlessly double your key sizes. + +3.6. Private Key Storage + + It is recommended that, where possible, zone private keys and the + zone file master copy that is to be signed be kept and used in off- + line, non-network-connected, physically secure machines only. + Periodically, an application can be run to add authentication to a + zone by adding RRSIG and NSEC RRs. Then the augmented file can be + transferred. + + When relying on dynamic update to manage a signed zone [10], be aware + that at least one private key of the zone will have to reside on the + master server. This key is only as secure as the amount of exposure + the server receives to unknown clients and the security of the host. + Although not mandatory, one could administer the DNS in the following + way. The master that processes the dynamic updates is unavailable + from generic hosts on the Internet, it is not listed in the NS RR + set, although its name appears in the SOA RRs MNAME field. The + nameservers in the NS RRSet are able to receive zone updates through + NOTIFY, IXFR, AXFR, or an out-of-band distribution mechanism. This + approach is known as the "hidden master" setup. + + The ideal situation is to have a one-way information flow to the + network to avoid the possibility of tampering from the network. + Keeping the zone master file on-line on the network and simply + cycling it through an off-line signer does not do this. The on-line + version could still be tampered with if the host it resides on is + compromised. For maximum security, the master copy of the zone file + should be off-net and should not be updated based on an unsecured + network mediated communication. + + In general, keeping a zone file off-line will not be practical and + the machines on which zone files are maintained will be connected to + a network. Operators are advised to take security measures to shield + unauthorized access to the master copy. + + + + + +Kolkman & Gieben Informational [Page 11] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + For dynamically updated secured zones [10], both the master copy and + the private key that is used to update signatures on updated RRs will + need to be on-line. + +4. Signature Generation, Key Rollover, and Related Policies + +4.1. Time in DNSSEC + + Without DNSSEC, all times in the DNS are relative. The SOA fields + REFRESH, RETRY, and EXPIRATION are timers used to determine the time + elapsed after a slave server synchronized with a master server. The + Time to Live (TTL) value and the SOA RR minimum TTL parameter [11] + are used to determine how long a forwarder should cache data after it + has been fetched from an authoritative server. By using a signature + validity period, DNSSEC introduces the notion of an absolute time in + the DNS. Signatures in DNSSEC have an expiration date after which + the signature is marked as invalid and the signed data is to be + considered Bogus. + +4.1.1. Time Considerations + + Because of the expiration of signatures, one should consider the + following: + + o We suggest the Maximum Zone TTL of your zone data to be a fraction + of your signature validity period. + + If the TTL would be of similar order as the signature validity + period, then all RRSets fetched during the validity period + would be cached until the signature expiration time. Section + 7.1 of [4] suggests that "the resolver may use the time + remaining before expiration of the signature validity period of + a signed RRSet as an upper bound for the TTL". As a result, + query load on authoritative servers would peak at signature + expiration time, as this is also the time at which records + simultaneously expire from caches. + + To avoid query load peaks, we suggest the TTL on all the RRs in + your zone to be at least a few times smaller than your + signature validity period. + + o We suggest the signature publication period to end at least one + Maximum Zone TTL duration before the end of the signature validity + period. + + + + + + + +Kolkman & Gieben Informational [Page 12] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + Re-signing a zone shortly before the end of the signature + validity period may cause simultaneous expiration of data from + caches. This in turn may lead to peaks in the load on + authoritative servers. + + o We suggest the Minimum Zone TTL to be long enough to both fetch + and verify all the RRs in the trust chain. In workshop + environments, it has been demonstrated [18] that a low TTL (under + 5 to 10 minutes) caused disruptions because of the following two + problems: + + 1. During validation, some data may expire before the + validation is complete. The validator should be able to + keep all data until it is completed. This applies to all + RRs needed to complete the chain of trust: DSes, DNSKEYs, + RRSIGs, and the final answers, i.e., the RRSet that is + returned for the initial query. + + 2. Frequent verification causes load on recursive nameservers. + Data at delegation points, DSes, DNSKEYs, and RRSIGs + benefit from caching. The TTL on those should be + relatively long. + + o Slave servers will need to be able to fetch newly signed zones + well before the RRSIGs in the zone served by the slave server pass + their signature expiration time. + + When a slave server is out of sync with its master and data in + a zone is signed by expired signatures, it may be better for + the slave server not to give out any answer. + + Normally, a slave server that is not able to contact a master + server for an extended period will expire a zone. When that + happens, the server will respond differently to queries for + that zone. Some servers issue SERVFAIL, whereas others turn + off the 'AA' bit in the answers. The time of expiration is set + in the SOA record and is relative to the last successful + refresh between the master and the slave servers. There exists + no coupling between the signature expiration of RRSIGs in the + zone and the expire parameter in the SOA. + + If the server serves a DNSSEC zone, then it may well happen + that the signatures expire well before the SOA expiration timer + counts down to zero. It is not possible to completely prevent + this from happening by tweaking the SOA parameters. However, + the effects can be minimized where the SOA expiration time is + equal to or shorter than the signature validity period. The + consequence of an authoritative server not being able to update + + + +Kolkman & Gieben Informational [Page 13] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + a zone, whilst that zone includes expired signatures, is that + non-secure resolvers will continue to be able to resolve data + served by the particular slave servers while security-aware + resolvers will experience problems because of answers being + marked as Bogus. + + We suggest the SOA expiration timer being approximately one + third or one fourth of the signature validity period. It will + allow problems with transfers from the master server to be + noticed before the actual signature times out. We also suggest + that operators of nameservers that supply secondary services + develop 'watch dogs' to spot upcoming signature expirations in + zones they slave, and take appropriate action. + + When determining the value for the expiration parameter one has + to take the following into account: What are the chances that + all my secondaries expire the zone? How quickly can I reach an + administrator of secondary servers to load a valid zone? These + questions are not DNSSEC specific but may influence the choice + of your signature validity intervals. + +4.2. Key Rollovers + + A DNSSEC key cannot be used forever (see Section 3.3). So key + rollovers -- or supercessions, as they are sometimes called -- are a + fact of life when using DNSSEC. Zone administrators who are in the + process of rolling their keys have to take into account that data + published in previous versions of their zone still lives in caches. + When deploying DNSSEC, this becomes an important consideration; + ignoring data that may be in caches may lead to loss of service for + clients. + + The most pressing example of this occurs when zone material signed + with an old key is being validated by a resolver that does not have + the old zone key cached. If the old key is no longer present in the + current zone, this validation fails, marking the data "Bogus". + Alternatively, an attempt could be made to validate data that is + signed with a new key against an old key that lives in a local cache, + also resulting in data being marked "Bogus". + +4.2.1. Zone Signing Key Rollovers + + For "Zone Signing Key rollovers", there are two ways to make sure + that during the rollover data still cached can be verified with the + new key sets or newly generated signatures can be verified with the + keys still in caches. One schema, described in Section 4.2.1.2, uses + + + + + +Kolkman & Gieben Informational [Page 14] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + double signatures; the other uses key pre-publication (Section + 4.2.1.1). The pros, cons, and recommendations are described in + Section 4.2.1.3. + +4.2.1.1. Pre-Publish Key Rollover + + This section shows how to perform a ZSK rollover without the need to + sign all the data in a zone twice -- the "pre-publish key rollover". + This method has advantages in the case of a key compromise. If the + old key is compromised, the new key has already been distributed in + the DNS. The zone administrator is then able to quickly switch to + the new key and remove the compromised key from the zone. Another + major advantage is that the zone size does not double, as is the case + with the double signature ZSK rollover. A small "how-to" for this + kind of rollover can be found in Appendix B. + + Pre-publish key rollover involves four stages as follows: + + ---------------------------------------------------------------- + initial new DNSKEY new RRSIGs DNSKEY removal + ---------------------------------------------------------------- + SOA0 SOA1 SOA2 SOA3 + RRSIG10(SOA0) RRSIG10(SOA1) RRSIG11(SOA2) RRSIG11(SOA3) + + DNSKEY1 DNSKEY1 DNSKEY1 DNSKEY1 + DNSKEY10 DNSKEY10 DNSKEY10 DNSKEY11 + DNSKEY11 DNSKEY11 + RRSIG1 (DNSKEY) RRSIG1 (DNSKEY) RRSIG1(DNSKEY) RRSIG1 (DNSKEY) + RRSIG10(DNSKEY) RRSIG10(DNSKEY) RRSIG11(DNSKEY) RRSIG11(DNSKEY) + ---------------------------------------------------------------- + + Pre-Publish Key Rollover + + initial: Initial version of the zone: DNSKEY 1 is the Key Signing + Key. DNSKEY 10 is used to sign all the data of the zone, the Zone + Signing Key. + + new DNSKEY: DNSKEY 11 is introduced into the key set. Note that no + signatures are generated with this key yet, but this does not + secure against brute force attacks on the public key. The minimum + duration of this pre-roll phase is the time it takes for the data + to propagate to the authoritative servers plus TTL value of the + key set. + + new RRSIGs: At the "new RRSIGs" stage (SOA serial 2), DNSKEY 11 is + used to sign the data in the zone exclusively (i.e., all the + signatures from DNSKEY 10 are removed from the zone). DNSKEY 10 + remains published in the key set. This way data that was loaded + + + +Kolkman & Gieben Informational [Page 15] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + into caches from version 1 of the zone can still be verified with + key sets fetched from version 2 of the zone. The minimum time + that the key set including DNSKEY 10 is to be published is the + time that it takes for zone data from the previous version of the + zone to expire from old caches, i.e., the time it takes for this + zone to propagate to all authoritative servers plus the Maximum + Zone TTL value of any of the data in the previous version of the + zone. + + DNSKEY removal: DNSKEY 10 is removed from the zone. The key set, now + only containing DNSKEY 1 and DNSKEY 11, is re-signed with the + DNSKEY 1. + + The above scheme can be simplified by always publishing the "future" + key immediately after the rollover. The scheme would look as follows + (we show two rollovers); the future key is introduced in "new DNSKEY" + as DNSKEY 12 and again a newer one, numbered 13, in "new DNSKEY + (II)": + + ---------------------------------------------------------------- + initial new RRSIGs new DNSKEY + ---------------------------------------------------------------- + SOA0 SOA1 SOA2 + RRSIG10(SOA0) RRSIG11(SOA1) RRSIG11(SOA2) + + DNSKEY1 DNSKEY1 DNSKEY1 + DNSKEY10 DNSKEY10 DNSKEY11 + DNSKEY11 DNSKEY11 DNSKEY12 + RRSIG1(DNSKEY) RRSIG1 (DNSKEY) RRSIG1(DNSKEY) + RRSIG10(DNSKEY) RRSIG11(DNSKEY) RRSIG11(DNSKEY) + ---------------------------------------------------------------- + + ---------------------------------------------------------------- + new RRSIGs (II) new DNSKEY (II) + ---------------------------------------------------------------- + SOA3 SOA4 + RRSIG12(SOA3) RRSIG12(SOA4) + + DNSKEY1 DNSKEY1 + DNSKEY11 DNSKEY12 + DNSKEY12 DNSKEY13 + RRSIG1(DNSKEY) RRSIG1(DNSKEY) + RRSIG12(DNSKEY) RRSIG12(DNSKEY) + ---------------------------------------------------------------- + + Pre-Publish Key Rollover, Showing Two Rollovers + + + + + +Kolkman & Gieben Informational [Page 16] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + Note that the key introduced in the "new DNSKEY" phase is not used + for production yet; the private key can thus be stored in a + physically secure manner and does not need to be 'fetched' every time + a zone needs to be signed. + +4.2.1.2. Double Signature Zone Signing Key Rollover + + This section shows how to perform a ZSK key rollover using the double + zone data signature scheme, aptly named "double signature rollover". + + During the "new DNSKEY" stage the new version of the zone file will + need to propagate to all authoritative servers and the data that + exists in (distant) caches will need to expire, requiring at least + the Maximum Zone TTL. + + Double signature ZSK rollover involves three stages as follows: + + ---------------------------------------------------------------- + initial new DNSKEY DNSKEY removal + ---------------------------------------------------------------- + SOA0 SOA1 SOA2 + RRSIG10(SOA0) RRSIG10(SOA1) RRSIG11(SOA2) + RRSIG11(SOA1) + + DNSKEY1 DNSKEY1 DNSKEY1 + DNSKEY10 DNSKEY10 DNSKEY11 + DNSKEY11 + RRSIG1(DNSKEY) RRSIG1(DNSKEY) RRSIG1(DNSKEY) + RRSIG10(DNSKEY) RRSIG10(DNSKEY) RRSIG11(DNSKEY) + RRSIG11(DNSKEY) + ---------------------------------------------------------------- + + Double Signature Zone Signing Key Rollover + + initial: Initial Version of the zone: DNSKEY 1 is the Key Signing + Key. DNSKEY 10 is used to sign all the data of the zone, the Zone + Signing Key. + + new DNSKEY: At the "New DNSKEY" stage (SOA serial 1) DNSKEY 11 is + introduced into the key set and all the data in the zone is signed + with DNSKEY 10 and DNSKEY 11. The rollover period will need to + continue until all data from version 0 of the zone has expired + from remote caches. This will take at least the Maximum Zone TTL + of version 0 of the zone. + + DNSKEY removal: DNSKEY 10 is removed from the zone. All the + signatures from DNSKEY 10 are removed from the zone. The key set, + now only containing DNSKEY 11, is re-signed with DNSKEY 1. + + + +Kolkman & Gieben Informational [Page 17] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + At every instance, RRSIGs from the previous version of the zone can + be verified with the DNSKEY RRSet from the current version and the + other way around. The data from the current version can be verified + with the data from the previous version of the zone. The duration of + the "new DNSKEY" phase and the period between rollovers should be at + least the Maximum Zone TTL. + + Making sure that the "new DNSKEY" phase lasts until the signature + expiration time of the data in initial version of the zone is + recommended. This way all caches are cleared of the old signatures. + However, this duration could be considerably longer than the Maximum + Zone TTL, making the rollover a lengthy procedure. + + Note that in this example we assumed that the zone was not modified + during the rollover. New data can be introduced in the zone as long + as it is signed with both keys. + +4.2.1.3. Pros and Cons of the Schemes + + Pre-publish key rollover: This rollover does not involve signing the + zone data twice. Instead, before the actual rollover, the new key + is published in the key set and thus is available for + cryptanalysis attacks. A small disadvantage is that this process + requires four steps. Also the pre-publish scheme involves more + parental work when used for KSK rollovers as explained in Section + 4.2.3. + + Double signature ZSK rollover: The drawback of this signing scheme is + that during the rollover the number of signatures in your zone + doubles; this may be prohibitive if you have very big zones. An + advantage is that it only requires three steps. + +4.2.2. Key Signing Key Rollovers + + For the rollover of a Key Signing Key, the same considerations as for + the rollover of a Zone Signing Key apply. However, we can use a + double signature scheme to guarantee that old data (only the apex key + set) in caches can be verified with a new key set and vice versa. + Since only the key set is signed with a KSK, zone size considerations + do not apply. + + + + + + + + + + + +Kolkman & Gieben Informational [Page 18] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + -------------------------------------------------------------------- + initial new DNSKEY DS change DNSKEY removal + -------------------------------------------------------------------- + Parent: + SOA0 --------> SOA1 --------> + RRSIGpar(SOA0) --------> RRSIGpar(SOA1) --------> + DS1 --------> DS2 --------> + RRSIGpar(DS) --------> RRSIGpar(DS) --------> + + + Child: + SOA0 SOA1 --------> SOA2 + RRSIG10(SOA0) RRSIG10(SOA1) --------> RRSIG10(SOA2) + --------> + DNSKEY1 DNSKEY1 --------> DNSKEY2 + DNSKEY2 --------> + DNSKEY10 DNSKEY10 --------> DNSKEY10 + RRSIG1 (DNSKEY) RRSIG1 (DNSKEY) --------> RRSIG2 (DNSKEY) + RRSIG2 (DNSKEY) --------> + RRSIG10(DNSKEY) RRSIG10(DNSKEY) --------> RRSIG10(DNSKEY) + -------------------------------------------------------------------- + + Stages of Deployment for a Double Signature Key Signing Key Rollover + + initial: Initial version of the zone. The parental DS points to + DNSKEY1. Before the rollover starts, the child will have to + verify what the TTL is of the DS RR that points to DNSKEY1 -- it + is needed during the rollover and we refer to the value as TTL_DS. + + new DNSKEY: During the "new DNSKEY" phase, the zone administrator + generates a second KSK, DNSKEY2. The key is provided to the + parent, and the child will have to wait until a new DS RR has been + generated that points to DNSKEY2. After that DS RR has been + published on all servers authoritative for the parent's zone, the + zone administrator has to wait at least TTL_DS to make sure that + the old DS RR has expired from caches. + + DS change: The parent replaces DS1 with DS2. + + DNSKEY removal: DNSKEY1 has been removed. + + The scenario above puts the responsibility for maintaining a valid + chain of trust with the child. It also is based on the premise that + the parent only has one DS RR (per algorithm) per zone. An + alternative mechanism has been considered. Using an established + trust relation, the interaction can be performed in-band, and the + removal of the keys by the child can possibly be signaled by the + parent. In this mechanism, there are periods where there are two DS + + + +Kolkman & Gieben Informational [Page 19] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + RRs at the parent. Since at the moment of writing the protocol for + this interaction has not been developed, further discussion is out of + scope for this document. + +4.2.3. Difference Between ZSK and KSK Rollovers + + Note that KSK rollovers and ZSK rollovers are different in the sense + that a KSK rollover requires interaction with the parent (and + possibly replacing of trust anchors) and the ensuing delay while + waiting for it. + + A zone key rollover can be handled in two different ways: pre-publish + (Section 4.2.1.1) and double signature (Section 4.2.1.2). + + As the KSK is used to validate the key set and because the KSK is not + changed during a ZSK rollover, a cache is able to validate the new + key set of the zone. The pre-publish method would also work for a + KSK rollover. The records that are to be pre-published are the + parental DS RRs. The pre-publish method has some drawbacks for KSKs. + We first describe the rollover scheme and then indicate these + drawbacks. + + -------------------------------------------------------------------- + initial new DS new DNSKEY DS/DNSKEY removal + -------------------------------------------------------------------- + Parent: + SOA0 SOA1 --------> SOA2 + RRSIGpar(SOA0) RRSIGpar(SOA1) --------> RRSIGpar(SOA2) + DS1 DS1 --------> DS2 + DS2 --------> + RRSIGpar(DS) RRSIGpar(DS) --------> RRSIGpar(DS) + + + Child: + SOA0 --------> SOA1 SOA1 + RRSIG10(SOA0) --------> RRSIG10(SOA1) RRSIG10(SOA1) + --------> + DNSKEY1 --------> DNSKEY2 DNSKEY2 + --------> + DNSKEY10 --------> DNSKEY10 DNSKEY10 + RRSIG1 (DNSKEY) --------> RRSIG2(DNSKEY) RRSIG2 (DNSKEY) + RRSIG10(DNSKEY) --------> RRSIG10(DNSKEY) RRSIG10(DNSKEY) + -------------------------------------------------------------------- + + Stages of Deployment for a Pre-Publish Key Signing Key Rollover + + + + + + +Kolkman & Gieben Informational [Page 20] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + When the child zone wants to roll, it notifies the parent during the + "new DS" phase and submits the new key (or the corresponding DS) to + the parent. The parent publishes DS1 and DS2, pointing to DNSKEY1 + and DNSKEY2, respectively. During the rollover ("new DNSKEY" phase), + which can take place as soon as the new DS set propagated through the + DNS, the child replaces DNSKEY1 with DNSKEY2. Immediately after that + ("DS/DNSKEY removal" phase), it can notify the parent that the old DS + record can be deleted. + + The drawbacks of this scheme are that during the "new DS" phase the + parent cannot verify the match between the DS2 RR and DNSKEY2 using + the DNS -- as DNSKEY2 is not yet published. Besides, we introduce a + "security lame" key (see Section 4.4.3). Finally, the child-parent + interaction consists of two steps. The "double signature" method + only needs one interaction. + +4.2.4. Automated Key Rollovers + + As keys must be renewed periodically, there is some motivation to + automate the rollover process. Consider the following: + + o ZSK rollovers are easy to automate as only the child zone is + involved. + + o A KSK rollover needs interaction between parent and child. Data + exchange is needed to provide the new keys to the parent; + consequently, this data must be authenticated and integrity must + be guaranteed in order to avoid attacks on the rollover. + +4.3. Planning for Emergency Key Rollover + + This section deals with preparation for a possible key compromise. + Our advice is to have a documented procedure ready for when a key + compromise is suspected or confirmed. + + When the private material of one of your keys is compromised it can + be used for as long as a valid trust chain exists. A trust chain + remains intact for + + o as long as a signature over the compromised key in the trust chain + is valid, + + o as long as a parental DS RR (and signature) points to the + compromised key, + + o as long as the key is anchored in a resolver and is used as a + starting point for validation (this is generally the hardest to + update). + + + +Kolkman & Gieben Informational [Page 21] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + While a trust chain to your compromised key exists, your namespace is + vulnerable to abuse by anyone who has obtained illegitimate + possession of the key. Zone operators have to make a trade-off if + the abuse of the compromised key is worse than having data in caches + that cannot be validated. If the zone operator chooses to break the + trust chain to the compromised key, data in caches signed with this + key cannot be validated. However, if the zone administrator chooses + to take the path of a regular rollover, the malicious key holder can + spoof data so that it appears to be valid. + +4.3.1. KSK Compromise + + A zone containing a DNSKEY RRSet with a compromised KSK is vulnerable + as long as the compromised KSK is configured as trust anchor or a + parental DS points to it. + + A compromised KSK can be used to sign the key set of an attacker's + zone. That zone could be used to poison the DNS. + + Therefore, when the KSK has been compromised, the trust anchor or the + parental DS should be replaced as soon as possible. It is local + policy whether to break the trust chain during the emergency + rollover. The trust chain would be broken when the compromised KSK + is removed from the child's zone while the parent still has a DS + pointing to the compromised KSK (the assumption is that there is only + one DS at the parent. If there are multiple DSes this does not apply + -- however the chain of trust of this particular key is broken). + + Note that an attacker's zone still uses the compromised KSK and the + presence of a parental DS would cause the data in this zone to appear + as valid. Removing the compromised key would cause the attacker's + zone to appear as valid and the child's zone as Bogus. Therefore, we + advise not to remove the KSK before the parent has a DS to a new KSK + in place. + +4.3.1.1. Keeping the Chain of Trust Intact + + If we follow this advice, the timing of the replacement of the KSK is + somewhat critical. The goal is to remove the compromised KSK as soon + as the new DS RR is available at the parent. And also make sure that + the signature made with a new KSK over the key set with the + compromised KSK in it expires just after the new DS appears at the + parent, thus removing the old cruft in one swoop. + + The procedure is as follows: + + 1. Introduce a new KSK into the key set, keep the compromised KSK in + the key set. + + + +Kolkman & Gieben Informational [Page 22] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + 2. Sign the key set, with a short validity period. The validity + period should expire shortly after the DS is expected to appear + in the parent and the old DSes have expired from caches. + + 3. Upload the DS for this new key to the parent. + + 4. Follow the procedure of the regular KSK rollover: Wait for the DS + to appear in the authoritative servers and then wait as long as + the TTL of the old DS RRs. If necessary re-sign the DNSKEY RRSet + and modify/extend the expiration time. + + 5. Remove the compromised DNSKEY RR from the zone and re-sign the + key set using your "normal" validity interval. + + An additional danger of a key compromise is that the compromised key + could be used to facilitate a legitimate DNSKEY/DS rollover and/or + nameserver changes at the parent. When that happens, the domain may + be in dispute. An authenticated out-of-band and secure notify + mechanism to contact a parent is needed in this case. + + Note that this is only a problem when the DNSKEY and or DS records + are used for authentication at the parent. + +4.3.1.2. Breaking the Chain of Trust + + There are two methods to break the chain of trust. The first method + causes the child zone to appear 'Bogus' to validating resolvers. The + other causes the child zone to appear 'insecure'. These are + described below. + + In the method that causes the child zone to appear 'Bogus' to + validating resolvers, the child zone replaces the current KSK with a + new one and re-signs the key set. Next it sends the DS of the new + key to the parent. Only after the parent has placed the new DS in + the zone is the child's chain of trust repaired. + + An alternative method of breaking the chain of trust is by removing + the DS RRs from the parent zone altogether. As a result, the child + zone would become insecure. + +4.3.2. ZSK Compromise + + Primarily because there is no parental interaction required when a + ZSK is compromised, the situation is less severe than with a KSK + compromise. The zone must still be re-signed with a new ZSK as soon + as possible. As this is a local operation and requires no + communication between the parent and child, this can be achieved + fairly quickly. However, one has to take into account that just as + + + +Kolkman & Gieben Informational [Page 23] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + with a normal rollover the immediate disappearance of the old + compromised key may lead to verification problems. Also note that as + long as the RRSIG over the compromised ZSK is not expired the zone + may be still at risk. + +4.3.3. Compromises of Keys Anchored in Resolvers + + A key can also be pre-configured in resolvers. For instance, if + DNSSEC is successfully deployed the root key may be pre-configured in + most security aware resolvers. + + If trust-anchor keys are compromised, the resolvers using these keys + should be notified of this fact. Zone administrators may consider + setting up a mailing list to communicate the fact that a SEP key is + about to be rolled over. This communication will of course need to + be authenticated, e.g., by using digital signatures. + + End-users faced with the task of updating an anchored key should + always validate the new key. New keys should be authenticated out- + of-band, for example, through the use of an announcement website that + is secured using secure sockets (TLS) [21]. + +4.4. Parental Policies + +4.4.1. Initial Key Exchanges and Parental Policies Considerations + + The initial key exchange is always subject to the policies set by the + parent. When designing a key exchange policy one should take into + account that the authentication and authorization mechanisms used + during a key exchange should be as strong as the authentication and + authorization mechanisms used for the exchange of delegation + information between parent and child. That is, there is no implicit + need in DNSSEC to make the authentication process stronger than it + was in DNS. + + Using the DNS itself as the source for the actual DNSKEY material, + with an out-of-band check on the validity of the DNSKEY, has the + benefit that it reduces the chances of user error. A DNSKEY query + tool can make use of the SEP bit [3] to select the proper key from a + DNSSEC key set, thereby reducing the chance that the wrong DNSKEY is + sent. It can validate the self-signature over a key; thereby + verifying the ownership of the private key material. Fetching the + DNSKEY from the DNS ensures that the chain of trust remains intact + once the parent publishes the DS RR indicating the child is secure. + + Note: the out-of-band verification is still needed when the key + material is fetched via the DNS. The parent can never be sure + whether or not the DNSKEY RRs have been spoofed. + + + +Kolkman & Gieben Informational [Page 24] + +RFC 4641 DNSSEC Operational Practices September 2006 + + +4.4.2. Storing Keys or Hashes? + + When designing a registry system one should consider which of the + DNSKEYs and/or the corresponding DSes to store. Since a child zone + might wish to have a DS published using a message digest algorithm + not yet understood by the registry, the registry can't count on being + able to generate the DS record from a raw DNSKEY. Thus, we recommend + that registry systems at least support storing DS records. + + It may also be useful to store DNSKEYs, since having them may help + during troubleshooting and, as long as the child's chosen message + digest is supported, the overhead of generating DS records from them + is minimal. Having an out-of-band mechanism, such as a registry + directory (e.g., Whois), to find out which keys are used to generate + DS Resource Records for specific owners and/or zones may also help + with troubleshooting. + + The storage considerations also relate to the design of the customer + interface and the method by which data is transferred between + registrant and registry; Will the child zone administrator be able to + upload DS RRs with unknown hash algorithms or does the interface only + allow DNSKEYs? In the registry-registrar model, one can use the + DNSSEC extensions to the Extensible Provisioning Protocol (EPP) [15], + which allows transfer of DS RRs and optionally DNSKEY RRs. + +4.4.3. Security Lameness + + Security lameness is defined as what happens when a parent has a DS + RR pointing to a non-existing DNSKEY RR. When this happens, the + child's zone may be marked "Bogus" by verifying DNS clients. + + As part of a comprehensive delegation check, the parent could, at key + exchange time, verify that the child's key is actually configured in + the DNS. However, if a parent does not understand the hashing + algorithm used by child, the parental checks are limited to only + comparing the key id. + + Child zones should be very careful in removing DNSKEY material, + specifically SEP keys, for which a DS RR exists. + + Once a zone is "security lame", a fix (e.g., removing a DS RR) will + take time to propagate through the DNS. + + + + + + + + + +Kolkman & Gieben Informational [Page 25] + +RFC 4641 DNSSEC Operational Practices September 2006 + + +4.4.4. DS Signature Validity Period + + Since the DS can be replayed as long as it has a valid signature, a + short signature validity period over the DS minimizes the time a + child is vulnerable in the case of a compromise of the child's + KSK(s). A signature validity period that is too short introduces the + possibility that a zone is marked "Bogus" in case of a configuration + error in the signer. There may not be enough time to fix the + problems before signatures expire. Something as mundane as operator + unavailability during weekends shows the need for DS signature + validity periods longer than 2 days. We recommend an absolute + minimum for a DS signature validity period of a few days. + + The maximum signature validity period of the DS record depends on how + long child zones are willing to be vulnerable after a key compromise. + On the other hand, shortening the DS signature validity interval + increases the operational risk for the parent. Therefore, the parent + may have policy to use a signature validity interval that is + considerably longer than the child would hope for. + + A compromise between the operational constraints of the parent and + minimizing damage for the child may result in a DS signature validity + period somewhere between a week and months. + + In addition to the signature validity period, which sets a lower + bound on the number of times the zone owner will need to sign the + zone data and which sets an upper bound to the time a child is + vulnerable after key compromise, there is the TTL value on the DS + RRs. Shortening the TTL means that the authoritative servers will + see more queries. But on the other hand, a short TTL lowers the + persistence of DS RRSets in caches thereby increasing the speed with + which updated DS RRSets propagate through the DNS. + +5. Security Considerations + + DNSSEC adds data integrity to the DNS. This document tries to assess + the operational considerations to maintain a stable and secure DNSSEC + service. Not taking into account the 'data propagation' properties + in the DNS will cause validation failures and may make secured zones + unavailable to security-aware resolvers. + +6. Acknowledgments + + Most of the ideas in this document were the result of collective + efforts during workshops, discussions, and tryouts. + + At the risk of forgetting individuals who were the original + contributors of the ideas, we would like to acknowledge people who + + + +Kolkman & Gieben Informational [Page 26] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + were actively involved in the compilation of this document. In + random order: Rip Loomis, Olafur Gudmundsson, Wesley Griffin, Michael + Richardson, Scott Rose, Rick van Rein, Tim McGinnis, Gilles Guette + Olivier Courtay, Sam Weiler, Jelte Jansen, Niall O'Reilly, Holger + Zuleger, Ed Lewis, Hilarie Orman, Marcos Sanz, and Peter Koch. + + Some material in this document has been copied from RFC 2541 [12]. + + Mike StJohns designed the key exchange between parent and child + mentioned in the last paragraph of Section 4.2.2 + + Section 4.2.4 was supplied by G. Guette and O. Courtay. + + Emma Bretherick, Adrian Bedford, and Lindy Foster corrected many of + the spelling and style issues. + + Kolkman and Gieben take the blame for introducing all miscakes (sic). + + While working on this document, Kolkman was employed by the RIPE NCC + and Gieben was employed by NLnet Labs. + +7. References + +7.1. Normative References + + [1] Mockapetris, P., "Domain names - concepts and facilities", STD + 13, RFC 1034, November 1987. + + [2] Mockapetris, P., "Domain names - implementation and + specification", STD 13, RFC 1035, November 1987. + + [3] Kolkman, O., Schlyter, J., and E. Lewis, "Domain Name System + KEY (DNSKEY) Resource Record (RR) Secure Entry Point (SEP) + Flag", RFC 3757, May 2004. + + [4] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, + "DNS Security Introduction and Requirements", RFC 4033, March + 2005. + + [5] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, + "Resource Records for the DNS Security Extensions", RFC 4034, + March 2005. + + [6] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, + "Protocol Modifications for the DNS Security Extensions", RFC + 4035, March 2005. + + + + + +Kolkman & Gieben Informational [Page 27] + +RFC 4641 DNSSEC Operational Practices September 2006 + + +7.2. Informative References + + [7] Bradner, S., "Key words for use in RFCs to Indicate Requirement + Levels", BCP 14, RFC 2119, March 1997. + + [8] Ohta, M., "Incremental Zone Transfer in DNS", RFC 1995, August + 1996. + + [9] Vixie, P., "A Mechanism for Prompt Notification of Zone Changes + (DNS NOTIFY)", RFC 1996, August 1996. + + [10] Wellington, B., "Secure Domain Name System (DNS) Dynamic + Update", RFC 3007, November 2000. + + [11] Andrews, M., "Negative Caching of DNS Queries (DNS NCACHE)", + RFC 2308, March 1998. + + [12] Eastlake, D., "DNS Security Operational Considerations", RFC + 2541, March 1999. + + [13] Orman, H. and P. Hoffman, "Determining Strengths For Public + Keys Used For Exchanging Symmetric Keys", BCP 86, RFC 3766, + April 2004. + + [14] Eastlake, D., Schiller, J., and S. Crocker, "Randomness + Requirements for Security", BCP 106, RFC 4086, June 2005. + + [15] Hollenbeck, S., "Domain Name System (DNS) Security Extensions + Mapping for the Extensible Provisioning Protocol (EPP)", RFC + 4310, December 2005. + + [16] Lenstra, A. and E. Verheul, "Selecting Cryptographic Key + Sizes", The Journal of Cryptology 14 (255-293), 2001. + + [17] Schneier, B., "Applied Cryptography: Protocols, Algorithms, and + Source Code in C", ISBN (hardcover) 0-471-12845-7, ISBN + (paperback) 0-471-59756-2, Published by John Wiley & Sons Inc., + 1996. + + [18] Rose, S., "NIST DNSSEC workshop notes", June 2001. + + [19] Jansen, J., "Use of RSA/SHA-256 DNSKEY and RRSIG Resource + Records in DNSSEC", Work in Progress, January 2006. + + [20] Hardaker, W., "Use of SHA-256 in DNSSEC Delegation Signer (DS) + Resource Records (RRs)", RFC 4509, May 2006. + + + + + +Kolkman & Gieben Informational [Page 28] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + [21] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J., and + T. Wright, "Transport Layer Security (TLS) Extensions", RFC + 4366, April 2006. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Kolkman & Gieben Informational [Page 29] + +RFC 4641 DNSSEC Operational Practices September 2006 + + +Appendix A. Terminology + + In this document, there is some jargon used that is defined in other + documents. In most cases, we have not copied the text from the + documents defining the terms but have given a more elaborate + explanation of the meaning. Note that these explanations should not + be seen as authoritative. + + Anchored key: A DNSKEY configured in resolvers around the globe. + This key is hard to update, hence the term anchored. + + Bogus: Also see Section 5 of [4]. An RRSet in DNSSEC is marked + "Bogus" when a signature of an RRSet does not validate against a + DNSKEY. + + Key Signing Key or KSK: A Key Signing Key (KSK) is a key that is used + exclusively for signing the apex key set. The fact that a key is + a KSK is only relevant to the signing tool. + + Key size: The term 'key size' can be substituted by 'modulus size' + throughout the document. It is mathematically more correct to use + modulus size, but as this is a document directed at operators we + feel more at ease with the term key size. + + Private and public keys: DNSSEC secures the DNS through the use of + public key cryptography. Public key cryptography is based on the + existence of two (mathematically related) keys, a public key and a + private key. The public keys are published in the DNS by use of + the DNSKEY Resource Record (DNSKEY RR). Private keys should + remain private. + + Key rollover: A key rollover (also called key supercession in some + environments) is the act of replacing one key pair with another at + the end of a key effectivity period. + + Secure Entry Point (SEP) key: A KSK that has a parental DS record + pointing to it or is configured as a trust anchor. Although not + required by the protocol, we recommend that the SEP flag [3] is + set on these keys. + + Self-signature: This only applies to signatures over DNSKEYs; a + signature made with DNSKEY x, over DNSKEY x is called a self- + signature. Note: without further information, self-signatures + convey no trust. They are useful to check the authenticity of the + DNSKEY, i.e., they can be used as a hash. + + + + + + +Kolkman & Gieben Informational [Page 30] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + Singing the zone file: The term used for the event where an + administrator joyfully signs its zone file while producing melodic + sound patterns. + + Signer: The system that has access to the private key material and + signs the Resource Record sets in a zone. A signer may be + configured to sign only parts of the zone, e.g., only those RRSets + for which existing signatures are about to expire. + + Zone Signing Key (ZSK): A key that is used for signing all data in a + zone. The fact that a key is a ZSK is only relevant to the + signing tool. + + Zone administrator: The 'role' that is responsible for signing a zone + and publishing it on the primary authoritative server. + +Appendix B. Zone Signing Key Rollover How-To + + Using the pre-published signature scheme and the most conservative + method to assure oneself that data does not live in caches, here + follows the "how-to". + + Step 0: The preparation: Create two keys and publish both in your key + set. Mark one of the keys "active" and the other "published". + Use the "active" key for signing your zone data. Store the + private part of the "published" key, preferably off-line. The + protocol does not provide for attributes to mark a key as active + or published. This is something you have to do on your own, + through the use of a notebook or key management tool. + + Step 1: Determine expiration: At the beginning of the rollover make a + note of the highest expiration time of signatures in your zone + file created with the current key marked as active. Wait until + the expiration time marked in Step 1 has passed. + + Step 2: Then start using the key that was marked "published" to sign + your data (i.e., mark it "active"). Stop using the key that was + marked "active"; mark it "rolled". + + Step 3: It is safe to engage in a new rollover (Step 1) after at + least one signature validity period. + + + + + + + + + + +Kolkman & Gieben Informational [Page 31] + +RFC 4641 DNSSEC Operational Practices September 2006 + + +Appendix C. Typographic Conventions + + The following typographic conventions are used in this document: + + Key notation: A key is denoted by DNSKEYx, where x is a number or an + identifier, x could be thought of as the key id. + + RRSet notations: RRs are only denoted by the type. All other + information -- owner, class, rdata, and TTL--is left out. Thus: + "example.com 3600 IN A 192.0.2.1" is reduced to "A". RRSets are a + list of RRs. A example of this would be "A1, A2", specifying the + RRSet containing two "A" records. This could again be abbreviated to + just "A". + + Signature notation: Signatures are denoted as RRSIGx(RRSet), which + means that RRSet is signed with DNSKEYx. + + Zone representation: Using the above notation we have simplified the + representation of a signed zone by leaving out all unnecessary + details such as the names and by representing all data by "SOAx" + + SOA representation: SOAs are represented as SOAx, where x is the + serial number. + + Using this notation the following signed zone: + + example.net. 86400 IN SOA ns.example.net. bert.example.net. ( + 2006022100 ; serial + 86400 ; refresh ( 24 hours) + 7200 ; retry ( 2 hours) + 3600000 ; expire (1000 hours) + 28800 ) ; minimum ( 8 hours) + 86400 RRSIG SOA 5 2 86400 20130522213204 ( + 20130422213204 14 example.net. + cmL62SI6iAX46xGNQAdQ... ) + 86400 NS a.iana-servers.net. + 86400 NS b.iana-servers.net. + 86400 RRSIG NS 5 2 86400 20130507213204 ( + 20130407213204 14 example.net. + SO5epiJei19AjXoUpFnQ ... ) + 86400 DNSKEY 256 3 5 ( + EtRB9MP5/AvOuVO0I8XDxy0... ) ; id = 14 + 86400 DNSKEY 257 3 5 ( + gsPW/Yy19GzYIY+Gnr8HABU... ) ; id = 15 + 86400 RRSIG DNSKEY 5 2 86400 20130522213204 ( + 20130422213204 14 example.net. + J4zCe8QX4tXVGjV4e1r9... ) + + + + +Kolkman & Gieben Informational [Page 32] + +RFC 4641 DNSSEC Operational Practices September 2006 + + + 86400 RRSIG DNSKEY 5 2 86400 20130522213204 ( + 20130422213204 15 example.net. + keVDCOpsSeDReyV6O... ) + 86400 RRSIG NSEC 5 2 86400 20130507213204 ( + 20130407213204 14 example.net. + obj3HEp1GjnmhRjX... ) + a.example.net. 86400 IN TXT "A label" + 86400 RRSIG TXT 5 3 86400 20130507213204 ( + 20130407213204 14 example.net. + IkDMlRdYLmXH7QJnuF3v... ) + 86400 NSEC b.example.com. TXT RRSIG NSEC + 86400 RRSIG NSEC 5 3 86400 20130507213204 ( + 20130407213204 14 example.net. + bZMjoZ3bHjnEz0nIsPMM... ) + ... + + is reduced to the following representation: + + SOA2006022100 + RRSIG14(SOA2006022100) + DNSKEY14 + DNSKEY15 + + RRSIG14(KEY) + RRSIG15(KEY) + + The rest of the zone data has the same signature as the SOA record, + i.e., an RRSIG created with DNSKEY 14. + + + + + + + + + + + + + + + + + + + + + + + +Kolkman & Gieben Informational [Page 33] + +RFC 4641 DNSSEC Operational Practices September 2006 + + +Authors' Addresses + + Olaf M. Kolkman + NLnet Labs + Kruislaan 419 + Amsterdam 1098 VA + The Netherlands + + EMail: olaf@nlnetlabs.nl + URI: http://www.nlnetlabs.nl + + + R. (Miek) Gieben + + EMail: miek@miek.nl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Kolkman & Gieben Informational [Page 34] + +RFC 4641 DNSSEC Operational Practices September 2006 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2006). + + This document is subject to the rights, licenses and restrictions + contained in BCP 78, and except as set forth therein, the authors + retain all their rights. + + This document and the information contained herein are provided on an + "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET + ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE + INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED + WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Intellectual Property + + The IETF takes no position regarding the validity or scope of any + Intellectual Property Rights or other rights that might be claimed to + pertain to the implementation or use of the technology described in + this document or the extent to which any license under such rights + might or might not be available; nor does it represent that it has + made any independent effort to identify any such rights. Information + on the procedures with respect to rights in RFC documents can be + found in BCP 78 and BCP 79. + + Copies of IPR disclosures made to the IETF Secretariat and any + assurances of licenses to be made available, or the result of an + attempt made to obtain a general license or permission for the use of + such proprietary rights by implementers or users of this + specification can be obtained from the IETF on-line IPR repository at + http://www.ietf.org/ipr. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights that may cover technology that may be required to implement + this standard. Please address the information to the IETF at + ietf-ipr@ietf.org. + +Acknowledgement + + Funding for the RFC Editor function is provided by the IETF + Administrative Support Activity (IASA). + + + + + + + +Kolkman & Gieben Informational [Page 35] + diff --git a/contrib/zkt/doc/rfc5011.txt b/contrib/zkt-1.1.2/doc/rfc5011.txt similarity index 100% rename from contrib/zkt/doc/rfc5011.txt rename to contrib/zkt-1.1.2/doc/rfc5011.txt diff --git a/contrib/zkt/domaincmp.c b/contrib/zkt-1.1.2/domaincmp.c similarity index 100% rename from contrib/zkt/domaincmp.c rename to contrib/zkt-1.1.2/domaincmp.c diff --git a/contrib/zkt/domaincmp.h b/contrib/zkt-1.1.2/domaincmp.h similarity index 100% rename from contrib/zkt/domaincmp.h rename to contrib/zkt-1.1.2/domaincmp.h diff --git a/contrib/zkt/examples/dnssec.conf b/contrib/zkt-1.1.2/examples/dnssec.conf similarity index 100% rename from contrib/zkt/examples/dnssec.conf rename to contrib/zkt-1.1.2/examples/dnssec.conf diff --git a/contrib/zkt-1.1.2/examples/flat/core b/contrib/zkt-1.1.2/examples/flat/core new file mode 100644 index 0000000000..e425dff539 Binary files /dev/null and b/contrib/zkt-1.1.2/examples/flat/core differ diff --git a/contrib/zkt-1.1.2/examples/flat/dist.sh b/contrib/zkt-1.1.2/examples/flat/dist.sh new file mode 100755 index 0000000000..c676ac6807 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/dist.sh @@ -0,0 +1,82 @@ +################################################################# +# +# @(#) dist.sh -- distribute and reload command for dnssec-signer +# +# (c) Jul 2008 Holger Zuleger hznet.de +# +# Feb 2010 action "distkeys" added +# +# This shell script will be run by dnssec-signer as a distribution +# and reload command if: +# +# a) the dnssec.conf file parameter Distribute_Cmd: points +# to this file +# and +# b) the user running the dnssec-signer command is not +# root (uid==0) +# and +# c) the owner of this shell script is the same as the +# running user and the access rights don't allow writing +# for anyone except the owner +# or +# d) the group of this shell script is the same as the +# running user and the access rights don't allow writing +# for anyone except the group +# +################################################################# + +# set path to rndc and scp +PATH="/bin:/usr/bin:/usr/local/sbin" + +# remote server and directory +server=localhost # fqdn of remote name server +dir=/var/named # zone directory on remote name server + +progname=$0 +usage() +{ + echo "usage: $progname distribute|reload []" 1>&2 + test $# -gt 0 && echo $* 1>&2 + exit 1 +} + +if test $# -lt 3 +then + usage +fi +action="$1" +domain="$2" +zonefile="$3" +view="" +test $# -gt 3 && view="$4" + +case $action in +distkeys) + if test -n "$view" + then + echo "scp K$zone+* $server:$dir/$view/$zone/" + : scp K$zone+* $server:$dir/$view/$zone/ + else + echo "scp K$zone+* $server:$dir/$zone/" + : scp K$zone+* $server:$dir/$zone/ + fi + ;; +distribute) + if test -n "$view" + then + echo "scp $zonefile $server:$dir/$view/$domain/" + : scp $zonefile $server:$dir/$view/$domain/ + else + echo "scp $zonefile $server:$dir/$domain/" + : scp $zonefile $server:$dir/$domain/ + fi + ;; +reload) + echo "rndc $action $domain $view" + : rndc $action $domain $view + ;; +*) + usage "illegal action $action" + ;; +esac + diff --git a/contrib/zkt-1.1.2/examples/flat/dnssec.conf b/contrib/zkt-1.1.2/examples/flat/dnssec.conf new file mode 100644 index 0000000000..5384978415 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/dnssec.conf @@ -0,0 +1,45 @@ +# +# @(#) dnssec.conf T1.0rc1 (c) Feb 2005 - Mar 2010 Holger Zuleger hznet.de +# + +# dnssec-zkt options +Zonedir: "." +Recursive: True +PrintTime: False +PrintAge: True +LeftJustify: False + +# zone specific values +ResignInterval: 2d # (172800 seconds) +Sigvalidity: 6d # (518400 seconds) +Max_TTL: 8h # (28800 seconds) +Propagation: 5m # (300 seconds) +KEY_TTL: 1h # (3600 seconds) +Serialformat: incremental + +# signing key parameters +Key_Algo: RSASHA512 +KSK_lifetime: 60d # (5184000 seconds) +KSK_bits: 1300 +KSK_randfile: "/dev/urandom" +ZSK_lifetime: 2w # (1209600 seconds) +ZSK_bits: 1024 +ZSK_randfile: "/dev/urandom" +SaltBits: 24 + +# dnssec-signer options +LogFile: "zkt.log" +LogLevel: DEBUG +LogDomainDir: "." +SyslogFacility: USER +SyslogLevel: NOTICE +VerboseLog: 2 +Keyfile: "dnskey.db" +Zonefile: "zone.db" +KeySetDir: "../keysets" +DLV_Domain: "" +Sig_Pseudorand: True +Sig_GenerateDS: True +Sig_DnsKeyKSK: False +Sig_Parameter: "-n 1" +Distribute_Cmd: "./dist.sh" diff --git a/contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+007+30323.key b/contrib/zkt-1.1.2/examples/flat/dyn.example.net/Kdyn.example.net.+007+30323.key similarity index 100% rename from contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+007+30323.key rename to contrib/zkt-1.1.2/examples/flat/dyn.example.net/Kdyn.example.net.+007+30323.key diff --git a/contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+007+30323.private b/contrib/zkt-1.1.2/examples/flat/dyn.example.net/Kdyn.example.net.+007+30323.private similarity index 100% rename from contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+007+30323.private rename to contrib/zkt-1.1.2/examples/flat/dyn.example.net/Kdyn.example.net.+007+30323.private diff --git a/contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+007+52935.key b/contrib/zkt-1.1.2/examples/flat/dyn.example.net/Kdyn.example.net.+007+52935.key similarity index 100% rename from contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+007+52935.key rename to contrib/zkt-1.1.2/examples/flat/dyn.example.net/Kdyn.example.net.+007+52935.key diff --git a/contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+007+52935.private b/contrib/zkt-1.1.2/examples/flat/dyn.example.net/Kdyn.example.net.+007+52935.private similarity index 100% rename from contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+007+52935.private rename to contrib/zkt-1.1.2/examples/flat/dyn.example.net/Kdyn.example.net.+007+52935.private diff --git a/contrib/zkt-1.1.2/examples/flat/dyn.example.net/dnskey.db b/contrib/zkt-1.1.2/examples/flat/dyn.example.net/dnskey.db new file mode 100644 index 0000000000..d16eb9b617 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/dyn.example.net/dnskey.db @@ -0,0 +1,23 @@ +; +; !!! Don't edit this file by hand. +; !!! It will be generated by zkt-signer. +; +; Last generation time Mar 02 2010 10:59:46 +; + +; *** List of Key Signing Keys *** +; dyn.example.net. tag=52935 algo=NSEC3RSASHA1 generated Feb 21 2010 19:43:15 +dyn.example.net. 3600 IN DNSKEY 257 3 7 ( + AwEAAeqEDYgA5lns1VsMJiZfTWMEguameVmOoBYx8s1uLzmS/3APsh1e + WCeoBgAjRry1tpM/bPowyuygE4H0LpzNQLm9RbjDmpDN8Gwi3AjEnG4H + CT58TuAVxjiefN+vb1pvyFlAL58YOkuGf9tG/NJMNc+XrULAU1ey2dT9 + Fh+SCVO3 + ) ; key id = 52935 + +; *** List of Zone Signing Keys *** +; dyn.example.net. tag=30323 algo=NSEC3RSASHA1 generated Feb 21 2010 19:43:15 +dyn.example.net. 3600 IN DNSKEY 256 3 7 ( + AwEAAfqG0rb9Ear+Pv7xBg9lc9czF+2YUa8Ris63E/oRRGQEH5U/ZS3A + xz3aOhPFKzAAhjfaG3vTNW3Wl4bl4ITFZrk= + ) ; key id = 30323 + diff --git a/contrib/zkt-1.1.2/examples/flat/dyn.example.net/dnssec.conf b/contrib/zkt-1.1.2/examples/flat/dyn.example.net/dnssec.conf new file mode 100644 index 0000000000..c3be73e563 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/dyn.example.net/dnssec.conf @@ -0,0 +1,3 @@ +Key_Algo: NSEC3RSASHA1 # (Algorithm ID 7) +KSK_lifetime: 60d # (5184000 seconds) +KSK_bits: 1024 diff --git a/contrib/zkt/examples/flat/dyn.example.net/zktlog-dyn.example.net. b/contrib/zkt-1.1.2/examples/flat/dyn.example.net/zktlog-dyn.example.net. similarity index 100% rename from contrib/zkt/examples/flat/dyn.example.net/zktlog-dyn.example.net. rename to contrib/zkt-1.1.2/examples/flat/dyn.example.net/zktlog-dyn.example.net. diff --git a/contrib/zkt-1.1.2/examples/flat/dyn.example.net/zone.db b/contrib/zkt-1.1.2/examples/flat/dyn.example.net/zone.db new file mode 100644 index 0000000000..e002576928 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/dyn.example.net/zone.db @@ -0,0 +1,135 @@ +; File written on Thu Feb 25 23:42:29 2010 +; dnssec_signzone version 9.7.0 +dyn.example.net. 7200 IN SOA ns1.example.net. hostmaster.example.net. ( + 18 ; serial + 43200 ; refresh (12 hours) + 1800 ; retry (30 minutes) + 1209600 ; expire (2 weeks) + 7200 ; minimum (2 hours) + ) + 7200 RRSIG SOA 7 3 7200 20100303214229 ( + 20100225214229 30323 dyn.example.net. + Ih9WgRBKZVDT3zJR9eFcB0VKU0o2G7h13XHZ + W6j2Jr1H4Db5IC1xiHXq+hI9UMkVQA3fu1Ub + +tjqAJE+y3hUFg== ) + 7200 NS ns1.example.net. + 7200 NS ns2.example.net. + 7200 RRSIG NS 7 3 7200 20100227180048 ( + 20100221180048 30323 dyn.example.net. + uvTn2MCWjTfS/piH3kKEmF1gPoeN8jIdcFFJ + 5t3b8RIwjorD81gWIRmzkGDE59hoL4mMvEnO + 32sAi8qkYhvBOA== ) + 3600 DNSKEY 256 3 7 ( + AwEAAfqG0rb9Ear+Pv7xBg9lc9czF+2YUa8R + is63E/oRRGQEH5U/ZS3Axz3aOhPFKzAAhjfa + G3vTNW3Wl4bl4ITFZrk= + ) ; key id = 30323 + 3600 DNSKEY 257 3 7 ( + AwEAAeqEDYgA5lns1VsMJiZfTWMEguameVmO + oBYx8s1uLzmS/3APsh1eWCeoBgAjRry1tpM/ + bPowyuygE4H0LpzNQLm9RbjDmpDN8Gwi3AjE + nG4HCT58TuAVxjiefN+vb1pvyFlAL58YOkuG + f9tG/NJMNc+XrULAU1ey2dT9Fh+SCVO3 + ) ; key id = 52935 + 3600 RRSIG DNSKEY 7 3 3600 20100227180048 ( + 20100221180048 30323 dyn.example.net. + je5kBhDdp9b9fjH/lJ1o9WDBL2YxZ+6UNuF9 + zNbeeDlfBHe7XlTGw9MHyvZh46wx2OUmLoGM + DFhPfIwUwtttUA== ) + 3600 RRSIG DNSKEY 7 3 3600 20100227180048 ( + 20100221180048 52935 dyn.example.net. + MuyIUCa3XlttWuSnaQegQnRgTrTsx0Mj4EGI + fwtZs2H3L079Y/brqMvtlIGxtlr9meLg43oo + jX1w48ilerzf1PwYhUVpFefZTgmClK0h2ej4 + Ho9Qh4/6snesVj06kWsQDkhuVs58zHmhRtEy + P4YlqP/R1CAk166RhwSmGuSx1O8= ) + 0 NSEC3PARAM 1 0 10 76931F + 0 RRSIG NSEC3PARAM 7 3 0 20100227180048 ( + 20100221180048 30323 dyn.example.net. + LGD8bq/sX9yvDUpmyaRczfTshrR6T9HmQ5/a + MwMSY+5LDAD/YdwtpVF7uNwdMa6ydJFQW37u + Rma0TxEqKPGPyQ== ) +localhost.dyn.example.net. 7200 IN A 127.0.0.1 + 7200 RRSIG A 7 4 7200 20100227180048 ( + 20100221180048 30323 dyn.example.net. + SHLL1lIJZaEGKphkFm3NShS6H33mBnwwACkH + eF3JE5vWwTuT7hffdJlwcahYQfcr3egPv64d + iyCNYNjdvlJpsg== ) +ns1.dyn.example.net. 7200 IN A 1.0.0.5 + 7200 RRSIG A 7 4 7200 20100227180048 ( + 20100221180048 30323 dyn.example.net. + 6PF5dGgOJdolEyxrHqyA66BFLrUORQLZvVBw + 9fX9uGWWKiu6yRR3i4LwIkQ+VelTpCbTsLh4 + gm+rcSMFNeOtxA== ) + 7200 AAAA 2001:db8::53 + 7200 RRSIG AAAA 7 4 7200 20100227180048 ( + 20100221180048 30323 dyn.example.net. + dk1DfG0y9qjCi3VD4e9B1NGKWEig7q8hFdaR + 3hElCIzGlflvgHRiE7iTJxDMB+kTA0by4BMZ + yssUuXP2FMlB2g== ) +ns2.dyn.example.net. 7200 IN A 1.2.0.6 + 7200 RRSIG A 7 4 7200 20100227180048 ( + 20100221180048 30323 dyn.example.net. + Ei5VGwE7CNBQ7ZOHpyKZXtuC8I7lusZ4d+gx + MwpLROH+6OSu26x2ScPdwg1qpZ5Mui01ss6O + IcJL36PRqAM26A== ) +x.dyn.example.net. 7200 IN A 1.2.3.4 + 7200 RRSIG A 7 4 7200 20100227180048 ( + 20100221180048 30323 dyn.example.net. + ieiExNeDjeucDjtMVj0F9kwIsL0ngZfAmEU/ + /UlYe8/8pg2NzFulOviI09ekgOOnMfcnb4n4 + /pRIkFddCEOt0g== ) +y.dyn.example.net. 7200 IN A 1.2.3.5 + 7200 RRSIG A 7 4 7200 20100227180048 ( + 20100221180048 30323 dyn.example.net. + NfDUCrArDXCTPrTpiesQYCoZ039YE/KwlN25 + EZ9vOVt6dE2R9KkAWezkdY9zDmJMGTN1XYI/ + vgd56J8B5Y/uQQ== ) +z.dyn.example.net. 7200 IN A 1.2.3.6 + 7200 RRSIG A 7 4 7200 20100227180048 ( + 20100221180048 30323 dyn.example.net. + VH3BsA8JLlqmL0xkXgXlPXT0xfRcdFy7vPYh + 27exw16LDbQF15KjkHvUJ+Bkei/SmRa20Dll + Yy536Dj+ar5ABQ== ) +A54T6DKFVU4QCAFFNJ0KEU0FH0I4OJSN.dyn.example.net. 7200 IN NSEC3 1 0 10 76931F AJHVGTICN6K0VDA53GCHFMT219SRRQLM A RRSIG + 7200 RRSIG NSEC3 7 4 7200 20100227180048 ( + 20100221180048 30323 dyn.example.net. + 9BhZcQdLwRPU/Dz38uMis/nCcddyhKEm0Zb+ + Mhh3V3OsGI202cebTaxbwVEbQQOeowpUmf8l + AmK/cNX7+IS2rw== ) +AJHVGTICN6K0VDA53GCHFMT219SRRQLM.dyn.example.net. 7200 IN NSEC3 1 0 10 76931F FQ7RBG86KRMACA1NAAKP2KQRQALBA0C7 A RRSIG + 7200 RRSIG NSEC3 7 4 7200 20100227180048 ( + 20100221180048 30323 dyn.example.net. + lVyEaxejO5qFlyyBp8gYyQnG+DkIm8vofj+B + SuTxalc2l+TYen1RnSTeeXfMqc9YpGu4SCaG + Fyznu1K88oUhMg== ) +FQ7RBG86KRMACA1NAAKP2KQRQALBA0C7.dyn.example.net. 7200 IN NSEC3 1 0 10 76931F I7A7A184GGMI35K1E3IR650LKO7NOB5R A AAAA RRSIG + 7200 RRSIG NSEC3 7 4 7200 20100227180048 ( + 20100221180048 30323 dyn.example.net. + 577WZnTQemStx+ciON9rEGXAGnU7C0KLjrFL + VyhocnBnNtxJS8eRMSWvb9XuYCMNhYKOurtt + Ar4qh4VW1+unmA== ) +I7A7A184GGMI35K1E3IR650LKO7NOB5R.dyn.example.net. 7200 IN NSEC3 1 0 10 76931F IMQ912BREQP1POLAH3RMONG3UED541AS A RRSIG + 7200 RRSIG NSEC3 7 4 7200 20100227180048 ( + 20100221180048 30323 dyn.example.net. + +PKntiPlw2om9e0KJX/L2VxSCbxL95eIV2f+ + 5YBMq3npDguHaUiBwan8Vsm+aNsdr1NDDLY/ + HdJzEfVmSNGs7Q== ) +IMQ912BREQP1POLAH3RMONG3UED541AS.dyn.example.net. 7200 IN NSEC3 1 0 10 76931F S3USV4M1HLVJ8F88EDSG8N9PVQRQ20N7 A RRSIG + 7200 RRSIG NSEC3 7 4 7200 20100227180048 ( + 20100221180048 30323 dyn.example.net. + smsg35snQ9PpeG2r8ZGxBl44pwSReh/1rIil + u/n8aa5nKbBpkqtbcc7q1OpUgb1Q7+Tl/wes + kB6bohsRdrwEJA== ) +S3USV4M1HLVJ8F88EDSG8N9PVQRQ20N7.dyn.example.net. 7200 IN NSEC3 1 0 10 76931F T320G5LC07QE1BLR074KORIJTG9DPTI9 A RRSIG + 7200 RRSIG NSEC3 7 4 7200 20100227180048 ( + 20100221180048 30323 dyn.example.net. + XalRIESpdeVK1aNbwu9ym2Spk981Y127rKua + xsoals0Zn2tTjF9wpOYVGVOto3FcWBbyKD1g + 69BTRlv634UIOw== ) +T320G5LC07QE1BLR074KORIJTG9DPTI9.dyn.example.net. 7200 IN NSEC3 1 0 10 76931F A54T6DKFVU4QCAFFNJ0KEU0FH0I4OJSN NS SOA RRSIG DNSKEY NSEC3PARAM + 7200 RRSIG NSEC3 7 4 7200 20100227180048 ( + 20100221180048 30323 dyn.example.net. + D3xq+CkK/a8YSbh9o8WwWnenjDQ3weVdtZ0x + i6bOv3iRITOfCRjYgbeIYtjMFb1rZwgCPD40 + JQgGu5mx1TjnGA== ) diff --git a/contrib/zkt-1.1.2/examples/flat/dyn.example.net/zone.db.dsigned b/contrib/zkt-1.1.2/examples/flat/dyn.example.net/zone.db.dsigned new file mode 100644 index 0000000000..24511a5e08 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/dyn.example.net/zone.db.dsigned @@ -0,0 +1,135 @@ +; File written on Tue Mar 2 10:59:46 2010 +; dnssec_signzone version 9.7.0 +dyn.example.net. 7200 IN SOA ns1.example.net. hostmaster.example.net. ( + 19 ; serial + 43200 ; refresh (12 hours) + 1800 ; retry (30 minutes) + 1209600 ; expire (2 weeks) + 7200 ; minimum (2 hours) + ) + 7200 RRSIG SOA 7 3 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + eNZruaQkUB/jteZtRkZ957BX65zjXIGaKlkf + Bq0XW8OgyHYCvJiB7waJYyiWKeQskp0Z90JF + 34WMUztuTvWUTA== ) + 7200 NS ns1.example.net. + 7200 NS ns2.example.net. + 7200 RRSIG NS 7 3 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + obQoowLwuBixnopoSvUsXvwveB7Pqmeblt2S + 5SXo7ztPNcM1hTdWfIEwRDpQ2DhOfGYi0Ov0 + xEmMlPheVZkW6g== ) + 3600 DNSKEY 256 3 7 ( + AwEAAfqG0rb9Ear+Pv7xBg9lc9czF+2YUa8R + is63E/oRRGQEH5U/ZS3Axz3aOhPFKzAAhjfa + G3vTNW3Wl4bl4ITFZrk= + ) ; key id = 30323 + 3600 DNSKEY 257 3 7 ( + AwEAAeqEDYgA5lns1VsMJiZfTWMEguameVmO + oBYx8s1uLzmS/3APsh1eWCeoBgAjRry1tpM/ + bPowyuygE4H0LpzNQLm9RbjDmpDN8Gwi3AjE + nG4HCT58TuAVxjiefN+vb1pvyFlAL58YOkuG + f9tG/NJMNc+XrULAU1ey2dT9Fh+SCVO3 + ) ; key id = 52935 + 3600 RRSIG DNSKEY 7 3 3600 20100308085946 ( + 20100302085946 30323 dyn.example.net. + 4xQy+G1g8IHVp3NTxHtUIaz/G+h6+ce4SRum + bftLFS9rXV13wSa761J1YoDYx8lj98IDBuED + 94980qJWjgNfdw== ) + 3600 RRSIG DNSKEY 7 3 3600 20100308085946 ( + 20100302085946 52935 dyn.example.net. + VmL0mzUoBzSX+5gB/9MsHUFWBbHrVoyMUjnw + mR7FyrZMfNgz4rf6J2bZ8a8zYGvSXEBrangQ + kkPlxuvNxzn2s+Ji+crfUNa2ZFzRKA8BBczU + 0WLETC5QKonjiAzofCcP15OPN4H18y9WMfE/ + wU0oPhcd8d31Ckf2jPaSdTS8NMk= ) + 0 NSEC3PARAM 1 0 10 76931F + 0 RRSIG NSEC3PARAM 7 3 0 20100308085946 ( + 20100302085946 30323 dyn.example.net. + GSTGjHni3oZ1Nod57kXFkxcOiKXTzjfJ0PDy + hjDfzYS1QKtKA6LzkaBzyl5HK+Yy3DOcep7G + dj7VJG8bsa9S/A== ) +localhost.dyn.example.net. 7200 IN A 127.0.0.1 + 7200 RRSIG A 7 4 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + N5t+OxMeH2rozoIM1ZtXUpnpSep3Qd1J/KUE + LjkisP6KvmwVhkbdcv44KbgS5aR16RJOlFdW + +ilc8QpZ4bvqlQ== ) +ns1.dyn.example.net. 7200 IN A 1.0.0.5 + 7200 RRSIG A 7 4 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + 2DoRBkfIQEBmEeo2Z02SA329ebgp2lFQ2Ykl + Qe5S+J6ZMjVdZyjW8XqBCiqEg6fNbQyUFn3X + pSVvabUPjJpHWA== ) + 7200 AAAA 2001:db8::53 + 7200 RRSIG AAAA 7 4 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + XD+JHAergnT3NDQqEUGv52GNdcF1U1SitccE + y5iL4Dk0qVu+uEA4TVupnMhwOK+wl8759Yw/ + SF6h6CzzKx0Eiw== ) +ns2.dyn.example.net. 7200 IN A 1.2.0.6 + 7200 RRSIG A 7 4 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + S+CpXVolhedS2bFTNdoNAPd+T2Bi/5iKVcKJ + 9S27k/tpifBNVjAQPktM9iya60upXxuOkHqt + /uuF4iTlh9Yukw== ) +x.dyn.example.net. 7200 IN A 1.2.3.4 + 7200 RRSIG A 7 4 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + Fb+8g0K+/6ZkXctNOprGKyJC1Y5pFizibI3o + k2E6aDN8hUJ5FK/1fkRl5IQ7HDpAUZviWaQp + j9tfr9r9xW0bMw== ) +y.dyn.example.net. 7200 IN A 1.2.3.5 + 7200 RRSIG A 7 4 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + S1l/dM/Ez91B4Py7mI/GESjgqccGIwi9clyc + Vj3S40uF4dGaAgxoCDS0pMvyS0k7ir0g1qbK + /csopbL0wHSaVg== ) +z.dyn.example.net. 7200 IN A 1.2.3.6 + 7200 RRSIG A 7 4 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + SgorWJQS6SiDvv6KRmWQEcUaaCkMCHZDcSMx + JiOT84ygkUBCzwTykQskoNtbUSIfAASU3lE7 + e31RZotcxlkirQ== ) +A54T6DKFVU4QCAFFNJ0KEU0FH0I4OJSN.dyn.example.net. 7200 IN NSEC3 1 0 10 76931F AJHVGTICN6K0VDA53GCHFMT219SRRQLM A RRSIG + 7200 RRSIG NSEC3 7 4 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + hp879kZpD/Qe+d4FoanRewI4CXMuTOMcao5G + S7quT3mr+Mgi1nrSSz+/IBhlzCipziFjY42a + TNt8FoYo9Z8irw== ) +AJHVGTICN6K0VDA53GCHFMT219SRRQLM.dyn.example.net. 7200 IN NSEC3 1 0 10 76931F FQ7RBG86KRMACA1NAAKP2KQRQALBA0C7 A RRSIG + 7200 RRSIG NSEC3 7 4 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + 1MC5bqNXkVG4gaFKJQJBG7v4ZKOht6EJEkUZ + nAwTF2Nw5mWFFMBbOwVMtbJFA+ewHrebB6cK + FitvPi3yLDW8aA== ) +FQ7RBG86KRMACA1NAAKP2KQRQALBA0C7.dyn.example.net. 7200 IN NSEC3 1 0 10 76931F I7A7A184GGMI35K1E3IR650LKO7NOB5R A AAAA RRSIG + 7200 RRSIG NSEC3 7 4 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + 7Y+yhH11EojLDu43C8dCuD6D0F4RZYUt9J0+ + KUfRVUMhftYsMl6G2qgkfsgJE+FG1Nj/nI+b + pO7VSJGfV5Za4A== ) +I7A7A184GGMI35K1E3IR650LKO7NOB5R.dyn.example.net. 7200 IN NSEC3 1 0 10 76931F IMQ912BREQP1POLAH3RMONG3UED541AS A RRSIG + 7200 RRSIG NSEC3 7 4 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + K0ggT6yH7z1YshOb08se84cRWvWWeQFdMTDG + XhA/2UEamfE1NHetPuYzJZQdrVPeX3tgjCjS + Jmb3YuSE1XD3zQ== ) +IMQ912BREQP1POLAH3RMONG3UED541AS.dyn.example.net. 7200 IN NSEC3 1 0 10 76931F S3USV4M1HLVJ8F88EDSG8N9PVQRQ20N7 A RRSIG + 7200 RRSIG NSEC3 7 4 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + mQoG3VBXfi7u2+zlmJttsGaStP3WvDPDQ99T + l2ha4zmpZPd1JUKHMXYTLTlUuWAq7BcS9MUn + hfhXcmSEr96K1Q== ) +S3USV4M1HLVJ8F88EDSG8N9PVQRQ20N7.dyn.example.net. 7200 IN NSEC3 1 0 10 76931F T320G5LC07QE1BLR074KORIJTG9DPTI9 A RRSIG + 7200 RRSIG NSEC3 7 4 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + 0/TWe9HMZiA+yW0oLHkYKeIXrrXU/1ec8XDy + cbZM1IGPjHlMEjKKorZgx983FuiyKFLa97+3 + bB3abnKo7e2yRQ== ) +T320G5LC07QE1BLR074KORIJTG9DPTI9.dyn.example.net. 7200 IN NSEC3 1 0 10 76931F A54T6DKFVU4QCAFFNJ0KEU0FH0I4OJSN NS SOA RRSIG DNSKEY NSEC3PARAM + 7200 RRSIG NSEC3 7 4 7200 20100308085946 ( + 20100302085946 30323 dyn.example.net. + BXRjHUGEmoz1cMAXSCmfFVe6+qCYVyivjeAT + 7hPcfB8iS2ck8Sq/CjOAKBu0BeSBim+9Oduu + kKNL3thgyMPcug== ) diff --git a/contrib/zkt-1.1.2/examples/flat/dyn.example.net/zone.org b/contrib/zkt-1.1.2/examples/flat/dyn.example.net/zone.org new file mode 100644 index 0000000000..c536fc8744 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/dyn.example.net/zone.org @@ -0,0 +1,30 @@ +;----------------------------------------------------------------- +; +; @(#) dyn.example.net/zone.org +; +;----------------------------------------------------------------- + +$TTL 7200 + +@ IN SOA ns1.example.net. hostmaster.example.net. ( + 1 ; Serial + 43200 ; Refresh + 1800 ; Retry + 2W ; Expire + 7200 ) ; Minimum + + IN NS ns1.example.net. + IN NS ns2.example.net. + +ns1 IN A 1.0.0.5 + IN AAAA 2001:db8::53 +ns2 IN A 1.2.0.6 + +localhost IN A 127.0.0.1 + +x IN A 1.2.3.4 +y IN A 1.2.3.5 +z IN A 1.2.3.6 + +$INCLUDE dnskey.db + diff --git a/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+02957.key b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+02957.key new file mode 100644 index 0000000000..0c30120724 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+02957.key @@ -0,0 +1,3 @@ +;% generationtime=20110125190230 +;% lifetime=63d +example.net. IN DNSKEY 256 3 8 BQEAAAAB7desjYpHAzsGmTzPFFuG4KGIG7ne8tII7DIMRIFaxuSYbQz0 kwC61utqnqzcgCXJQiKJxpKBt/Ikaf2K4JW0gQ== diff --git a/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+02957.published b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+02957.published new file mode 100644 index 0000000000..8ffbe72315 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+02957.published @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 8 (RSASHA256) +Modulus: 7desjYpHAzsGmTzPFFuG4KGIG7ne8tII7DIMRIFaxuSYbQz0kwC61utqnqzcgCXJQiKJxpKBt/Ikaf2K4JW0gQ== +PublicExponent: AQAAAAE= +PrivateExponent: IVO4lg5Ev/f/GpSRfYuXmUMH3qrv5Cr+ZAMqT+xGNJdyvlMAVV0ZDZehj/ar8brkm+sdrJ3LepVTEz0vLXPCgQ== +Prime1: /Ru1X3jzyO19+aLhf/Hsu0WOdjn0MAWzKx0KwWPkxcs= +Prime2: 8I9Q89DvF0qZqkF9kVzZ4B1LYdHz3uhKaxD40vu4xWM= +Exponent1: fSAVRShndbuiQZtsVHyekvPH4Xjl1dJ3hF03O4InOAc= +Exponent2: JJDvU+0J0KXaBArxDjoblXTKWVC3kGnLR+2AEpxei7k= +Coefficient: RviZPpnVpS30oBPH1freoUgcXJ4bKnivP41BUxcVh4U= diff --git a/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+21605.key b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+21605.key new file mode 100644 index 0000000000..2dc28991da --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+21605.key @@ -0,0 +1,3 @@ +;% generationtime=20110125091121 +;% lifetime=84d +example.net. IN DNSKEY 256 3 8 BQEAAAABvX6JNSNXHzrqpKi2REOwcsAuGjWI1VCJlz1NzV/pIt9PqGnJ DqtlV3vxuy7fAu85Z5Syaikiyx/z2uT4VMCvxw== diff --git a/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+21605.private b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+21605.private new file mode 100644 index 0000000000..6cb1da9021 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+21605.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 8 (RSASHA256) +Modulus: vX6JNSNXHzrqpKi2REOwcsAuGjWI1VCJlz1NzV/pIt9PqGnJDqtlV3vxuy7fAu85Z5Syaikiyx/z2uT4VMCvxw== +PublicExponent: AQAAAAE= +PrivateExponent: a77DD9J85SYlVi2lIKdzfHFkqtTFvQjTiLih+sx3lnhefQ5N20ABJVpTMwMOoA5tiDanSmKkk7O+GJXvI6E+KQ== +Prime1: 7S87u5BoQFYbGZzGaBPAqznZt7X1g2J/qop4W9rziy0= +Prime2: zIbOBuf2onI1ThmHXGPQEdQoFoJx3GqTkYjzUQQOL0M= +Exponent1: YfyQEtL2twRiwb8RIlKR3OE/rhnfqZYr9dwgRa0qjAU= +Exponent2: x73r1pDdvUShLs8hvmY0soX6a2Dcbokdf1D82/iCDU8= +Coefficient: 1r/5mih7lqQx4ZIEcr8TmQWMscwDGk3eERsFuSYGt0c= diff --git a/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+52101.key b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+52101.key new file mode 100644 index 0000000000..8dca89403c --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+52101.key @@ -0,0 +1,3 @@ +;% generationtime=20100924112635 +;% lifetime=365d +example.net. IN DNSKEY 257 3 8 BQEAAAABC6qZRCQRp2qnmxvWal1kergOJ1xQ5wGD+HZFLEvsvD8sU0i1 BGJoeDK5N/07S7s0aYVdIViQ1/CmpqBgahnlOKAoMO3eYnTuFRE7HqJK 1CSN2+nvN1m+miz+vfSPSOLeP2u8GAwIJmq/gb78AWStvW6HAXrDfaiq vqb4MDZCvplachhyHfngVLFYI22tyivUmzN/pRBePYGQ1nVsK1cPYDPp 4Q== diff --git a/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+52101.private b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+52101.private new file mode 100644 index 0000000000..d95a4f6c29 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+52101.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 8 (RSASHA256) +Modulus: C6qZRCQRp2qnmxvWal1kergOJ1xQ5wGD+HZFLEvsvD8sU0i1BGJoeDK5N/07S7s0aYVdIViQ1/CmpqBgahnlOKAoMO3eYnTuFRE7HqJK1CSN2+nvN1m+miz+vfSPSOLeP2u8GAwIJmq/gb78AWStvW6HAXrDfaiqvqb4MDZCvplachhyHfngVLFYI22tyivUmzN/pRBePYGQ1nVsK1cPYDPp4Q== +PublicExponent: AQAAAAE= +PrivateExponent: A3MjVh+KkQuwpnsGnr/xPRs8PfwUIDu7NYQVKpQAttLnZPOEXsjPniy3QuBpIMnnBCbxYaOV0ctiYQOx6vU8qprrSD8OfXXI8OhBNgExvw/Bsfki3MQINAHX0wY9juuIoMLKdqcMpsUC6ILE4FSkcc+jVFbTrDqjQgDDykkpABrlG1SUz51hLOZMAz2vu8QE8m57LaPUPpRhNPf4J2dDfkX/KQ== +Prime1: A3lFNBrVdcJBUq0ekPjtEZ0xCOTgSgUHAB+KJkdpiB0tV0jYf1Yaj7Kr98pKIM8jaZOhQnEKhAD947h4XG6IuxgraCNWonOyt5Yo9WjXFHzK0w== +Prime2: A1vFf9Tp7MxblYWLsFUsMZxXVRxPpeoGtwmNm24k5bUPpH6/B7Yd8DcE6O3cYyHcShq8sZcuOuPhNkGwgg7IMRABXcLyCXqoEKvy0nhnbKCf+w== +Exponent1: AQKRURkK7K15jiVVpw4nhd7Qtck1GkZon10UCQ5p2iE+weL+qhzi5L9u5mXLVaeGffwGkMkU6wvj5KSAuEiJr08+AxWfLy3Tf1fbiaiimPGDNQ== +Exponent2: AfnXuwDet4BuUGa8EHswqADRk0XeWtxztKQ48YOh5Q5/3rauIIMm+6ERfu0gWfnkYaRNamKSXMDVC5PUQHT33u0gGnopMipao6xICXGxbrGhCQ== +Coefficient: AYM1htjFUUAPKrVoajGJF+wLlQHBR3vrylKNpT5IFqr6Qczw54kfhx9n/18vIvtGIpj07xSEIfgBf+itZIRxPOwphkwaJXmHZKpYHpEvdqiyjA== diff --git a/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+56360.depreciated b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+56360.depreciated new file mode 100644 index 0000000000..b9d28076dd --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+56360.depreciated @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 8 (RSASHA256) +Modulus: 2IOedrEUxH0Mxn3f24ZP9b5r+SHcFyFZ2vXNIqmuILVO40MrW+R4H0UsQURAfKTFZeka2EsC7CEIyuEgkloDBQ== +PublicExponent: AQAAAAE= +PrivateExponent: FzC3Jdpl35o/UUyvZ/7sc8BRpfDuIgMnHA1a9WwxZz20Tqki3snE/Nz4ePNNv/5LGrzFlOnPtEd1GT2biUKzVQ== +Prime1: /4YvvO0nbMJxZ4dHbYKl2pGe0hSgEUYnTNnuVbSEKrM= +Prime2: 2OrV7XGOYCMXr/WIrD0NCBnqU1tsizPQNMIjwXuuV2c= +Exponent1: 63ub+oH78z6TercHscYOS7HpYttDzC1YV3oupGyRNDs= +Exponent2: A4HpxW8K6ivUb2RbKDBaze8ivr5u41hJPsbn4FQzB3E= +Coefficient: Lz1Gg/PtC9HOrhFORXlzzkzb+5PeFIGq43mtGx7oAUo= diff --git a/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+56360.key b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+56360.key new file mode 100644 index 0000000000..db374735ca --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/example.net/Kexample.net.+008+56360.key @@ -0,0 +1,3 @@ +;% generationtime=20100924112635 +;% lifetime=84d +example.net. IN DNSKEY 256 3 8 BQEAAAAB2IOedrEUxH0Mxn3f24ZP9b5r+SHcFyFZ2vXNIqmuILVO40Mr W+R4H0UsQURAfKTFZeka2EsC7CEIyuEgkloDBQ== diff --git a/contrib/zkt-1.1.2/examples/flat/example.net/dnskey.db b/contrib/zkt-1.1.2/examples/flat/example.net/dnskey.db new file mode 100644 index 0000000000..07ef6ee945 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/example.net/dnskey.db @@ -0,0 +1,36 @@ +; +; !!! Don't edit this file by hand. +; !!! It will be generated by zkt-signer. +; +; Last generation time Jan 25 2011 20:02:30 +; + +; *** List of Key Signing Keys *** +; example.net. tag=52101 algo=RSASHA256 generated Sep 24 2010 13:26:35 +example.net. 14400 IN DNSKEY 257 3 8 ( + BQEAAAABC6qZRCQRp2qnmxvWal1kergOJ1xQ5wGD+HZFLEvsvD8sU0i1 + BGJoeDK5N/07S7s0aYVdIViQ1/CmpqBgahnlOKAoMO3eYnTuFRE7HqJK + 1CSN2+nvN1m+miz+vfSPSOLeP2u8GAwIJmq/gb78AWStvW6HAXrDfaiq + vqb4MDZCvplachhyHfngVLFYI22tyivUmzN/pRBePYGQ1nVsK1cPYDPp + 4Q== + ) ; key id = 52101 + +; *** List of Zone Signing Keys *** +; example.net. tag=21605 algo=RSASHA256 generated Jan 25 2011 19:39:25 +example.net. 14400 IN DNSKEY 256 3 8 ( + BQEAAAABvX6JNSNXHzrqpKi2REOwcsAuGjWI1VCJlz1NzV/pIt9PqGnJ + DqtlV3vxuy7fAu85Z5Syaikiyx/z2uT4VMCvxw== + ) ; key id = 21605 + +; example.net. tag=56360 algo=RSASHA256 generated Jan 25 2011 19:39:25 +example.net. 14400 IN DNSKEY 256 3 8 ( + BQEAAAAB2IOedrEUxH0Mxn3f24ZP9b5r+SHcFyFZ2vXNIqmuILVO40Mr + W+R4H0UsQURAfKTFZeka2EsC7CEIyuEgkloDBQ== + ) ; key id = 56360 + +; example.net. tag=2957 algo=RSASHA256 generated Jan 25 2011 20:02:30 +example.net. 14400 IN DNSKEY 256 3 8 ( + BQEAAAAB7desjYpHAzsGmTzPFFuG4KGIG7ne8tII7DIMRIFaxuSYbQz0 + kwC61utqnqzcgCXJQiKJxpKBt/Ikaf2K4JW0gQ== + ) ; key id = 2957 + diff --git a/contrib/zkt/examples/flat/example.net/dnssec.conf b/contrib/zkt-1.1.2/examples/flat/example.net/dnssec.conf similarity index 73% rename from contrib/zkt/examples/flat/example.net/dnssec.conf rename to contrib/zkt-1.1.2/examples/flat/example.net/dnssec.conf index ea85a8b7b1..aaef586834 100644 --- a/contrib/zkt/examples/flat/example.net/dnssec.conf +++ b/contrib/zkt-1.1.2/examples/flat/example.net/dnssec.conf @@ -1,2 +1,3 @@ Key_Algo: RSASHA256 # (Algorithm ID 8) NSEC3: OPTOUT +ZSKpermanent: true diff --git a/contrib/zkt/examples/flat/example.net/z.db b/contrib/zkt-1.1.2/examples/flat/example.net/z.db similarity index 100% rename from contrib/zkt/examples/flat/example.net/z.db rename to contrib/zkt-1.1.2/examples/flat/example.net/z.db diff --git a/contrib/zkt/examples/flat/example.net/zktlog-example.net. b/contrib/zkt-1.1.2/examples/flat/example.net/zktlog-example.net. similarity index 52% rename from contrib/zkt/examples/flat/example.net/zktlog-example.net. rename to contrib/zkt-1.1.2/examples/flat/example.net/zktlog-example.net. index 3363cabe43..a205675b97 100644 --- a/contrib/zkt/examples/flat/example.net/zktlog-example.net. +++ b/contrib/zkt-1.1.2/examples/flat/example.net/zktlog-example.net. @@ -272,3 +272,241 @@ 2010-03-11 23:53:27.856: debug: Run cmd "cd ./example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -A -3 67AA7F -C -g -p -d ../keysets -o example.net. -e +518400 zone.db K*.private 2>&1" 2010-03-11 23:53:27.920: debug: Cmd dnssec-signzone return: "zone.db.signed" 2010-03-11 23:53:27.920: debug: Signing completed after 0s. +2010-07-05 08:15:24.179: debug: Check RFC5011 status +2010-07-05 08:15:24.179: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-07-05 08:15:24.179: debug: Check KSK status +2010-07-05 08:15:24.179: warning: "example.net.": lifetime of key signing key 8406 exceeded since 4w5d12h49m44s +2010-07-05 08:15:24.179: debug: Check ZSK status +2010-07-05 08:15:24.179: debug: Lifetime(1209600 +/-150 sec) of active key 36257 exceeded (8081384 sec) +2010-07-05 08:15:24.179: debug: ->waiting for published key +2010-07-05 08:15:24.179: notice: "example.net.": lifetime of zone signing key 36257 exceeded since 11w2d12h49m44s: ZSK rollover deferred: waiting for published key +2010-07-05 08:15:24.179: debug: New key for publishing needed +2010-07-05 08:15:24.278: debug: ->creating new key 48476 +2010-07-05 08:15:24.278: info: "example.net.": new key 48476 generated for publishing +2010-07-05 08:15:24.278: debug: Re-signing necessary: Modfied zone key set +2010-07-05 08:15:24.278: notice: "example.net.": re-signing triggered: Modfied zone key set +2010-07-05 08:15:24.278: debug: Writing key file "./example.net/dnskey.db" +2010-07-05 08:15:24.278: debug: Incrementing serial number in file "./example.net/zone.db" +2010-07-05 08:15:24.278: debug: Signing zone "example.net." +2010-07-05 08:15:24.278: debug: Run cmd "cd ./example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -A -3 5816F0 -C -g -p -d ../keysets -o example.net. -e +518400 zone.db K*.private 2>&1" +2010-07-05 08:15:24.315: debug: Cmd dnssec-signzone return: "zone.db.signed" +2010-07-05 08:15:24.315: debug: Signing completed after 0s. +2010-07-05 08:15:28.174: debug: Check RFC5011 status +2010-07-05 08:15:28.174: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-07-05 08:15:28.174: debug: Check KSK status +2010-07-05 08:15:28.174: warning: "example.net.": lifetime of key signing key 8406 exceeded since 4w5d12h49m48s +2010-07-05 08:15:28.174: debug: Check ZSK status +2010-07-05 08:15:28.174: debug: Lifetime(1209600 +/-150 sec) of active key 36257 exceeded (8081388 sec) +2010-07-05 08:15:28.174: debug: ->waiting for published key +2010-07-05 08:15:28.174: notice: "example.net.": lifetime of zone signing key 36257 exceeded since 11w2d12h49m48s: ZSK rollover deferred: waiting for published key +2010-07-05 08:15:28.174: debug: Re-signing not necessary! +2010-07-05 08:15:28.174: debug: Check if there is a parent file to copy +2010-07-05 08:15:58.502: debug: Check RFC5011 status +2010-07-05 08:15:58.502: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-07-05 08:15:58.503: debug: Check KSK status +2010-07-05 08:15:58.503: warning: "example.net.": lifetime of key signing key 8406 exceeded since 4w5d12h50m18s +2010-07-05 08:15:58.503: debug: Check ZSK status +2010-07-05 08:15:58.503: debug: Lifetime(1209600 +/-150 sec) of active key 36257 exceeded (8081418 sec) +2010-07-05 08:15:58.503: debug: ->waiting for published key +2010-07-05 08:15:58.503: notice: "example.net.": lifetime of zone signing key 36257 exceeded since 11w2d12h50m18s: ZSK rollover deferred: waiting for published key +2010-07-05 08:15:58.503: debug: Re-signing not necessary! +2010-07-05 08:15:58.503: debug: Check if there is a parent file to copy +2010-07-05 08:16:04.937: debug: Check RFC5011 status +2010-07-05 08:16:04.937: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-07-05 08:16:04.937: debug: Check KSK status +2010-07-05 08:16:04.937: warning: "example.net.": lifetime of key signing key 8406 exceeded since 4w5d12h50m24s +2010-07-05 08:16:04.937: debug: Check ZSK status +2010-07-05 08:16:04.937: debug: Lifetime(1209600 +/-150 sec) of active key 36257 exceeded (8081424 sec) +2010-07-05 08:16:04.937: debug: ->waiting for published key +2010-07-05 08:16:04.937: notice: "example.net.": lifetime of zone signing key 36257 exceeded since 11w2d12h50m24s: ZSK rollover deferred: waiting for published key +2010-07-05 08:16:04.937: debug: Re-signing necessary: Option -f +2010-07-05 08:16:04.937: notice: "example.net.": re-signing triggered: Option -f +2010-07-05 08:16:04.937: debug: Writing key file "./example.net/dnskey.db" +2010-07-05 08:16:04.937: debug: Incrementing serial number in file "./example.net/zone.db" +2010-07-05 08:16:04.937: debug: Signing zone "example.net." +2010-07-05 08:16:04.937: debug: Run cmd "cd ./example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -A -3 C58544 -C -g -p -d ../keysets -o example.net. -e +518400 zone.db K*.private 2>&1" +2010-07-05 08:16:04.993: debug: Cmd dnssec-signzone return: "zone.db.signed" +2010-07-05 08:16:04.993: debug: Signing completed after 0s. +2010-07-05 08:16:33.604: debug: Check RFC5011 status +2010-07-05 08:16:33.604: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-07-05 08:16:33.604: debug: Check KSK status +2010-07-05 08:16:33.604: warning: "example.net.": lifetime of key signing key 8406 exceeded since 4w5d12h50m53s +2010-07-05 08:16:33.604: debug: Check ZSK status +2010-07-05 08:16:33.604: debug: Lifetime(1209600 +/-150 sec) of active key 36257 exceeded (8081453 sec) +2010-07-05 08:16:33.604: debug: ->waiting for published key +2010-07-05 08:16:33.604: notice: "example.net.": lifetime of zone signing key 36257 exceeded since 11w2d12h50m53s: ZSK rollover deferred: waiting for published key +2010-07-05 08:16:33.604: debug: Re-signing necessary: Option -f +2010-07-05 08:16:33.604: notice: "example.net.": re-signing triggered: Option -f +2010-07-05 08:16:33.604: debug: Writing key file "./example.net/dnskey.db" +2010-07-05 08:16:33.605: debug: Incrementing serial number in file "./example.net/zone.db" +2010-07-05 08:16:33.605: debug: Signing zone "example.net." +2010-07-05 08:16:33.605: debug: Run cmd "cd ./example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -A -3 FCB8E2 -C -g -p -d ../keysets -o example.net. -e +518400 zone.db K*.private 2>&1" +2010-07-05 08:16:33.648: debug: Cmd dnssec-signzone return: "zone.db.signed" +2010-07-05 08:16:33.648: debug: Signing completed after 0s. +2010-07-30 01:30:55.411: debug: Check RFC5011 status +2010-07-30 01:30:55.411: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-07-30 01:30:55.411: debug: Check KSK status +2010-07-30 01:30:55.411: debug: Check ZSK status +2010-07-30 01:30:55.411: debug: Lifetime(1209600 +/-150 sec) of active key 36257 exceeded (2130473 sec) +2010-07-30 01:30:55.411: debug: ->depreciate it +2010-07-30 01:30:55.411: debug: ->activate published key 48476 +2010-07-30 01:30:55.411: notice: "example.net.": lifetime of zone signing key 36257 exceeded: ZSK rollover done +2010-07-30 01:30:55.411: debug: New key for publishing needed +2010-07-30 01:30:55.493: debug: ->creating new key 1775 +2010-07-30 01:30:55.493: info: "example.net.": new key 1775 generated for publishing +2010-07-30 01:30:55.493: debug: Re-signing necessary: Modfied zone key set +2010-07-30 01:30:55.493: notice: "example.net.": re-signing triggered: Modfied zone key set +2010-07-30 01:30:55.493: debug: Writing key file "./example.net/dnskey.db" +2010-07-30 01:30:55.493: debug: Incrementing serial number in file "./example.net/zone.db" +2010-07-30 01:30:55.493: debug: Signing zone "example.net." +2010-07-30 01:30:55.494: debug: Run cmd "cd ./example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -A -3 3723BA -C -g -p -d ../keysets -o example.net. -e +518400 zone.db K*.private 2>&1" +2010-07-30 01:30:55.563: debug: Cmd dnssec-signzone return: "zone.db.signed" +2010-07-30 01:30:55.563: debug: Signing completed after 0s. +2010-08-26 22:52:09.539: debug: Check RFC5011 status +2010-08-26 22:52:09.539: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-08-26 22:52:09.539: debug: Check KSK status +2010-08-26 22:52:09.539: debug: Check ZSK status +2010-08-26 22:52:09.539: debug: Lifetime(29100 sec) of depreciated key 36257 exceeded (2409674 sec) +2010-08-26 22:52:09.539: info: "example.net.": old ZSK 36257 removed +2010-08-26 22:52:09.572: debug: ->remove it +2010-08-26 22:52:09.572: debug: Lifetime(1209600 +/-150 sec) of active key 48476 exceeded (2409674 sec) +2010-08-26 22:52:09.572: debug: ->depreciate it +2010-08-26 22:52:09.572: debug: ->activate published key 1775 +2010-08-26 22:52:09.572: notice: "example.net.": lifetime of zone signing key 48476 exceeded: ZSK rollover done +2010-08-26 22:52:09.572: debug: New key for publishing needed +2010-08-26 22:52:09.640: debug: ->creating new key 26477 +2010-08-26 22:52:09.640: info: "example.net.": new key 26477 generated for publishing +2010-08-26 22:52:09.640: debug: Re-signing necessary: Modfied zone key set +2010-08-26 22:52:09.640: notice: "example.net.": re-signing triggered: Modfied zone key set +2010-08-26 22:52:09.640: debug: Writing key file "./example.net/dnskey.db" +2010-08-26 22:52:09.641: debug: Incrementing serial number in file "./example.net/zone.db" +2010-08-26 22:52:09.641: debug: Signing zone "example.net." +2010-08-26 22:52:09.641: debug: Run cmd "cd ./example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -A -3 2F41F9 -C -g -p -d ../keysets -o example.net. -e +518400 zone.db K*.private 2>&1" +2010-08-26 22:52:09.704: debug: Cmd dnssec-signzone return: "zone.db.signed" +2010-08-26 22:52:09.704: debug: Signing completed after 0s. +2010-08-26 22:56:02.938: debug: Check RFC5011 status +2010-08-26 22:56:02.938: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-08-26 22:56:02.938: debug: Check KSK status +2010-08-26 22:56:02.938: debug: Check ZSK status +2010-08-26 22:56:02.938: debug: Re-signing not necessary! +2010-08-26 22:56:02.938: debug: Check if there is a parent file to copy +2010-08-26 23:06:00.593: debug: Check RFC5011 status +2010-08-26 23:06:00.593: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-08-26 23:06:00.593: debug: Check KSK status +2010-08-26 23:06:00.593: debug: Check ZSK status +2010-08-26 23:06:00.593: debug: New key for publishing needed +2010-08-26 23:06:00.631: debug: ->creating new key 18026 +2010-08-26 23:06:00.631: info: "example.net.": new key 18026 generated for publishing +2010-08-26 23:06:00.631: debug: Re-signing necessary: Modfied zone key set +2010-08-26 23:06:00.631: notice: "example.net.": re-signing triggered: Modfied zone key set +2010-08-26 23:06:00.631: debug: Writing key file "./example.net/dnskey.db" +2010-08-26 23:06:00.631: debug: Incrementing serial number in file "./example.net/zone.db" +2010-08-26 23:06:00.631: debug: Signing zone "example.net." +2010-08-26 23:06:00.631: debug: Run cmd "cd ./example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -A -3 5EA89E -C -g -p -d ../keysets -o example.net. -e +518400 zone.db K*.private 2>&1" +2010-08-26 23:06:00.672: debug: Cmd dnssec-signzone return: "zone.db.signed" +2010-08-26 23:06:00.672: debug: Signing completed after 0s. +2010-08-26 23:11:33.808: debug: Check RFC5011 status +2010-08-26 23:11:33.808: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-08-26 23:11:33.809: debug: Check KSK status +2010-08-26 23:11:33.809: debug: Check ZSK status +2010-08-26 23:11:33.809: debug: Re-signing not necessary! +2010-08-26 23:11:33.809: debug: Check if there is a parent file to copy +2010-08-26 23:12:51.012: debug: Check RFC5011 status +2010-08-26 23:12:51.012: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-08-26 23:12:51.012: debug: Check KSK status +2010-08-26 23:12:51.012: debug: Check ZSK status +2010-08-26 23:12:51.012: debug: Re-signing not necessary! +2010-08-26 23:12:51.012: debug: Check if there is a parent file to copy +2010-08-26 23:23:47.886: debug: Check RFC5011 status +2010-08-26 23:23:47.886: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-08-26 23:23:47.886: debug: Check KSK status +2010-08-26 23:23:47.886: debug: Check ZSK status +2010-08-26 23:23:47.886: debug: Re-signing not necessary! +2010-08-26 23:23:47.886: debug: Check if there is a parent file to copy +2010-08-26 23:50:15.724: debug: Check RFC5011 status +2010-08-26 23:50:15.724: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-08-26 23:50:15.724: debug: Check KSK status +2010-08-26 23:50:15.724: debug: Check ZSK status +2010-08-26 23:50:15.725: debug: Re-signing not necessary! +2010-08-26 23:50:15.725: debug: Check if there is a parent file to copy +2010-08-26 23:50:55.124: debug: Check RFC5011 status +2010-08-26 23:50:55.124: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-08-26 23:50:55.124: debug: Check KSK status +2010-08-26 23:50:55.124: debug: Check ZSK status +2010-08-26 23:50:55.124: debug: Re-signing not necessary! +2010-08-26 23:50:55.124: debug: Check if there is a parent file to copy +2010-08-26 23:51:46.719: debug: Check RFC5011 status +2010-08-26 23:51:46.719: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-08-26 23:51:46.719: debug: Check KSK status +2010-08-26 23:51:46.719: debug: Check ZSK status +2010-08-26 23:51:46.719: debug: Re-signing not necessary! +2010-08-26 23:51:46.719: debug: Check if there is a parent file to copy +2010-08-26 23:54:22.824: debug: Check RFC5011 status +2010-08-26 23:54:22.824: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-08-26 23:54:22.824: debug: Check KSK status +2010-08-26 23:54:22.824: debug: Check ZSK status +2010-08-26 23:54:22.824: debug: Re-signing not necessary! +2010-08-26 23:54:22.825: debug: Check if there is a parent file to copy +2010-08-26 23:55:00.018: debug: Check RFC5011 status +2010-08-26 23:55:00.018: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-08-26 23:55:00.018: debug: Check KSK status +2010-08-26 23:55:00.018: debug: Check ZSK status +2010-08-26 23:55:00.018: debug: New key for pre-publishing needed +2010-08-26 23:55:00.110: debug: ->creating new key 18293 +2010-08-26 23:55:00.110: info: "example.net.": new key 18293 generated for pre-publishing +2010-08-26 23:55:00.110: debug: Re-signing necessary: Modfied zone key set +2010-08-26 23:55:00.110: notice: "example.net.": re-signing triggered: Modfied zone key set +2010-08-26 23:55:00.110: debug: Writing key file "./example.net/dnskey.db" +2010-08-26 23:55:00.110: debug: Incrementing serial number in file "./example.net/zone.db" +2010-08-26 23:55:00.110: debug: Signing zone "example.net." +2010-08-26 23:55:00.111: debug: Run cmd "cd ./example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -A -3 EBE919 -C -g -p -d ../keysets -o example.net. -e +518400 zone.db K*.private 2>&1" +2010-08-26 23:55:00.168: debug: Cmd dnssec-signzone return: "zone.db.signed" +2010-08-26 23:55:00.169: debug: Signing completed after 0s. +2010-08-26 23:56:17.466: debug: Check RFC5011 status +2010-08-26 23:56:17.466: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-08-26 23:56:17.466: debug: Check KSK status +2010-08-26 23:56:17.466: debug: Check ZSK status +2010-08-26 23:56:17.466: debug: Re-signing necessary: Modfied zone key set +2010-08-26 23:56:17.466: notice: "example.net.": re-signing triggered: Modfied zone key set +2010-08-26 23:56:17.466: debug: Writing key file "./example.net/dnskey.db" +2010-08-26 23:56:17.467: debug: Incrementing serial number in file "./example.net/zone.db" +2010-08-26 23:56:17.467: debug: Signing zone "example.net." +2010-08-26 23:56:17.467: debug: Run cmd "cd ./example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -A -3 A876E5 -C -g -p -d ../keysets -o example.net. -e +518400 zone.db K*.private 2>&1" +2010-08-26 23:56:17.531: debug: Cmd dnssec-signzone return: "zone.db.signed" +2010-08-26 23:56:17.531: debug: Signing completed after 0s. +2010-08-26 23:57:00.178: debug: Check RFC5011 status +2010-08-26 23:57:00.178: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-08-26 23:57:00.178: debug: Check KSK status +2010-08-26 23:57:00.178: debug: Check ZSK status +2010-08-26 23:57:00.178: debug: Re-signing not necessary! +2010-08-26 23:57:00.178: debug: Check if there is a parent file to copy +2010-10-21 14:01:35.546: debug: Check RFC5011 status +2010-10-21 14:01:35.546: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-10-21 14:01:35.546: debug: Check KSK status +2010-10-21 14:01:35.546: debug: Check ZSK status +2010-10-21 14:01:35.546: debug: Re-signing necessary: re-signing interval (2d) reached +2010-10-21 14:01:35.546: notice: "example.net.": re-signing triggered: re-signing interval (2d) reached +2010-10-21 14:01:35.546: debug: Writing key file "./example.net/dnskey.db" +2010-10-21 14:01:35.607: debug: Incrementing serial number in file "./example.net/zone.db" +2010-10-21 14:01:35.607: debug: Signing zone "example.net." +2010-10-21 14:01:35.607: debug: Run cmd "cd ./example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -A -3 9FC981 -C -g -p -d ../keysets -o example.net. -e +518400 zone.db K*.private 2>&1" +2010-10-21 14:01:35.761: debug: Cmd dnssec-signzone return: "zone.db.signed" +2010-10-21 14:01:35.761: debug: Signing completed after 0s. +2010-10-21 14:02:09.209: debug: Check RFC5011 status +2010-10-21 14:02:09.209: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-10-21 14:02:09.209: debug: Check KSK status +2010-10-21 14:02:09.209: debug: Check ZSK status +2010-10-21 14:02:09.209: debug: Re-signing not necessary! +2010-10-21 14:02:09.209: debug: Check if there is a parent file to copy +2010-10-21 14:05:36.170: debug: Check RFC5011 status +2010-10-21 14:05:36.170: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-10-21 14:05:36.170: debug: Check KSK status +2010-10-21 14:05:36.170: debug: Check ZSK status +2010-10-21 14:05:36.170: debug: Re-signing not necessary! +2010-10-21 14:05:36.170: debug: Check if there is a parent file to copy +2010-10-21 14:30:43.892: debug: Check RFC5011 status +2010-10-21 14:30:43.892: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-10-21 14:30:43.892: debug: Check KSK status +2010-10-21 14:30:43.892: debug: Check ZSK status +2010-10-21 14:30:43.892: debug: Re-signing not necessary! +2010-10-21 14:30:43.892: debug: Check if there is a parent file to copy diff --git a/contrib/zkt-1.1.2/examples/flat/example.net/zone.db b/contrib/zkt-1.1.2/examples/flat/example.net/zone.db new file mode 100644 index 0000000000..1dda246202 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/example.net/zone.db @@ -0,0 +1,43 @@ +;----------------------------------------------------------------- +; +; @(#) example.net/zone.db +; +;----------------------------------------------------------------- + +$TTL 7200 + +; Ensure that the serial number below is left +; justified in a field of at least 10 chars!! +; 0123456789; +; It's also possible to use the date format e.g. 2005040101 +@ IN SOA ns1.example.net. hostmaster.example.net. ( + 386 ; Serial + 43200 ; Refresh + 1800 ; Retry + 2W ; Expire + 7200 ) ; Minimum + + IN NS ns1.example.net. + IN NS ns2.example.net. + +ns1 IN A 1.0.0.5 + IN AAAA 2001:db8::53 +ns2 IN A 1.2.0.6 + +localhost IN A 127.0.0.1 + +a IN A 1.2.3.1 +b IN MX 10 a +;c IN A 1.2.3.2 +d IN A 1.2.3.3 + IN AAAA 2001:0db8::3 + +; Delegation to secure zone; The DS resource record will +; be added by dnssec-signzone automatically if the +; keyset-sub.example.net file is present (run dnssec-signzone +; with option -g or use the dnssec-signer tool) ;-) +sub IN NS ns1.example.net. + +; this file will contain all the zone keys +$INCLUDE dnskey.db + diff --git a/contrib/zkt-1.1.2/examples/flat/example.net/zone.db.signed b/contrib/zkt-1.1.2/examples/flat/example.net/zone.db.signed new file mode 100644 index 0000000000..8f45df3387 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/example.net/zone.db.signed @@ -0,0 +1,169 @@ +; File written on Thu Oct 21 14:01:35 2010 +; dnssec_signzone version 9.7.2-P2 +example.net. 7200 IN SOA ns1.example.net. hostmaster.example.net. ( + 384 ; serial + 43200 ; refresh (12 hours) + 1800 ; retry (30 minutes) + 1209600 ; expire (2 weeks) + 7200 ; minimum (2 hours) + ) + 7200 RRSIG SOA 8 2 7200 20101027110135 ( + 20101021110135 56360 example.net. + f+HC41CGvNmlXSvPzzMbtVreNYKWyBhvbeb+ + NUSvbBfuSlVt6VbyPUBYSe5Vg1QJO3YKu0ZR + Pw5Y9TNCaWqZCA== ) + 7200 NS ns1.example.net. + 7200 NS ns2.example.net. + 7200 RRSIG NS 8 2 7200 20101027110135 ( + 20101021110135 56360 example.net. + aQpW5SQJ8Yx7++QWtRWMDoV+3OPjgTRC0PQC + zns3MTbpk2wIlhE7hqty+b+1EktEoMzmx73u + 5Fu0OPKO+2PS5w== ) + 3600 DNSKEY 256 3 8 ( + BQEAAAAB2IOedrEUxH0Mxn3f24ZP9b5r+SHc + FyFZ2vXNIqmuILVO40MrW+R4H0UsQURAfKTF + Zeka2EsC7CEIyuEgkloDBQ== + ) ; key id = 56360 + 3600 DNSKEY 257 3 8 ( + BQEAAAABC6qZRCQRp2qnmxvWal1kergOJ1xQ + 5wGD+HZFLEvsvD8sU0i1BGJoeDK5N/07S7s0 + aYVdIViQ1/CmpqBgahnlOKAoMO3eYnTuFRE7 + HqJK1CSN2+nvN1m+miz+vfSPSOLeP2u8GAwI + Jmq/gb78AWStvW6HAXrDfaiqvqb4MDZCvpla + chhyHfngVLFYI22tyivUmzN/pRBePYGQ1nVs + K1cPYDPp4Q== + ) ; key id = 52101 + 3600 RRSIG DNSKEY 8 2 3600 20101027110135 ( + 20101021110135 52101 example.net. + BlWP6PoxZFRZoLav7/+yPEgNIss17oxEJZtB + rVSiVb0BfwhL96KJ1uIOhK9r1+Tj8w3Ed7Oi + pocSTkZueV3OxFkBgSQAgc1JeUQTOVKYe80L + UFjl7UzV0eITIV1DE/QqWTBBblxjXF3Egy6O + 6/9IrD65LWOGnLFFOSUZQ9IU8jFX/zqq5FWQ + Sta2/tQkzhq5F42qw3dRBNsoUC1bQ38UsYSk + SQ== ) + 3600 RRSIG DNSKEY 8 2 3600 20101027110135 ( + 20101021110135 56360 example.net. + VXJh+xZt8/5Eeo8oQyI89nXGJ0bWeBN25kpw + asam+qpoKsH6g8qJRyL3mEwIFOaud2mlQx9y + cdv42Vf3kfY71w== ) + 0 NSEC3PARAM 1 0 10 9FC981 + 0 RRSIG NSEC3PARAM 8 2 0 20101027110135 ( + 20101021110135 56360 example.net. + Fr4DrVORiEYUVCBmlRzjcEaKQ2VymMiMeJfd + gSWJzTzXbcuBbXDCfBRdph96Nz1xFvdOWvFn + xXxVOXW996AfEw== ) +a.example.net. 7200 IN A 1.2.3.1 + 7200 RRSIG A 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + ZAuaFsvYdV1i4EqIgQoSzpkhMFJpJOOPIG9h + RXTT+LAUSFjOrFx2ovSgnySSiUV/LOsIV7bj + 08ZkIzSPYKi4Ow== ) +b.example.net. 7200 IN MX 10 a.example.net. + 7200 RRSIG MX 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + SEIMAVtIT/2TGxkS2NFMRQfrUROKO1pbxYcS + FHImCGhWILb1E7qQ0saLi9QTMftCwRmYtJ4w + aDwAukjuLXOAnA== ) +d.example.net. 7200 IN A 1.2.3.3 + 7200 RRSIG A 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + 1URwzkjdIhBCBtBWV9aUhJQ3yFwqwgscvcVN + 9dvNqH5g7xLz+maqdeva065z0AkO5Et/9809 + tm/0X2g0wQcoMQ== ) + 7200 AAAA 2001:db8::3 + 7200 RRSIG AAAA 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + fIUOcVYR9Ut+iWzE+R3N01bzLJ0gpSI1E0y0 + cqEGpaU8mbgwnm4tAh57GKs8XZBbLEOH2zO8 + 5WTEjWHpKjqx3Q== ) +localhost.example.net. 7200 IN A 127.0.0.1 + 7200 RRSIG A 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + iIfD1pCP+uHs1RarezGlZZhoyQ6R+3K3s6ba + xZZ5JCremDhFYPeMinRMjZSPos2QyEM1aHI8 + 2gXlxcb/y4+XRA== ) +ns1.example.net. 7200 IN A 1.0.0.5 + 7200 RRSIG A 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + xBwgaFNo7+s4n4KnyZPR+1CESNVvXwUZHroC + dkEcLo8EF7+rbzFdDooJvD8wzlpy2nhwjLOL + ZxIfgZfNgkVXBw== ) + 7200 AAAA 2001:db8::53 + 7200 RRSIG AAAA 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + uSuzZH2J+pwcP1PKKgrdJrwyvh1kpWBsprgd + 9h59q9HYKR56LPx/3iuW7oCAO5fBFTp9pvcK + BI6f+4cs1Qpp6g== ) +ns2.example.net. 7200 IN A 1.2.0.6 + 7200 RRSIG A 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + N+U/A0VJU9HWwk1j0CJtUN7Nw9g0A3oNeKP1 + 7YJ1p0H6QvgRHDe9w8oX3iCg+IEBS9oLdTer + DXsbWVlZNXjTSw== ) +sub.example.net. 7200 IN NS ns1.example.net. + 7200 DS 855 7 1 ( + 338E1808511D3E533F1C6B1DF27E0AABA8CC + 6FE8 ) + 7200 DS 855 7 2 ( + C07C1F2004ED12D40EEC82E4358BD8D2EDC1 + 99C8E6126DD293A8E402E591C98A ) + 7200 DS 33176 10 1 ( + B7D045F9D7176BD0D00AF389856D18C0E361 + C443 ) + 7200 DS 33176 10 2 ( + 627102FACA12A10C88F6C67915B720CC6888 + 7CF1C10BC3E8EB864160F1965A18 ) + 7200 RRSIG DS 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + N8A1y3qpsaJ0lP6d2I1y8YEuda7c2GY1kuCt + 9Mdao6oh7tL6XP2b/ELIBo6fsghfuW1KZfou + WkTbI4/HV5732g== ) +0SFBC13DNQA2CKBS24U09GPJMGD5QCF2.example.net. 7200 IN NSEC3 1 1 10 9FC981 16DIB0QP1341N7TSMI2MGCQ2MDNP6TFO NS SOA RRSIG DNSKEY NSEC3PARAM + 7200 RRSIG NSEC3 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + irEoMAQ1uehoU51rEkuM20++pBX8iPrFzQZk + 4VAe0AXbeMBphSh3oBB0I3p7w4UGXLuYR7MW + bDPNteuoui5QmQ== ) +16DIB0QP1341N7TSMI2MGCQ2MDNP6TFO.example.net. 7200 IN NSEC3 1 1 10 9FC981 222FFA4JCL3KC4NLGH9R685ISJKB205Q MX RRSIG + 7200 RRSIG NSEC3 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + 1rCPDG0uz8PbKQ98WLlu1R39HhKOrfjory5r + tTi/e3RA2IAksL8ZQaVW+EyRzLGSDM7TtciM + UEgK/utbE0WlqQ== ) +222FFA4JCL3KC4NLGH9R685ISJKB205Q.example.net. 7200 IN NSEC3 1 1 10 9FC981 AMEE10EPLHBGI9Q6ICVFSNVP2U0D0TVB A RRSIG + 7200 RRSIG NSEC3 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + 1jS0RwIW59DFCr2d+ghFW8yFdcaGJDCQFgVh + pNiTIijvvyiObt7EqfJJ5PPV8CqJsZEiIoh+ + JRDEuSSrKCU6eA== ) +AMEE10EPLHBGI9Q6ICVFSNVP2U0D0TVB.example.net. 7200 IN NSEC3 1 1 10 9FC981 BOS6983BFUCMFRIQF1QMC1U4AU37TR6O A AAAA RRSIG + 7200 RRSIG NSEC3 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + OHYj80ju8hKFNSDNj//yDIXgTKM2NUyRO2cs + K1knzM/3L/GvmEm5nvHNepxj+surAl6mmaiT + k2wl4DOdTml60w== ) +BOS6983BFUCMFRIQF1QMC1U4AU37TR6O.example.net. 7200 IN NSEC3 1 1 10 9FC981 D8S4S8KU5O1TCASTGO9FEHHGUGO696U4 A AAAA RRSIG + 7200 RRSIG NSEC3 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + HwT0gQ7fVc5TYTc/SDQw9zMPmlSwlEW3cmVk + mjIQANQPFi597frcuVt26xAoUB71TXgGp+62 + 3y2MyRs66kCrNg== ) +D8S4S8KU5O1TCASTGO9FEHHGUGO696U4.example.net. 7200 IN NSEC3 1 1 10 9FC981 DBLIJ0LAN19DVGU1E46BJ9R9SN5BRETC NS DS RRSIG + 7200 RRSIG NSEC3 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + R/YtEmQgd+tHTNQ8itKrFhy880QLYTpAVaER + 0dd9vITUKHG7Fhr67ACkWBOEec+d9kiL76cH + DHrDGZ+wKksLxg== ) +DBLIJ0LAN19DVGU1E46BJ9R9SN5BRETC.example.net. 7200 IN NSEC3 1 1 10 9FC981 H108GFD5147KMF1CLFQLQQBNSD733MPQ A RRSIG + 7200 RRSIG NSEC3 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + KTPX36NTHepXsZoUGwBTq6Qt86mSF4Z0hlaP + HbhF9A+BJwLx+Sg0ifX0qobfMwh+BZZQZ8E3 + nSSyA5sIJWL39Q== ) +H108GFD5147KMF1CLFQLQQBNSD733MPQ.example.net. 7200 IN NSEC3 1 1 10 9FC981 0SFBC13DNQA2CKBS24U09GPJMGD5QCF2 A RRSIG + 7200 RRSIG NSEC3 8 3 7200 20101027110135 ( + 20101021110135 56360 example.net. + dmGULq6gwCxRscDm0oCeFD6RnDkXWtaw85DO + UGwgczRooNDBkbD608EJgqDT+ds0IGwZazGq + ufB2hCiFNnNjyg== ) diff --git a/contrib/zkt-1.1.2/examples/flat/keysets/dlvset-sub.example.net. b/contrib/zkt-1.1.2/examples/flat/keysets/dlvset-sub.example.net. new file mode 100644 index 0000000000..5a70921e17 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/keysets/dlvset-sub.example.net. @@ -0,0 +1,4 @@ +sub.example.net.dlv.trusted-keys.de. IN DLV 42834 7 1 9660E85E9542C823D4E9860D778350AA5D8904E9 +sub.example.net.dlv.trusted-keys.de. IN DLV 42834 7 2 1337FB51C697B7CD20C8D6BBC498310588C78B3595FB53F35C871DBF EC86DAAE +sub.example.net.dlv.trusted-keys.de. IN DLV 48516 7 1 CC5E20F75F02BE11BC040960669A3F5058F30DC0 +sub.example.net.dlv.trusted-keys.de. IN DLV 48516 7 2 D124B0B50CF51780707FFBF91DC305617832C09E21F32F28B8A88EFB E1F03ACE diff --git a/contrib/zkt-1.1.2/examples/flat/keysets/dsset-dyn.example.net. b/contrib/zkt-1.1.2/examples/flat/keysets/dsset-dyn.example.net. new file mode 100644 index 0000000000..79b3a0d664 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/keysets/dsset-dyn.example.net. @@ -0,0 +1,2 @@ +dyn.example.net. IN DS 52935 7 1 C8B16DDC8AFC66AFAB2E9BB5DD6D047A393870A9 +dyn.example.net. IN DS 52935 7 2 56D089B139FEB68FB9D09038920E51DF067C4FCFE62D6C67C61395BC 24E7D425 diff --git a/contrib/zkt-1.1.2/examples/flat/keysets/dsset-example.net. b/contrib/zkt-1.1.2/examples/flat/keysets/dsset-example.net. new file mode 100644 index 0000000000..d473f2a844 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/keysets/dsset-example.net. @@ -0,0 +1,2 @@ +example.net. IN DS 52101 8 1 F362C7CD57C0D663B783B763564C00C40A85AA69 +example.net. IN DS 52101 8 2 0F94D302E97BBAFD0495E7C13B2428E8597084604053183DE9C8C4C3 EF2FAED1 diff --git a/contrib/zkt-1.1.2/examples/flat/keysets/dsset-sub.example.net. b/contrib/zkt-1.1.2/examples/flat/keysets/dsset-sub.example.net. new file mode 100644 index 0000000000..0ea7b3b917 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/keysets/dsset-sub.example.net. @@ -0,0 +1,4 @@ +sub.example.net. IN DS 855 7 1 338E1808511D3E533F1C6B1DF27E0AABA8CC6FE8 +sub.example.net. IN DS 855 7 2 C07C1F2004ED12D40EEC82E4358BD8D2EDC199C8E6126DD293A8E402 E591C98A +sub.example.net. IN DS 33176 10 1 B7D045F9D7176BD0D00AF389856D18C0E361C443 +sub.example.net. IN DS 33176 10 2 627102FACA12A10C88F6C67915B720CC68887CF1C10BC3E8EB864160 F1965A18 diff --git a/contrib/zkt-1.1.2/examples/flat/keysets/keyset-dyn.example.net. b/contrib/zkt-1.1.2/examples/flat/keysets/keyset-dyn.example.net. new file mode 100644 index 0000000000..8d1b1d55c2 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/keysets/keyset-dyn.example.net. @@ -0,0 +1,8 @@ +$ORIGIN . +dyn.example.net 7200 IN DNSKEY 257 3 7 ( + AwEAAeqEDYgA5lns1VsMJiZfTWMEguameVmO + oBYx8s1uLzmS/3APsh1eWCeoBgAjRry1tpM/ + bPowyuygE4H0LpzNQLm9RbjDmpDN8Gwi3AjE + nG4HCT58TuAVxjiefN+vb1pvyFlAL58YOkuG + f9tG/NJMNc+XrULAU1ey2dT9Fh+SCVO3 + ) ; key id = 52935 diff --git a/contrib/zkt-1.1.2/examples/flat/keysets/keyset-example.net. b/contrib/zkt-1.1.2/examples/flat/keysets/keyset-example.net. new file mode 100644 index 0000000000..4c5f301de1 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/keysets/keyset-example.net. @@ -0,0 +1,10 @@ +$ORIGIN . +example.net 7200 IN DNSKEY 257 3 8 ( + BQEAAAABC6qZRCQRp2qnmxvWal1kergOJ1xQ + 5wGD+HZFLEvsvD8sU0i1BGJoeDK5N/07S7s0 + aYVdIViQ1/CmpqBgahnlOKAoMO3eYnTuFRE7 + HqJK1CSN2+nvN1m+miz+vfSPSOLeP2u8GAwI + Jmq/gb78AWStvW6HAXrDfaiqvqb4MDZCvpla + chhyHfngVLFYI22tyivUmzN/pRBePYGQ1nVs + K1cPYDPp4Q== + ) ; key id = 52101 diff --git a/contrib/zkt-1.1.2/examples/flat/keysets/keyset-sub.example.net. b/contrib/zkt-1.1.2/examples/flat/keysets/keyset-sub.example.net. new file mode 100644 index 0000000000..29b0bcfc40 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/keysets/keyset-sub.example.net. @@ -0,0 +1,15 @@ +$ORIGIN . +sub.example.net 7200 IN DNSKEY 257 3 7 ( + AwEAAcN4oi+shB1ZNhIXtSBuhAJKDp95Bc4H + 3MyhMxUos7VWVrsAxNK8u900fdubtofcoLR4 + FAoaPpX7LhQ1OPh+9RR4VIYrwilGkf2ZtZh0 + URwOruYqvJAIf6ZTxyakaUaY5m0ABl1learg + +XhjBHcMz3Lvx4Opnw5qsM+vnqJT15vd + ) ; key id = 855 + 7200 IN DNSKEY 257 3 10 ( + BQEAAAABug/pvRR/mv4qDN3gWFRiir/6UNpn + uBuVC4z7xeaNk/KdvcdDibLrSZaGfcq7no3c + PvRsJ/U7S6VvYXFZNaXvqJ66ZGcCtImIoaCZ + IQboz3hFelJb/62KqZWcj1anv7+LmfYpuA1U + JCWpFriWYhzuT3q98lG/c7XqiX79Ytoy6P0= + ) ; key id = 33176 diff --git a/contrib/zkt-1.1.2/examples/flat/named.conf b/contrib/zkt-1.1.2/examples/flat/named.conf new file mode 100644 index 0000000000..f672fc6315 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/named.conf @@ -0,0 +1,111 @@ +/***************************************************************** +** +** #(@) named.conf (c) 6. May 2004 (hoz) +** +*****************************************************************/ + +/***************************************************************** +** logging options +*****************************************************************/ +logging { + channel "named-log" { + file "/var/log/named" versions 3 size 2m; + print-time yes; + print-category yes; + print-severity yes; + severity info; + }; + channel "resolver-log" { + file "/var/log/named"; + print-time yes; + print-category yes; + print-severity yes; + severity debug 1; + }; + channel "dnssec-log" { +# file "/var/log/named-dnssec" ; + file "/var/log/named" ; + print-time yes; + print-category yes; + print-severity yes; + severity debug 3; + }; + category "dnssec" { "dnssec-log"; }; + category "default" { "named-log"; }; + category "resolver" { "resolver-log"; }; + category "client" { "resolver-log"; }; + category "queries" { "resolver-log"; }; +}; + +/***************************************************************** +** name server options +*****************************************************************/ +options { + directory "."; + + dump-file "/var/log/named_dump.db"; + statistics-file "/var/log/named.stats"; + + listen-on-v6 { any; }; + + query-source address * port 53; + transfer-source * port 53; + notify-source * port 53; + + recursion yes; + dnssec-enable yes; + edns-udp-size 4096; + +# dnssec-lookaside "." trust-anchor "trusted-keys.de."; + + querylog yes; + +}; + +/***************************************************************** +** include shared secrets... +*****************************************************************/ +/** for control sessions ... **/ +controls { + inet 127.0.0.1 + allow { localhost; }; + inet ::1 + allow { localhost; }; +}; + +/***************************************************************** +** ... and trusted_keys +*****************************************************************/ +# include "trusted-keys.conf" ; + +/***************************************************************** +** root server hints and required 127 stuff +*****************************************************************/ +zone "." in { + type hint; + file "root.hint"; +}; + +zone "localhost" in { + type master; + file "localhost.zone"; +}; + +zone "0.0.127.in-addr.ARPA" in { + type master; + file "127.0.0.zone"; +}; + +#include "zone.conf"; + +zone "example.NET." in { + type master; + file "example.net/zone.db.signed"; + zone-statistics yes; +}; + +zone "sub.example.NET." in { + type master; + file "sub.example.net/zone.db.signed"; + zone-statistics no; +}; diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+005+24183.key b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+005+24183.key new file mode 100644 index 0000000000..c887acefec --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+005+24183.key @@ -0,0 +1,3 @@ +;% generationtime=20110125091121 +;% lifetime=365d +sub.example.net. IN DNSKEY 257 3 5 BQEAAAABCwsLhN2Fe4nAorCoXf8CU2c4QqxPyNDVOoGrOSw/u883bF0w hFeEDwQjnHD5xMwNvMk8gNJnxv2kp6lgUcx7CgC08VQD2ko9e4zLSvoR WqFZ57LXKDpKdNLuVHDA6RObDX1PG0wjeWTa2lXshlhGgnGnrQhnCjYl nnCCxgKdxwvRdLRpnqnpGCHRtj9THHOlkJuAC6bor4qlNlODIcDFBsFf +Q== diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+005+24183.private b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+005+24183.private new file mode 100644 index 0000000000..e959a857db --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+005+24183.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: CwsLhN2Fe4nAorCoXf8CU2c4QqxPyNDVOoGrOSw/u883bF0whFeEDwQjnHD5xMwNvMk8gNJnxv2kp6lgUcx7CgC08VQD2ko9e4zLSvoRWqFZ57LXKDpKdNLuVHDA6RObDX1PG0wjeWTa2lXshlhGgnGnrQhnCjYlnnCCxgKdxwvRdLRpnqnpGCHRtj9THHOlkJuAC6bor4qlNlODIcDFBsFf+Q== +PublicExponent: AQAAAAE= +PrivateExponent: BEip8I3ZrAekBP8C78C/uCkGVPhLKRUmRzrtHIw+v1winCPwresHjn3RYzkG1ZRe+976t472XQK7hTqUjCRz6sHdboDr9JB3XX3szZc8oIRN+mE4ubolYA6KsKsXNPFZCR/njFe9q6pgW83o9KFls3zmERI2Au4dgahvMBurAQd0ALgnDeWQ9D6sHduUVsE9y8QNj2ePxwMoqaa7z2YLNjNHgQ== +Prime1: A5oDBCAqjh1f1jvQp1QSlnnwcU8TkS3bZHvWsD2Mb8IDpUvEHgPtLk8B1mxOQ37X9r7Acv8qLaQghBNSKE/eQtI9xboJhzqAEXlGn3FMPHMJSQ== +Prime2: AxDwhsYfyz+524Ox+PF4S1RvKidLrFg+W+xvSxmX5hoFPtUVM6Rg5o1Gszb41YrRhOUOTu0EUg3s68F/H90Y8Z3upU5joDfDYt5irPEaIOjRMQ== +Exponent1: Af2chU+hAR/vDAfC+sRSYF/b6A8OgpV66oTymQ3vd9Epy0HtSPo6Pbp7ocI9NC0gXX8RpshsWuGY0Vp9Q1iNg/k0GcxNlmBhVbEICfUovKikQQ== +Exponent2: AeaYvLF2gEOPhE2A6SVd/wavTtozTK7MHUvGzxhUrzcQpr6Q9J+jt1KuQFy12SXtEx5Ksmb9X8HM8wSYp4LWoWDUT3dr6vm81TXk282DtDMPsQ== +Coefficient: Af+eH8CX1yPFLO/zkmGfl6O0jbTlaMLyCpVat/gcnuP99Njpir9T66c0AUYplmAU39gRp/Fes5v4Zg0k3oqMKDETqIDUAzLAw/jPtG4lleP93Q== diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+005+44660.key b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+005+44660.key new file mode 100644 index 0000000000..ced83af67f --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+005+44660.key @@ -0,0 +1,3 @@ +;% generationtime=20110125091121 +;% lifetime=84d +sub.example.net. IN DNSKEY 256 3 5 BQEAAAABn6df/D+TwBypmBlabmitCSWnYLJFa/8Kk3W7Zj+ODS/kJA6s QZIQiLUK0sd/dM+A8+qAVlgwgQDxkAiuwrc7Lw== diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+005+44660.private b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+005+44660.private new file mode 100644 index 0000000000..06e5bf5878 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+005+44660.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: n6df/D+TwBypmBlabmitCSWnYLJFa/8Kk3W7Zj+ODS/kJA6sQZIQiLUK0sd/dM+A8+qAVlgwgQDxkAiuwrc7Lw== +PublicExponent: AQAAAAE= +PrivateExponent: PG5iufxb7TEulI2ByOZ0XgY2PTGWg0S7yN4ac+sXC290afYP5ZHDaq95YVQk99951eB9qshc1kSZ/NBD+fNa+Q== +Prime1: zDTjPGm+Np3hO4B5bz3KJgFqi1KwsU7ZQ+lj+M91G9s= +Prime2: yCWuBVdxUKUebhrEcaLc7SRVXXxqtlzBOIF+o/oOSD0= +Exponent1: yEjJnrWAGD79aaNqjzo2vCM3Cnfl7KxZxIXSdRisHXc= +Exponent2: gJhrWsLDkyZq42RRAt7Krhvc0CUF0w50uzn6X8yqjLE= +Coefficient: LgMQFUiUSrbRtwKnzWmOo94ssIVB91TQIVQSVuuqvHQ= diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+00855.key b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+00855.key new file mode 100644 index 0000000000..29f7116891 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+00855.key @@ -0,0 +1,3 @@ +;% generationtime=20100924112625 +;% lifetime=7d +sub.example.net. IN DNSKEY 257 3 7 AwEAAcN4oi+shB1ZNhIXtSBuhAJKDp95Bc4H3MyhMxUos7VWVrsAxNK8 u900fdubtofcoLR4FAoaPpX7LhQ1OPh+9RR4VIYrwilGkf2ZtZh0URwO ruYqvJAIf6ZTxyakaUaY5m0ABl1learg+XhjBHcMz3Lvx4Opnw5qsM+v nqJT15vd diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+00855.private b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+00855.private new file mode 100644 index 0000000000..e3eec9739a --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+00855.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 7 (NSEC3RSASHA1) +Modulus: w3iiL6yEHVk2Ehe1IG6EAkoOn3kFzgfczKEzFSiztVZWuwDE0ry73TR925u2h9ygtHgUCho+lfsuFDU4+H71FHhUhivCKUaR/Zm1mHRRHA6u5iq8kAh/plPHJqRpRpjmbQAGXWV5quD5eGMEdwzPcu/Hg6mfDmqwz6+eolPXm90= +PublicExponent: AQAB +PrivateExponent: fNWHzqaAYTXeIEPfuuyZhdTB7fqeSGwhCNZSB0tNKZwQG7FsAaHi4GxrjFqvgajXQSoGskT8f1BAp0suLRT3cpKH/FXeYknuwGMETTKk+4zZ7LAcSqU6b/dQptYdBJK1IdwMJjEAf5XT5y3OpPUbcm+o/9KxuepPsxXpQnu8rUk= +Prime1: 8xZNFTO8y0gbq93Qo9Hg0BVxrR9byVBVg++p/7n5Qvr+bftE7FQ0OGbRCYksSf00jPbVBdzfn1IxlQL7Gipomw== +Prime2: zdrP9WaH7jYWbBuTEnsPDDcE1wHBNer2bHtGCvD6FFpCahP8zq//p2OvYEvljxXe2gqbzYASaeMd7c8EZeEo5w== +Exponent1: HjMxFGc/F0o4FdwS5adXdMKVQtrYfmQ6m4+U4S5rp0Sjg2pqH6o+aptrcPHXzMFmW/T2dioApjyB6G9cXt3R7Q== +Exponent2: ftqygGVYqsEF/ETZ0u+mjD5zaxOXvuQ2Sw+EUEXDtjsQ5lG+3peykbJqZosewZgWpoMXFAIyVrIwxVVnPmkMTQ== +Coefficient: GZcwPOtNNbsqM2Qw1oS9m4/rPwYp6iwDcSSnypmn1jliaDMZOEiHqEUZ223khlhJxlW21kQAtZGgL2kX1LETaQ== diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+34493.key b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+34493.key new file mode 100644 index 0000000000..6953e1918b --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+34493.key @@ -0,0 +1,3 @@ +;% generationtime=20100924112625 +;% lifetime=3d +sub.example.net. IN DNSKEY 256 3 7 AwEAAa5bMLD0fx/ZGgiuhgslScPhm3c3sbLKn5Kc9w63+VBcq5Bg9td+ pME6uVtNvvAsgjoE2ORcqULqPp6ITd7VpTE= diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+34493.private b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+34493.private new file mode 100644 index 0000000000..882df30742 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+34493.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 7 (NSEC3RSASHA1) +Modulus: rlswsPR/H9kaCK6GCyVJw+Gbdzexssqfkpz3Drf5UFyrkGD2136kwTq5W02+8CyCOgTY5FypQuo+nohN3tWlMQ== +PublicExponent: AQAB +PrivateExponent: p+LU2r9CnWcOA2gRWDAafEwDx+LP74nd523PEtQhc7eA9YL1d0w5DsxNUbGp1a2fuYCO/V1jew7E/PQkBOEHQQ== +Prime1: 1S2btDM6sqSVM66/V5x8T3d6tqLxZz/+0hP2064u68k= +Prime2: 0WE3l1yD6SzCKYaCHRdmOvMvzwcoooHOFu7nIqIv0ik= +Exponent1: SoSn4gTqZtoLYcabEkgcWDb+yWsKEbqYG91osbQ4qKk= +Exponent2: QHZO2DHqhtJ54LEBxBUdK08NzA5nK0kNezAIRzhpwqk= +Coefficient: c6ICoCH4ZQeCVuEn5HwBof93cBjc0A4s5AIOw3YhmYE= diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+55983.key b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+55983.key new file mode 100644 index 0000000000..3c2afbd8d5 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+55983.key @@ -0,0 +1,3 @@ +;% generationtime=20101127101703 +;% lifetime=7d +sub.example.net. IN DNSKEY 257 3 7 AwEAAbv0XLM9qAEncwc4HjBamccNu/z+gPmnsp4bFEdz6YgPtSSIdUA+ OChIBJg2fADBupHsmibB5E6IVHcuKO0OF4uiSv4FSk9p/2mioI9RxeSR xGQ6gds3DJBN8sw86LH8BjLynqY/Jw/D3BudvcDHJtz7HtCH0mNEL9eG hjzq+GW/ diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+55983.private b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+55983.private new file mode 100644 index 0000000000..ef53614a57 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+55983.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 7 (NSEC3RSASHA1) +Modulus: u/Rcsz2oASdzBzgeMFqZxw27/P6A+aeynhsUR3PpiA+1JIh1QD44KEgEmDZ8AMG6keyaJsHkTohUdy4o7Q4Xi6JK/gVKT2n/aaKgj1HF5JHEZDqB2zcMkE3yzDzosfwGMvKepj8nD8PcG529wMcm3Pse0IfSY0Qv14aGPOr4Zb8= +PublicExponent: AQAB +PrivateExponent: I3QCkGTO7fjM/82cFC7i1uNGVICFP5JcZOpitt+sa1fbKVr8EvQpj5+WDkgot9PTJ3dj1G+6av3YQOraGW0RD5hVfuuJD3B10e7wVuaYRwA1uF/Lj0UTjag5d1KV0L38Zj73jEhA50ZAqDKNykwV3Ir4mVlIH0t4AINYrL84vCE= +Prime1: +H9jAgtRG+/Co4e+ef8JKkiwFlM3deV1PUa8EjvnLuY5g3de+RARJQ5stDdHPik4xaau3sQB/5atI4zxDTqBNw== +Prime2: waELRgLV2acQzUQu1zbGWqucgItEmx1bg9SJhKatJpAA0dBGvU42rOMA+eKm47uRY2CZkNaJneiQFFbbIW2juQ== +Exponent1: j3Sq6aEy39fYG6Pf2HndBqYT0a+U0uD2f7t4E2a1naOXDEg7cblOzH+5TYij/kS525DQXxX0uWJ47Y8OEb72nQ== +Exponent2: iBfYI6I0iqF5Fr04qv2N1wbNni/Ezb2JqBQHgBvikbsfSFk6jy3dEhEPi5M5t9EK9C1eYkXYPgvK0PDnXgyAyQ== +Coefficient: oZYj4nmY+QE6/sOjBelpaEm7BgGasIIZqQN2D3DBpiVUmQDtJ6XTcpcdZ14IVsTIijvS7mXM+hzbCH/UG/pL0Q== diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+59870.key b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+59870.key new file mode 100644 index 0000000000..c17531fe28 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+59870.key @@ -0,0 +1,3 @@ +;% generationtime=20101127101703 +;% lifetime=3d +sub.example.net. IN DNSKEY 256 3 7 AwEAAcbKVFdrzJmGoQCMYf9vwxdKrGrLk86OqVHVlXAwoHgdGpAjsga0 FenJ7FwC4eqAxK0dUC86/dUX/YUFz0fBLo0= diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+59870.private b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+59870.private new file mode 100644 index 0000000000..ffa2fc4736 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+007+59870.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 7 (NSEC3RSASHA1) +Modulus: xspUV2vMmYahAIxh/2/DF0qsasuTzo6pUdWVcDCgeB0akCOyBrQV6cnsXALh6oDErR1QLzr91Rf9hQXPR8EujQ== +PublicExponent: AQAB +PrivateExponent: nuTaxYXE5HJX/rg3HJWYuuVVK4fNfS1K6b5u1F4J5fbzBR+NZnWpRWMG3qQ9rlMp1jZOKCKfmJPjrYpahjbQAQ== +Prime1: +Ns6U9aZkGqxp+tfNwwCueu6zyIyQZKgLGVPcEZpbK0= +Prime2: zH8uZiJTrlY39Az3+eiTMS4SGgBxAWeXlMC4DUrCJWE= +Exponent1: +CZrwERDNy4dX2ums5aHdWvqCTh5UsfqbrrLfxLHd7U= +Exponent2: Rz5Hu+1ZmfMPq0aZXcdZAFk8lTJyLDsa5AgAFyFkYgE= +Coefficient: Rf2NFyo0bBow/KT2fAww0ePV8X24wk2Y/TPKWn8a99Y= diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+010+07987.key b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+010+07987.key new file mode 100644 index 0000000000..a8af5c78e0 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+010+07987.key @@ -0,0 +1,3 @@ +;% generationtime=20101021120536 +;% lifetime=3d +sub.example.net. IN DNSKEY 256 3 10 BQEAAAABn8UTQYIEkX5bd7hPSpQ1VPJKNxl6iRQVozij1a5r4LcRPK3v mvMhZCOIvD3A1iym6hGnwkUHbmzpQx7W+J9uZbCtMA+NjnEwqR7Ac4WO 4ZJPovWjQhDpHuZzy6++9X5BY6GS2KSB6k5YE7Rtuc5SY+fIZhQnZ7Si fjGNJVWF98k= diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+010+07987.private b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+010+07987.private new file mode 100644 index 0000000000..a8d924e16c --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+010+07987.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 10 (RSASHA512) +Modulus: n8UTQYIEkX5bd7hPSpQ1VPJKNxl6iRQVozij1a5r4LcRPK3vmvMhZCOIvD3A1iym6hGnwkUHbmzpQx7W+J9uZbCtMA+NjnEwqR7Ac4WO4ZJPovWjQhDpHuZzy6++9X5BY6GS2KSB6k5YE7Rtuc5SY+fIZhQnZ7SifjGNJVWF98k= +PublicExponent: AQAAAAE= +PrivateExponent: JGn91bZcjzq8WiGhHg5kIsbDfb5kSpjhqbAypDkYPpby4T2Hd6rDqhRZMEZH5o7mC9tuzwwaY0jp7uZKiy0IZ62IqAUAsj/u1pjWh1TWQ7XrOIxkd2dNgkvvJ1sm7aAoDaSi/MrwinaFaqHoO0zmpMosBNL1parHedn5yWxeZQE= +Prime1: 0ANDDIRnVYwNkuKYZ+TbawYq7DLdixk3L01nNt8BHts7Q8WXACfj3dfHO3qB/dT/xxbUDYWMOTGQXpXN2p5SoQ== +Prime2: xKCziYPsyGD2yezOC9Awvy2vfb1Ev5zYAdXLSsbuy3sOGSJp7QiTuE+wazyUbkhhaKu5FpBnMdmFQgY2YK08KQ== +Exponent1: SxN8PWTIv5haN0Mz4DE+9lN9qCxEqeuu9644AcD4w1GvgQEKN+nR5nYHhrSAgjQchD0G52sTVAAg9RVjSN/RgQ== +Exponent2: CgqfFKLaSOmao8l4vmFyWjc1VWKSVHaVEOwYCqwFeXceni/OaN4ba5aXxhqxavj+M4/w2kURppUms00lkrv3QQ== +Coefficient: nnIoXkPAvUfT5ypPCg4sM+OnZ38I4BlIdnjrWcNl340TG83bSH4mdf9mkIfvjpBBue9fHQ7WPRnawIUiU3/iNQ== diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+010+33176.key b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+010+33176.key new file mode 100644 index 0000000000..73a16fd959 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+010+33176.key @@ -0,0 +1,3 @@ +;% generationtime=20101021113820 +;% lifetime=7d +sub.example.net. IN DNSKEY 257 3 10 BQEAAAABug/pvRR/mv4qDN3gWFRiir/6UNpnuBuVC4z7xeaNk/KdvcdD ibLrSZaGfcq7no3cPvRsJ/U7S6VvYXFZNaXvqJ66ZGcCtImIoaCZIQbo z3hFelJb/62KqZWcj1anv7+LmfYpuA1UJCWpFriWYhzuT3q98lG/c7Xq iX79Ytoy6P0= diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+010+33176.private b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+010+33176.private new file mode 100644 index 0000000000..b62d1620c0 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/Ksub.example.net.+010+33176.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 10 (RSASHA512) +Modulus: ug/pvRR/mv4qDN3gWFRiir/6UNpnuBuVC4z7xeaNk/KdvcdDibLrSZaGfcq7no3cPvRsJ/U7S6VvYXFZNaXvqJ66ZGcCtImIoaCZIQboz3hFelJb/62KqZWcj1anv7+LmfYpuA1UJCWpFriWYhzuT3q98lG/c7XqiX79Ytoy6P0= +PublicExponent: AQAAAAE= +PrivateExponent: IFVOvH94pIiUBAq8ix/GuYg0kLLpKFM0iBQ+j8OmyiZIKQUDSWSP7IU7UMFgh2DELdzwF6cTqBO5gjbesotzPvPny1/isM7N8Z1FN7j4/zBTDAXVHMYdcIZEC+UZkCEu6g206BnCCsLSQm1gcDFxkaqYtSD+I/dJ82YeWVM66OU= +Prime1: 5hNJZCTszlcCQvDmXffAjt3oV4qDd1HJDcknvcmtimRqVFIDgK8UcCD2DMI1PBA+SmPSSiSU3mo4y/YKjXBvQw== +Prime2: zwcHpDKsA5Pr9e+KcjFmZbNTCEqY2GiABxvOcmuqYvLf5pkjTkEiZm3pn23/eypzjpxnyDFzk6NM0HkKQkMivw== +Exponent1: ZDECG7FYUKBEtvsq1t1lNUkyH9LAYl1eEt1rpnPXXK/JDSy5tMQeq4iCJY8hy+BE/WlxYQQ3OUENqhvhLgtC6Q== +Exponent2: FifCGPMN4sIq/+rZC/F4AfEe8f0ZmTshsfVilVVkqUnavPahK9kk2jSEInk50CKpMqNCywF+fer/77+mxW7fCQ== +Coefficient: yvTbE7YdfrvskUqVo+/KjEH3cu0oYl99AshpIOeBaQ5sNJtuZzHA6UEnVY0rc5Apli7sRVSsrJSZSqBeD6hMdQ== diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/dlvset-sub.example.net. b/contrib/zkt-1.1.2/examples/flat/sub.example.net/dlvset-sub.example.net. new file mode 100644 index 0000000000..b9d0017467 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/dlvset-sub.example.net. @@ -0,0 +1,2 @@ +sub.example.net.dlv.trusted-keys.de. IN DLV 48516 7 1 CC5E20F75F02BE11BC040960669A3F5058F30DC0 +sub.example.net.dlv.trusted-keys.de. IN DLV 48516 7 2 D124B0B50CF51780707FFBF91DC305617832C09E21F32F28B8A88EFB E1F03ACE diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/dnskey.db b/contrib/zkt-1.1.2/examples/flat/sub.example.net/dnskey.db new file mode 100644 index 0000000000..c6ed4e8f0d --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/dnskey.db @@ -0,0 +1,68 @@ +; +; !!! Don't edit this file by hand. +; !!! It will be generated by zkt-signer. +; +; Last generation time Jan 25 2011 20:02:30 +; + +; *** List of Key Signing Keys *** +; sub.example.net. tag=855 algo=NSEC3RSASHA1 generated Sep 24 2010 13:26:25 +sub.example.net. 14400 IN DNSKEY 257 3 7 ( + AwEAAcN4oi+shB1ZNhIXtSBuhAJKDp95Bc4H3MyhMxUos7VWVrsAxNK8 + u900fdubtofcoLR4FAoaPpX7LhQ1OPh+9RR4VIYrwilGkf2ZtZh0URwO + ruYqvJAIf6ZTxyakaUaY5m0ABl1learg+XhjBHcMz3Lvx4Opnw5qsM+v + nqJT15vd + ) ; key id = 855 + +; sub.example.net. tag=33176 algo=RSASHA512 generated Oct 21 2010 13:38:20 +sub.example.net. 14400 IN DNSKEY 257 3 10 ( + BQEAAAABug/pvRR/mv4qDN3gWFRiir/6UNpnuBuVC4z7xeaNk/KdvcdD + ibLrSZaGfcq7no3cPvRsJ/U7S6VvYXFZNaXvqJ66ZGcCtImIoaCZIQbo + z3hFelJb/62KqZWcj1anv7+LmfYpuA1UJCWpFriWYhzuT3q98lG/c7Xq + iX79Ytoy6P0= + ) ; key id = 33176 + +; sub.example.net. tag=55983 algo=NSEC3RSASHA1 generated Nov 27 2010 11:17:03 +sub.example.net. 14400 IN DNSKEY 257 3 7 ( + AwEAAbv0XLM9qAEncwc4HjBamccNu/z+gPmnsp4bFEdz6YgPtSSIdUA+ + OChIBJg2fADBupHsmibB5E6IVHcuKO0OF4uiSv4FSk9p/2mioI9RxeSR + xGQ6gds3DJBN8sw86LH8BjLynqY/Jw/D3BudvcDHJtz7HtCH0mNEL9eG + hjzq+GW/ + ) ; key id = 55983 + +; sub.example.net. tag=24183 algo=RSASHA1 generated Jan 25 2011 10:11:21 +sub.example.net. 14400 IN DNSKEY 257 3 5 ( + BQEAAAABCwsLhN2Fe4nAorCoXf8CU2c4QqxPyNDVOoGrOSw/u883bF0w + hFeEDwQjnHD5xMwNvMk8gNJnxv2kp6lgUcx7CgC08VQD2ko9e4zLSvoR + WqFZ57LXKDpKdNLuVHDA6RObDX1PG0wjeWTa2lXshlhGgnGnrQhnCjYl + nnCCxgKdxwvRdLRpnqnpGCHRtj9THHOlkJuAC6bor4qlNlODIcDFBsFf + +Q== + ) ; key id = 24183 + +; *** List of Zone Signing Keys *** +; sub.example.net. tag=34493 algo=NSEC3RSASHA1 generated Sep 24 2010 13:26:25 +sub.example.net. 14400 IN DNSKEY 256 3 7 ( + AwEAAa5bMLD0fx/ZGgiuhgslScPhm3c3sbLKn5Kc9w63+VBcq5Bg9td+ + pME6uVtNvvAsgjoE2ORcqULqPp6ITd7VpTE= + ) ; key id = 34493 + +; sub.example.net. tag=7987 algo=RSASHA512 generated Oct 21 2010 14:05:36 +sub.example.net. 14400 IN DNSKEY 256 3 10 ( + BQEAAAABn8UTQYIEkX5bd7hPSpQ1VPJKNxl6iRQVozij1a5r4LcRPK3v + mvMhZCOIvD3A1iym6hGnwkUHbmzpQx7W+J9uZbCtMA+NjnEwqR7Ac4WO + 4ZJPovWjQhDpHuZzy6++9X5BY6GS2KSB6k5YE7Rtuc5SY+fIZhQnZ7Si + fjGNJVWF98k= + ) ; key id = 7987 + +; sub.example.net. tag=59870 algo=NSEC3RSASHA1 generated Nov 27 2010 11:17:03 +sub.example.net. 14400 IN DNSKEY 256 3 7 ( + AwEAAcbKVFdrzJmGoQCMYf9vwxdKrGrLk86OqVHVlXAwoHgdGpAjsga0 + FenJ7FwC4eqAxK0dUC86/dUX/YUFz0fBLo0= + ) ; key id = 59870 + +; sub.example.net. tag=44660 algo=RSASHA1 generated Jan 25 2011 10:11:21 +sub.example.net. 14400 IN DNSKEY 256 3 5 ( + BQEAAAABn6df/D+TwBypmBlabmitCSWnYLJFa/8Kk3W7Zj+ODS/kJA6s + QZIQiLUK0sd/dM+A8+qAVlgwgQDxkAiuwrc7Lw== + ) ; key id = 44660 + diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/dnssec.conf b/contrib/zkt-1.1.2/examples/flat/sub.example.net/dnssec.conf new file mode 100644 index 0000000000..f1f8dec394 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/dnssec.conf @@ -0,0 +1,7 @@ +ResignInterval: 1d # (86400 seconds) +SigValidity: 2d # (172800 seconds) +MaximumTTL: 90s # (90 seconds) +KSKlifetime: 1w # (604800 seconds) +KSKbits: 1024 +ZSKlifetime: 3d # (259200 seconds) +NSEC3: On # (On|Off|OptOut) diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/maxhexsalt b/contrib/zkt-1.1.2/examples/flat/sub.example.net/maxhexsalt new file mode 100644 index 0000000000..94bc5aff31 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/maxhexsalt @@ -0,0 +1 @@ +1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDE \ No newline at end of file diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/maxhexsalt+1 b/contrib/zkt-1.1.2/examples/flat/sub.example.net/maxhexsalt+1 new file mode 100644 index 0000000000..6f1f3b5ccb --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/maxhexsalt+1 @@ -0,0 +1 @@ +1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDF1234567890ABCDE1 \ No newline at end of file diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/zktlog-sub.example.net. b/contrib/zkt-1.1.2/examples/flat/sub.example.net/zktlog-sub.example.net. new file mode 100644 index 0000000000..e40bdad4fe --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/zktlog-sub.example.net. @@ -0,0 +1,48 @@ +2010-10-21 14:01:35.486: debug: Check RFC5011 status +2010-10-21 14:01:35.486: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-10-21 14:01:35.486: debug: Check KSK status +2010-10-21 14:01:35.486: debug: Check ZSK status +2010-10-21 14:01:35.486: debug: No active ZSK found: generate new one +2010-10-21 14:01:35.495: error: sub.example.net.": can't generate new ZSK +2010-10-21 14:01:35.495: debug: Re-signing necessary: Modfied zone key set +2010-10-21 14:01:35.496: notice: "sub.example.net.": re-signing triggered: Modfied zone key set +2010-10-21 14:01:35.496: debug: Writing key file "./sub.example.net/dnskey.db" +2010-10-21 14:01:35.496: debug: Incrementing serial number in file "./sub.example.net/zone.db" +2010-10-21 14:01:35.496: debug: Signing zone "sub.example.net." +2010-10-21 14:01:35.496: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -3 9FC981 -C -g -p -d ../keysets -o sub.example.net. -e +172800 zone.db K*.private 2>&1" +2010-10-21 14:01:35.546: debug: Cmd dnssec-signzone return: "dnssec-signzone: fatal: DNSSEC completeness test failed." +2010-10-21 14:01:35.546: error: "sub.example.net.": signing failed! +2010-10-21 14:02:09.146: debug: Check RFC5011 status +2010-10-21 14:02:09.146: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-10-21 14:02:09.146: debug: Check KSK status +2010-10-21 14:02:09.146: debug: Check ZSK status +2010-10-21 14:02:09.146: debug: No active ZSK found: generate new one +2010-10-21 14:02:09.156: error: sub.example.net.": can't generate new ZSK +2010-10-21 14:02:09.156: debug: Re-signing necessary: Modified keys +2010-10-21 14:02:09.156: notice: "sub.example.net.": re-signing triggered: Modified keys +2010-10-21 14:02:09.156: debug: Writing key file "./sub.example.net/dnskey.db" +2010-10-21 14:02:09.157: debug: Incrementing serial number in file "./sub.example.net/zone.db" +2010-10-21 14:02:09.157: debug: Signing zone "sub.example.net." +2010-10-21 14:02:09.157: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -3 BD326D -C -g -p -d ../keysets -o sub.example.net. -e +172800 zone.db K*.private 2>&1" +2010-10-21 14:02:09.208: debug: Cmd dnssec-signzone return: "dnssec-signzone: fatal: DNSSEC completeness test failed." +2010-10-21 14:02:09.208: error: "sub.example.net.": signing failed! +2010-10-21 14:05:35.988: debug: Check RFC5011 status +2010-10-21 14:05:35.988: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-10-21 14:05:35.988: debug: Check KSK status +2010-10-21 14:05:35.988: debug: Check ZSK status +2010-10-21 14:05:35.988: debug: No active ZSK found: generate new one +2010-10-21 14:05:36.091: info: "sub.example.net.": generated new ZSK 7987 +2010-10-21 14:05:36.091: debug: Re-signing necessary: Modfied zone key set +2010-10-21 14:05:36.091: notice: "sub.example.net.": re-signing triggered: Modfied zone key set +2010-10-21 14:05:36.091: debug: Writing key file "./sub.example.net/dnskey.db" +2010-10-21 14:05:36.091: debug: Incrementing serial number in file "./sub.example.net/zone.db" +2010-10-21 14:05:36.091: debug: Signing zone "sub.example.net." +2010-10-21 14:05:36.091: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -3 75DE06 -C -g -p -d ../keysets -o sub.example.net. -e +172800 zone.db K*.private 2>&1" +2010-10-21 14:05:36.170: debug: Cmd dnssec-signzone return: "zone.db.signed" +2010-10-21 14:05:36.170: debug: Signing completed after 0s. +2010-10-21 14:30:43.892: debug: Check RFC5011 status +2010-10-21 14:30:43.892: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2010-10-21 14:30:43.892: debug: Check KSK status +2010-10-21 14:30:43.892: debug: Check ZSK status +2010-10-21 14:30:43.892: debug: Re-signing not necessary! +2010-10-21 14:30:43.892: debug: Check if there is a parent file to copy diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/zone.db b/contrib/zkt-1.1.2/examples/flat/sub.example.net/zone.db new file mode 100644 index 0000000000..837535bcb2 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/zone.db @@ -0,0 +1,25 @@ +;----------------------------------------------------------------- +; +; @(#) sub.example.net/zone.db +; +;----------------------------------------------------------------- + +$TTL 7200 + +@ IN SOA ns1.example.net. hostmaster.example.net. ( + 8 ; Serial + 86400 ; Refresh (RIPE recommendation if NOTIFY is used) + 1800 ; Retry + 2W ; Expire + 7200 ) ; Minimum + + + IN NS ns1.example.net. + +$INCLUDE dnskey.db + +localhost IN A 127.0.0.1 + +a IN A 1.2.3.4 +b IN A 1.2.3.5 +c IN A 1.2.3.6 diff --git a/contrib/zkt-1.1.2/examples/flat/sub.example.net/zone.db.signed b/contrib/zkt-1.1.2/examples/flat/sub.example.net/zone.db.signed new file mode 100644 index 0000000000..4745d6b4f1 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/sub.example.net/zone.db.signed @@ -0,0 +1,216 @@ +; File written on Thu Oct 21 14:05:36 2010 +; dnssec_signzone version 9.7.2-P2 +sub.example.net. 7200 IN SOA ns1.example.net. hostmaster.example.net. ( + 6 ; serial + 86400 ; refresh (1 day) + 1800 ; retry (30 minutes) + 1209600 ; expire (2 weeks) + 7200 ; minimum (2 hours) + ) + 7200 RRSIG SOA 7 3 7200 20101023110536 ( + 20101021110536 34493 sub.example.net. + MgaHCyEt33DXRMiHMpZr4x52phpp8hdqu05a + bcQ7E2KGxpvsH8DtBDixo0WV73qDM45XT8mA + 9xLn3HBRSXP8Ag== ) + 7200 RRSIG SOA 10 3 7200 20101023110536 ( + 20101021110536 7987 sub.example.net. + H3B12qsYiBhrloBItfIOkakV6kUfFEhdplBv + T4n0rVihInOkC6SssFEMbe69rGvMgnzL8aCX + rIsYDT7z0fCD5mvdFJ+rsYFCAW35nlZil9Lc + xB27U+lMIngODjHiNShtjEXtKaQPKxbvbgSX + nkZ0joeWdMIEYhihgCvWc+A1mv4= ) + 7200 NS ns1.example.net. + 7200 RRSIG NS 7 3 7200 20101023110536 ( + 20101021110536 34493 sub.example.net. + QAt2BZsV7nxer/TFQLtQ/Xp8TYwiqqkmAcLa + pLf8wBWMXFTxz3O29QF+RBSdmLqeoCgW+Q5g + ygScSISe5nvKfw== ) + 7200 RRSIG NS 10 3 7200 20101023110536 ( + 20101021110536 7987 sub.example.net. + cZHqQnIA/fTFZx6LroJNWj9jPLxrnZtTHvlp + NqkTbLG5uu/+sljkOUOqHVqK9ubUESkRNP3u + Nl/oROMcgISsDWRcEOu4Vc48zBn/90vJK5WY + ZcXeGcp34pFMK7/03vEH4U1tZKc7Guvm3reh + gcfNBotu57wvctbjlqq3DM4axwI= ) + 3600 DNSKEY 256 3 7 ( + AwEAAa5bMLD0fx/ZGgiuhgslScPhm3c3sbLK + n5Kc9w63+VBcq5Bg9td+pME6uVtNvvAsgjoE + 2ORcqULqPp6ITd7VpTE= + ) ; key id = 34493 + 3600 DNSKEY 256 3 10 ( + BQEAAAABn8UTQYIEkX5bd7hPSpQ1VPJKNxl6 + iRQVozij1a5r4LcRPK3vmvMhZCOIvD3A1iym + 6hGnwkUHbmzpQx7W+J9uZbCtMA+NjnEwqR7A + c4WO4ZJPovWjQhDpHuZzy6++9X5BY6GS2KSB + 6k5YE7Rtuc5SY+fIZhQnZ7SifjGNJVWF98k= + ) ; key id = 7987 + 3600 DNSKEY 257 3 7 ( + AwEAAcN4oi+shB1ZNhIXtSBuhAJKDp95Bc4H + 3MyhMxUos7VWVrsAxNK8u900fdubtofcoLR4 + FAoaPpX7LhQ1OPh+9RR4VIYrwilGkf2ZtZh0 + URwOruYqvJAIf6ZTxyakaUaY5m0ABl1learg + +XhjBHcMz3Lvx4Opnw5qsM+vnqJT15vd + ) ; key id = 855 + 3600 DNSKEY 257 3 10 ( + BQEAAAABug/pvRR/mv4qDN3gWFRiir/6UNpn + uBuVC4z7xeaNk/KdvcdDibLrSZaGfcq7no3c + PvRsJ/U7S6VvYXFZNaXvqJ66ZGcCtImIoaCZ + IQboz3hFelJb/62KqZWcj1anv7+LmfYpuA1U + JCWpFriWYhzuT3q98lG/c7XqiX79Ytoy6P0= + ) ; key id = 33176 + 3600 RRSIG DNSKEY 7 3 3600 20101023110536 ( + 20101021110536 855 sub.example.net. + NcmO3PoVofXHe6EbmnSCkr4eTfuTkdtEQQWv + 8pbHY0Ze8NR4ISjzJf1zC4U4fJsYeS9AUL5A + 2l6qEWoY8cbPRdDnf2iKfHKTllXFubM6EtYF + aKmK38BU1Ldh6jdcJ0bFUN4cMPVhX9BA+yTM + Hm0EdYZvC6QICrlQBdJuyzS3FSA= ) + 3600 RRSIG DNSKEY 7 3 3600 20101023110536 ( + 20101021110536 34493 sub.example.net. + GLVb5YgQWtP2bHWBihGhCymm9P7pjDdN9s0c + 9nK6Pi8OWoa2uK7k/ebVXDNc/yBI/hp5Xsxs + x332lhi8AdMW3Q== ) + 3600 RRSIG DNSKEY 10 3 3600 20101023110536 ( + 20101021110536 7987 sub.example.net. + UwnLE8FmOtd0DbTXzv9QJZigJThWAw29ov6N + HnSI4cO4pyFRjiGee7+/u4DfKFUkzQp2ySIW + +jhGsF/b2TEpLyLSwY/r8iDhO0GkaU5t/tzr + wCX7HCmr6VAJaPpZhf/xLEh7pbB60jQmiHXy + 4tEfQtpkPx6ncQ95lcoN2ia43Ow= ) + 3600 RRSIG DNSKEY 10 3 3600 20101023110536 ( + 20101021110536 33176 sub.example.net. + HclPEAN+ii66jqPzYE4hbSnUNg1/xFfM0R/a + iVh40da5Wre0GzzfYouOdJegJoyDGsz+xEzN + g+RiUYFDg2cK9Y7HqX3T3nEtMMavRbb+4q93 + PRk0kZ9H/xjSqK+qTipCMz6IubOXZjzvK+sB + VOxv3uzhmR8WmKoVraB5uDeK+vA= ) + 0 NSEC3PARAM 1 0 10 75DE06 + 0 RRSIG NSEC3PARAM 7 3 0 20101023110536 ( + 20101021110536 34493 sub.example.net. + hPzjAlPJldxukEVzgVKHbJdGI/0M5JhvfOu5 + +s5+5mst1tp6goSpOxdyklpBSC4eJmPFQk2A + gWenAJCHr6s5NQ== ) + 0 RRSIG NSEC3PARAM 10 3 0 20101023110536 ( + 20101021110536 7987 sub.example.net. + hEjMFl/Znyvr73gN4fAvWHsy2Sxlga8L6xu+ + IffQTRiA0itHseM2G4TfAZju7g9HmFxSsCZO + EKdn3WwsyxBD0mfaBdHSaNrQu6EttiMyoMVu + WhiitsOAXB1iHRzE21jfZJpQSFBHPiNMCz1F + cQoRlBqYUWeyRMJN+wEHthuSpl0= ) +a.sub.example.net. 7200 IN A 1.2.3.4 + 7200 RRSIG A 7 4 7200 20101023110536 ( + 20101021110536 34493 sub.example.net. + oGoHPU1IgTXwKhHef6Dsq7X2r1eRbSK+8fsD + zPGfmYo4BMKBrTPiKvTapulXIWxNslLbJhoq + Mx3prAl4n0JbBw== ) + 7200 RRSIG A 10 4 7200 20101023110536 ( + 20101021110536 7987 sub.example.net. + ePqwuNrBwH2rkAFoHR1nHCIc9Daz/Hsze5R0 + x9p2GXujziIuvLPz9G7DpytY+pDpJr9m0djG + J1jcceazK11q53FN9gby2Tv39hEoyaySEoiy + cv1ArJaeppfeUgJmBp6GsHznz6amGXG0vig3 + 4I6tdWpwfbl+rnOUDAf5AIxUHEE= ) +b.sub.example.net. 7200 IN A 1.2.3.5 + 7200 RRSIG A 7 4 7200 20101023110536 ( + 20101021110536 34493 sub.example.net. + X2X5/rztMhu0Es2A7dsENoAf/sCTahSa6cPL + M4j/r9ofiV+tQDn8cnfnrArA5d9/wND+5Iv+ + /O1GOzwOhzhLHg== ) + 7200 RRSIG A 10 4 7200 20101023110536 ( + 20101021110536 7987 sub.example.net. + TxLKcfmsmHovdKvzgmqTOI5x1ve4VrLNxXnv + 0cBflqfHTTVH6glO1nsC9q15wI4xt3INq6fp + /+CRhIASy63i1UA5PPQ4UgxcgOTEuSgu51XJ + SVvxBatjzTVPWO5K+bNJRz9O7sDbFbKLuSIv + 94ZmQIpBERh5pLglmYESwcCwv/U= ) +c.sub.example.net. 7200 IN A 1.2.3.6 + 7200 RRSIG A 7 4 7200 20101023110536 ( + 20101021110536 34493 sub.example.net. + S1BC7yaofioxw9W6lH5EXOjGrj0nSCdbnwcX + orVRkaWq4Ic8rDsvmlL70UMLUwwUKv7cmUEH + 61KhLHI6L7bk0Q== ) + 7200 RRSIG A 10 4 7200 20101023110536 ( + 20101021110536 7987 sub.example.net. + NRiWhJ8oTAyyJUiJI9bBWDG/OzF0dQ6WqBES + pJq5LyN10EeHSX96xcgPHMdGw9VGqep1e9G4 + B+sYfmcsET7LdUNncyKS8Plvs/9rO7QW2lfE + S0gnoCmLe8PK8Z33Bh8k/tXjJjB5GpYCwXnn + WnBuKZk6KL6yr/BRz7SpmYYn7zY= ) +localhost.sub.example.net. 7200 IN A 127.0.0.1 + 7200 RRSIG A 7 4 7200 20101023110536 ( + 20101021110536 34493 sub.example.net. + jYhG4Tp8AxSnwl9bFIzNcLHj+MMi2QY8cW+U + Mbw2++3fDsDyrzV9qOAkemUTeTw+wX/z7Iu8 + wtPCTzy6oKPZew== ) + 7200 RRSIG A 10 4 7200 20101023110536 ( + 20101021110536 7987 sub.example.net. + F03HIz1yPabXrvyaByqN6tvGCThqI/FVZXl1 + l5oSJJ4gGE9wjtbgSbyMnQQ09Vp/FxZD5nk0 + zWYJXSyJCi1eWD3CV1xp6zbl2Z5jh6X70qpq + Z8mAj+tt8gFrlvR49doEnIKtz7Nupmk8VM0Q + ir091k0On6d6xkAaG2DdB6Cd8IY= ) +E23J36747M9QAHTBMRSQ0EHB5D8JF31O.sub.example.net. 7200 IN NSEC3 1 0 10 75DE06 GMMG72L8KNTF7A2QLCMLH1I5RG5V8RKK A RRSIG + 7200 RRSIG NSEC3 7 4 7200 20101023110536 ( + 20101021110536 34493 sub.example.net. + YnvMl6XcqOZq4T/nz688NADoYegQu6Ct1+wU + Abx5vuVLb5CkwK6cGTPazni2xZnNTiXiIi87 + dzLHGQTaup4xxg== ) + 7200 RRSIG NSEC3 10 4 7200 20101023110536 ( + 20101021110536 7987 sub.example.net. + P/8DdSZU4Ag3ibdsalE+FBDa7+a0W4R/jB5a + pqvmkox4fZB20k8MrMxn8hbHJOxFD4FAdOrm + Bc+ut45HYx4c0wE3WekmuBIkS5gWWGsvCqji + hquZMORyZjT9Tk/VezHXuJ9jMA4vCuPbqTsX + Y2liJS0Vzrr6rssF5Mz36OQrG/w= ) +GMMG72L8KNTF7A2QLCMLH1I5RG5V8RKK.sub.example.net. 7200 IN NSEC3 1 0 10 75DE06 H856ATS51TP5R6A4PJ4H623HBD22MMP8 A RRSIG + 7200 RRSIG NSEC3 7 4 7200 20101023110536 ( + 20101021110536 34493 sub.example.net. + IHxHqJw0w0yzAdM9Dc0wdH9t9vdqXO9Xxx7/ + CSyL+852/nuflS/a/+AwDyZhuMwqKR021/Jm + 0E2bTZvH8qNuGA== ) + 7200 RRSIG NSEC3 10 4 7200 20101023110536 ( + 20101021110536 7987 sub.example.net. + VssB9MTMT6Meh7pVOF0aWcpx6PLRR7z97Jf4 + LeWFPhw3w5BTWff4BL45omopYaMCDamqirYa + zmhlKyqE7qEtGop8fUiNmFdK5+cPhhGGVbhV + B+k7ZWC5H9fwI61owUG2btP+oLaOgJejXLqr + 27EnZ8aE2bmGdYcN1Ji8QtRWaXQ= ) +H856ATS51TP5R6A4PJ4H623HBD22MMP8.sub.example.net. 7200 IN NSEC3 1 0 10 75DE06 T9JU0DUS5QPJR2HUCAOK4CTRF8OFCVCJ A RRSIG + 7200 RRSIG NSEC3 7 4 7200 20101023110536 ( + 20101021110536 34493 sub.example.net. + LKo4fE/ql/oQCkZeNxNcT6o/201bdnpEvreO + EcOTjUGfGiJ5KCUH4dSz8aQFdVwBfJEmA0v1 + NpjbLSeDJ2ArNg== ) + 7200 RRSIG NSEC3 10 4 7200 20101023110536 ( + 20101021110536 7987 sub.example.net. + ePRVEMqfub0TQ7NciAg+PXzIBa2CJ8226mqn + wuSymuImvb5TJ6uwNX1b17WJ3XrXxE/mBbZ6 + LqpU3KNEsi0hb3mx9atSy9d3/oAi/A1QeC78 + y/LxyyYoIgoBrnQ6AF7zsqX1SWz+DjFl8E58 + uaZnYfL0q6RbGZ5cJxu1bhPw1Vo= ) +T9JU0DUS5QPJR2HUCAOK4CTRF8OFCVCJ.sub.example.net. 7200 IN NSEC3 1 0 10 75DE06 V5QI8VK5I93U0UCL19L7B0SU5SVTJQS7 NS SOA RRSIG DNSKEY NSEC3PARAM + 7200 RRSIG NSEC3 7 4 7200 20101023110536 ( + 20101021110536 34493 sub.example.net. + BZ8wR07wrdenmmNFWKhMGckWQwZlfVuZhULf + 4VZfWLo+8NFhDk6MjdVV3QrpEsF5XhR8r+0V + ZxU2ZsHWpcYbsw== ) + 7200 RRSIG NSEC3 10 4 7200 20101023110536 ( + 20101021110536 7987 sub.example.net. + TnOhLkcIl30DqXTbGMarRvLPfGbv/HHBG44E + 07Gpcq2M/+nbPW8A35sHsaalTi7Jdr870mk8 + XvvgUzoLlm200ssnGX+PAfzz7MyISqO2XBaa + k54+2A3V20Aecgk0sjkG8uS1vIcWmXqXUxcp + JpkNIio9S/WjTX85sVo+ug3qDYQ= ) +V5QI8VK5I93U0UCL19L7B0SU5SVTJQS7.sub.example.net. 7200 IN NSEC3 1 0 10 75DE06 E23J36747M9QAHTBMRSQ0EHB5D8JF31O A RRSIG + 7200 RRSIG NSEC3 7 4 7200 20101023110536 ( + 20101021110536 34493 sub.example.net. + VDvPAecgBeCvTDTaE7zA4TQR5jgOBTmygaWd + GyxEI9uOCXAocdMjrfNq+c/SIymog6CYXCcT + hbdOetaD3duYJw== ) + 7200 RRSIG NSEC3 10 4 7200 20101023110536 ( + 20101021110536 7987 sub.example.net. + BuJnVwod8SlcTwNnb8RPmhPDsycpRpmD69BZ + 778M9p3BvHkYyr8xbWP8+OmhO880V3dRdpqx + Hq0tyvarF8SVN8J7jMCZ1W9V2NxiLp50S/rN + sDkl9l4LzSClgELSeNTFdyA/22asyYZ5XO6N + t/f5BtsYe9W80n87cnAOmbAUIgg= ) diff --git a/contrib/zkt-1.1.2/examples/flat/zkt-ls b/contrib/zkt-1.1.2/examples/flat/zkt-ls new file mode 120000 index 0000000000..c513980564 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/zkt-ls @@ -0,0 +1 @@ +../zkt-ls.sh \ No newline at end of file diff --git a/contrib/zkt-1.1.2/examples/flat/zkt-signer b/contrib/zkt-1.1.2/examples/flat/zkt-signer new file mode 120000 index 0000000000..b5f367de78 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/zkt-signer @@ -0,0 +1 @@ +../zkt-signer.sh \ No newline at end of file diff --git a/contrib/zkt-1.1.2/examples/flat/zkt.log b/contrib/zkt-1.1.2/examples/flat/zkt.log new file mode 100644 index 0000000000..c9d749c876 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/zkt.log @@ -0,0 +1,423 @@ +2010-02-07 13:53:47.881: notice: ------------------------------------------------------------ +2010-02-07 13:53:47.881: notice: running ../../zkt-signer -v -v +2010-02-07 13:53:47.883: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-02-07 13:53:48.304: debug: +2010-02-07 13:53:48.304: debug: parsing zone "example.net." in dir "./example.net" +2010-02-07 13:53:48.305: debug: +2010-02-07 13:53:48.305: notice: end of run: 0 errors occured +2010-02-07 13:54:03.463: notice: ------------------------------------------------------------ +2010-02-07 13:54:03.464: notice: running ../../zkt-signer -r -v -v +2010-02-07 13:54:03.465: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-02-07 13:54:03.466: debug: +2010-02-07 13:54:03.466: debug: parsing zone "example.net." in dir "./example.net" +2010-02-07 13:54:03.466: debug: +2010-02-07 13:54:03.466: notice: end of run: 0 errors occured +2010-02-07 13:54:07.953: notice: ------------------------------------------------------------ +2010-02-07 13:54:07.953: notice: running ../../zkt-signer -f -r -v -v +2010-02-07 13:54:07.955: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-02-07 13:54:08.019: debug: +2010-02-07 13:54:08.019: debug: parsing zone "example.net." in dir "./example.net" +2010-02-07 13:54:08.139: debug: +2010-02-07 13:54:08.139: notice: end of run: 0 errors occured +2010-02-07 14:06:27.666: notice: ------------------------------------------------------------ +2010-02-07 14:06:27.666: notice: running ../../zkt-signer -r -v -v +2010-02-07 14:06:27.668: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-02-07 14:06:27.670: debug: +2010-02-07 14:06:27.670: debug: parsing zone "example.net." in dir "./example.net" +2010-02-07 14:06:27.671: debug: +2010-02-07 14:06:27.671: notice: end of run: 0 errors occured +2010-02-07 14:06:33.711: notice: ------------------------------------------------------------ +2010-02-07 14:06:33.711: notice: running ../../zkt-signer -f -r -v -v +2010-02-07 14:06:33.713: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-02-07 14:06:33.753: debug: +2010-02-07 14:06:33.753: debug: parsing zone "example.net." in dir "./example.net" +2010-02-07 14:06:33.797: debug: +2010-02-07 14:06:33.797: notice: end of run: 0 errors occured +2010-02-07 14:07:49.243: notice: ------------------------------------------------------------ +2010-02-07 14:07:49.243: notice: running ../../zkt-signer -d -r -v -v +2010-02-07 14:07:49.245: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-07 14:07:49.832: debug: +2010-02-07 14:07:49.832: notice: end of run: 1 error occured +2010-02-07 14:09:41.710: notice: ------------------------------------------------------------ +2010-02-07 14:09:41.710: notice: running ../../zkt-signer -d -r -v -v +2010-02-07 14:09:41.712: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-07 14:09:41.799: debug: +2010-02-07 14:09:41.799: notice: end of run: 1 error occured +2010-02-07 14:10:24.426: notice: ------------------------------------------------------------ +2010-02-07 14:10:24.427: notice: running ../../zkt-signer -d -v -v +2010-02-07 14:10:24.429: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-07 14:10:24.429: debug: +2010-02-07 14:10:24.429: notice: end of run: 0 errors occured +2010-02-07 14:11:00.715: notice: ------------------------------------------------------------ +2010-02-07 14:11:00.715: notice: running ../../zkt-signer -f -d -v -v +2010-02-07 14:11:00.717: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-07 14:11:00.803: debug: +2010-02-07 14:11:00.803: notice: end of run: 1 error occured +2010-02-07 15:11:02.629: notice: ------------------------------------------------------------ +2010-02-07 15:11:02.629: notice: running ../../zkt-signer -f -d -v -v +2010-02-07 15:11:02.630: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-07 15:11:03.799: debug: +2010-02-07 15:11:03.799: notice: end of run: 1 error occured +2010-02-07 15:15:02.094: notice: ------------------------------------------------------------ +2010-02-07 15:15:02.094: notice: running ../../zkt-signer -f -d -v -v +2010-02-07 15:15:02.095: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-07 15:15:02.270: debug: +2010-02-07 15:15:02.270: notice: end of run: 0 errors occured +2010-02-07 15:32:48.955: notice: ------------------------------------------------------------ +2010-02-07 15:32:48.955: notice: running ../../zkt-signer -f -d -v -v +2010-02-07 15:32:48.957: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-07 15:32:49.007: debug: +2010-02-07 15:32:49.007: notice: end of run: 0 errors occured +2010-02-07 15:38:31.400: notice: ------------------------------------------------------------ +2010-02-07 15:38:31.400: notice: running ../../zkt-signer -f -d -v -v +2010-02-07 15:38:31.402: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-07 15:38:31.456: debug: +2010-02-07 15:38:31.456: notice: end of run: 0 errors occured +2010-02-21 12:50:43.100: notice: ------------------------------------------------------------ +2010-02-21 12:50:43.100: notice: running ../../zkt-signer +2010-02-21 12:50:43.176: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-02-21 12:50:43.586: debug: +2010-02-21 12:50:43.586: debug: parsing zone "example.net." in dir "./example.net" +2010-02-21 12:50:43.733: debug: +2010-02-21 12:50:43.733: notice: end of run: 0 errors occured +2010-02-21 12:50:51.156: notice: ------------------------------------------------------------ +2010-02-21 12:50:51.156: notice: running ../../zkt-signer -v -v +2010-02-21 12:50:51.158: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-02-21 12:50:51.205: debug: +2010-02-21 12:50:51.205: debug: parsing zone "example.net." in dir "./example.net" +2010-02-21 12:50:51.205: debug: +2010-02-21 12:50:51.205: notice: end of run: 0 errors occured +2010-02-21 12:51:23.495: notice: ------------------------------------------------------------ +2010-02-21 12:51:23.495: notice: running ../../zkt-signer -v -v +2010-02-21 12:51:23.497: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-02-21 12:51:23.497: debug: +2010-02-21 12:51:23.497: debug: parsing zone "example.net." in dir "./example.net" +2010-02-21 12:51:23.497: debug: +2010-02-21 12:51:23.497: notice: end of run: 0 errors occured +2010-02-21 19:16:18.383: notice: ------------------------------------------------------------ +2010-02-21 19:16:18.383: notice: running ../../zkt-signer -v -v +2010-02-21 19:16:18.384: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-02-21 19:16:18.593: debug: +2010-02-21 19:16:18.594: debug: parsing zone "example.net." in dir "./example.net" +2010-02-21 19:16:18.594: debug: +2010-02-21 19:16:18.594: notice: end of run: 0 errors occured +2010-02-21 19:16:23.964: notice: ------------------------------------------------------------ +2010-02-21 19:16:23.964: notice: running ../../zkt-signer -d -v -v +2010-02-21 19:16:24.018: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-21 19:16:24.440: debug: +2010-02-21 19:16:24.440: notice: end of run: 0 errors occured +2010-02-21 19:32:05.895: notice: ------------------------------------------------------------ +2010-02-21 19:32:05.895: notice: running ../../zkt-signer -d -v -v +2010-02-21 19:32:05.896: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-21 19:32:05.897: debug: +2010-02-21 19:32:05.897: notice: end of run: 0 errors occured +2010-02-21 19:32:11.376: notice: ------------------------------------------------------------ +2010-02-21 19:32:11.376: notice: running ../../zkt-signer -v -v +2010-02-21 19:32:11.378: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-02-21 19:32:11.378: debug: +2010-02-21 19:32:11.378: debug: parsing zone "example.net." in dir "./example.net" +2010-02-21 19:32:11.378: debug: +2010-02-21 19:32:11.378: notice: end of run: 0 errors occured +2010-02-21 19:32:15.928: notice: ------------------------------------------------------------ +2010-02-21 19:32:15.928: notice: running ../../zkt-signer -f -v -v +2010-02-21 19:32:15.930: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-02-21 19:32:15.982: debug: +2010-02-21 19:32:15.982: debug: parsing zone "example.net." in dir "./example.net" +2010-02-21 19:32:16.019: debug: +2010-02-21 19:32:16.019: notice: end of run: 0 errors occured +2010-02-21 19:32:32.201: notice: ------------------------------------------------------------ +2010-02-21 19:32:32.201: notice: running ../../zkt-signer -f -v -v +2010-02-21 19:32:32.202: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-02-21 19:32:32.232: debug: +2010-02-21 19:32:32.232: debug: parsing zone "example.net." in dir "./example.net" +2010-02-21 19:32:32.273: debug: +2010-02-21 19:32:32.273: notice: end of run: 0 errors occured +2010-02-21 19:32:37.105: notice: ------------------------------------------------------------ +2010-02-21 19:32:37.105: notice: running ../../zkt-signer -d -f -v -v +2010-02-21 19:32:37.107: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-21 19:32:37.156: debug: +2010-02-21 19:32:37.156: notice: end of run: 0 errors occured +2010-02-21 19:43:15.017: notice: ------------------------------------------------------------ +2010-02-21 19:43:15.017: notice: running ../../zkt-signer -d -v -v +2010-02-21 19:43:15.018: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-21 19:43:15.387: debug: +2010-02-21 19:43:15.387: notice: end of run: 1 error occured +2010-02-21 19:45:36.413: notice: ------------------------------------------------------------ +2010-02-21 19:45:36.413: notice: running ../../zkt-signer -d -v -v +2010-02-21 19:45:36.415: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-21 19:45:36.416: debug: +2010-02-21 19:45:36.416: notice: end of run: 0 errors occured +2010-02-21 19:45:41.446: notice: ------------------------------------------------------------ +2010-02-21 19:45:41.446: notice: running ../../zkt-signer -f -d -v -v +2010-02-21 19:45:41.448: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-21 19:45:41.482: debug: +2010-02-21 19:45:41.482: notice: end of run: 1 error occured +2010-02-21 19:47:06.897: notice: ------------------------------------------------------------ +2010-02-21 19:47:06.897: notice: running ../../zkt-signer -f -d -v -v +2010-02-21 19:47:06.899: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-21 19:47:06.935: debug: +2010-02-21 19:47:06.935: notice: end of run: 1 error occured +2010-02-21 19:58:40.971: notice: ------------------------------------------------------------ +2010-02-21 19:58:40.971: notice: running ../../zkt-signer -f -d -v -v +2010-02-21 19:58:40.972: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-21 19:58:41.008: debug: +2010-02-21 19:58:41.008: notice: end of run: 1 error occured +2010-02-21 20:00:48.831: notice: ------------------------------------------------------------ +2010-02-21 20:00:48.831: notice: running ../../zkt-signer -f -d -v -v +2010-02-21 20:00:48.832: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-21 20:00:48.884: debug: +2010-02-21 20:00:48.884: notice: end of run: 0 errors occured +2010-02-21 20:01:11.175: notice: ------------------------------------------------------------ +2010-02-21 20:01:11.175: notice: running ../../zkt-signer -f -d -v -v +2010-02-21 20:01:11.175: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-21 20:01:11.208: debug: +2010-02-21 20:01:11.208: notice: end of run: 0 errors occured +2010-02-21 20:01:17.174: notice: ------------------------------------------------------------ +2010-02-21 20:01:17.174: notice: running ../../zkt-signer -d -v -v +2010-02-21 20:01:17.175: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-21 20:01:17.176: debug: +2010-02-21 20:01:17.176: notice: end of run: 0 errors occured +2010-02-25 00:12:26.362: notice: ------------------------------------------------------------ +2010-02-25 00:12:26.362: notice: running ../../zkt-signer -v -v +2010-02-25 00:12:26.442: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-02-25 00:12:27.060: debug: +2010-02-25 00:12:27.060: debug: parsing zone "example.net." in dir "./example.net" +2010-02-25 00:12:27.177: debug: +2010-02-25 00:12:27.177: notice: end of run: 0 errors occured +2010-02-25 23:42:20.621: notice: ------------------------------------------------------------ +2010-02-25 23:42:20.621: notice: running ../../zkt-signer -v -v +2010-02-25 23:42:20.653: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-02-25 23:42:21.012: debug: +2010-02-25 23:42:21.013: debug: parsing zone "example.net." in dir "./example.net" +2010-02-25 23:42:21.021: debug: +2010-02-25 23:42:21.021: notice: end of run: 0 errors occured +2010-02-25 23:42:29.324: notice: ------------------------------------------------------------ +2010-02-25 23:42:29.324: notice: running ../../zkt-signer -d -v -v +2010-02-25 23:42:29.326: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-02-25 23:42:29.497: debug: +2010-02-25 23:42:29.497: notice: end of run: 0 errors occured +2010-03-02 10:59:11.813: notice: ------------------------------------------------------------ +2010-03-02 10:59:11.813: notice: running ../../zkt-signer -v -v +2010-03-02 10:59:11.845: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-03-02 10:59:12.416: debug: +2010-03-02 10:59:12.416: debug: parsing zone "example.net." in dir "./example.net" +2010-03-02 10:59:12.531: debug: +2010-03-02 10:59:12.531: notice: end of run: 0 errors occured +2010-03-02 10:59:46.768: notice: ------------------------------------------------------------ +2010-03-02 10:59:46.768: notice: running ../../zkt-signer -d -v -v +2010-03-02 10:59:46.769: debug: parsing zone "dyn.example.net." in dir "./dyn.example.net" +2010-03-02 10:59:46.995: debug: +2010-03-02 10:59:46.995: notice: end of run: 0 errors occured +2010-03-03 23:22:00.105: notice: ------------------------------------------------------------ +2010-03-03 23:22:00.105: notice: running ../../zkt-signer -v -v +2010-03-03 23:22:00.127: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-03-03 23:22:00.415: debug: +2010-03-03 23:22:00.415: debug: parsing zone "example.net." in dir "./example.net" +2010-03-03 23:22:00.416: debug: +2010-03-03 23:22:00.416: notice: end of run: 0 errors occured +2010-03-08 23:11:49.633: notice: ------------------------------------------------------------ +2010-03-08 23:11:49.633: notice: running ../../zkt-signer -v -v -N named.conf +2010-03-08 23:11:49.663: debug: parsing zone "sub.example.net." in dir "././sub.example.net" +2010-03-08 23:11:50.170: debug: +2010-03-08 23:11:50.170: debug: parsing zone "example.net." in dir "././example.net" +2010-03-08 23:11:50.295: debug: +2010-03-08 23:11:50.295: notice: end of run: 0 errors occured +2010-03-08 23:12:56.211: notice: ------------------------------------------------------------ +2010-03-08 23:12:56.211: notice: running ../../zkt-signer -v -v -N named.conf +2010-03-08 23:12:56.212: debug: parsing zone "example.net." in dir "././example.net" +2010-03-08 23:12:56.279: debug: +2010-03-08 23:12:56.279: notice: end of run: 0 errors occured +2010-03-08 23:13:36.982: notice: ------------------------------------------------------------ +2010-03-08 23:13:36.983: notice: running ../../zkt-signer -v -v -N named.conf +2010-03-08 23:13:36.984: debug: parsing zone "example.net." in dir "././example.net" +2010-03-08 23:13:36.985: debug: +2010-03-08 23:13:36.985: notice: end of run: 0 errors occured +2010-03-08 23:18:52.241: notice: ------------------------------------------------------------ +2010-03-08 23:18:52.241: notice: running ../../zkt-signer -v -v -N named.conf +2010-03-08 23:18:52.243: debug: parsing zone "sub.example.net." in dir "././sub.example.net" +2010-03-08 23:18:52.287: debug: +2010-03-08 23:18:52.287: debug: parsing zone "example.net." in dir "././example.net" +2010-03-08 23:18:52.287: debug: +2010-03-08 23:18:52.287: notice: end of run: 0 errors occured +2010-03-11 23:46:35.453: notice: ------------------------------------------------------------ +2010-03-11 23:46:35.453: notice: running ../../zkt-signer -v -v +2010-03-11 23:46:35.497: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-03-11 23:46:35.831: debug: +2010-03-11 23:46:35.831: debug: parsing zone "example.net." in dir "./example.net" +2010-03-11 23:46:35.929: debug: +2010-03-11 23:46:35.930: notice: end of run: 0 errors occured +2010-03-11 23:52:33.130: notice: ------------------------------------------------------------ +2010-03-11 23:52:33.130: notice: running ../../zkt-signer -v -v +2010-03-11 23:52:33.132: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-03-11 23:52:33.132: debug: +2010-03-11 23:52:33.132: debug: parsing zone "example.net." in dir "./example.net" +2010-03-11 23:52:33.408: debug: +2010-03-11 23:52:33.408: notice: end of run: 1 error occured +2010-03-11 23:53:27.802: notice: ------------------------------------------------------------ +2010-03-11 23:53:27.802: notice: running ../../zkt-signer -v -v +2010-03-11 23:53:27.804: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-03-11 23:53:27.856: debug: +2010-03-11 23:53:27.856: debug: parsing zone "example.net." in dir "./example.net" +2010-03-11 23:53:27.920: debug: +2010-03-11 23:53:27.920: notice: end of run: 0 errors occured +2010-07-05 08:15:23.500: notice: ------------------------------------------------------------ +2010-07-05 08:15:23.500: notice: running ../../zkt-signer +2010-07-05 08:15:23.502: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-07-05 08:15:24.179: debug: +2010-07-05 08:15:24.179: debug: parsing zone "example.net." in dir "./example.net" +2010-07-05 08:15:24.316: debug: +2010-07-05 08:15:24.316: notice: end of run: 0 errors occured +2010-07-05 08:15:28.171: notice: ------------------------------------------------------------ +2010-07-05 08:15:28.171: notice: running ../../zkt-signer -v -v +2010-07-05 08:15:28.173: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-07-05 08:15:28.173: debug: +2010-07-05 08:15:28.174: debug: parsing zone "example.net." in dir "./example.net" +2010-07-05 08:15:28.174: debug: +2010-07-05 08:15:28.174: notice: end of run: 0 errors occured +2010-07-05 08:15:58.498: notice: ------------------------------------------------------------ +2010-07-05 08:15:58.498: notice: running ../../zkt-signer -v -v +2010-07-05 08:15:58.501: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-07-05 08:15:58.502: debug: +2010-07-05 08:15:58.502: debug: parsing zone "example.net." in dir "./example.net" +2010-07-05 08:15:58.503: debug: +2010-07-05 08:15:58.504: notice: end of run: 0 errors occured +2010-07-05 08:16:04.892: notice: ------------------------------------------------------------ +2010-07-05 08:16:04.892: notice: running ../../zkt-signer -f -v -v +2010-07-05 08:16:04.894: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-07-05 08:16:04.937: debug: +2010-07-05 08:16:04.937: debug: parsing zone "example.net." in dir "./example.net" +2010-07-05 08:16:04.993: debug: +2010-07-05 08:16:04.993: notice: end of run: 0 errors occured +2010-07-05 08:16:33.557: notice: ------------------------------------------------------------ +2010-07-05 08:16:33.557: notice: running ../../zkt-signer -f -v -v +2010-07-05 08:16:33.559: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-07-05 08:16:33.604: debug: +2010-07-05 08:16:33.604: debug: parsing zone "example.net." in dir "./example.net" +2010-07-05 08:16:33.648: debug: +2010-07-05 08:16:33.648: notice: end of run: 0 errors occured +2010-07-30 01:30:54.873: notice: ------------------------------------------------------------ +2010-07-30 01:30:54.873: notice: running ../../zkt-signer -v -v +2010-07-30 01:30:54.879: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-07-30 01:30:55.411: debug: +2010-07-30 01:30:55.411: debug: parsing zone "example.net." in dir "./example.net" +2010-07-30 01:30:55.563: debug: +2010-07-30 01:30:55.563: notice: end of run: 0 errors occured +2010-08-26 22:52:09.066: notice: ------------------------------------------------------------ +2010-08-26 22:52:09.066: notice: running ../../zkt-signer -v -v +2010-08-26 22:52:09.092: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-08-26 22:52:09.538: debug: +2010-08-26 22:52:09.539: debug: parsing zone "example.net." in dir "./example.net" +2010-08-26 22:52:09.704: debug: +2010-08-26 22:52:09.704: notice: end of run: 0 errors occured +2010-08-26 22:56:02.935: notice: ------------------------------------------------------------ +2010-08-26 22:56:02.935: notice: running ../../zkt-signer -v -v +2010-08-26 22:56:02.937: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-08-26 22:56:02.938: debug: +2010-08-26 22:56:02.938: debug: parsing zone "example.net." in dir "./example.net" +2010-08-26 22:56:02.938: debug: +2010-08-26 22:56:02.938: notice: end of run: 0 errors occured +2010-08-26 23:06:00.453: notice: ------------------------------------------------------------ +2010-08-26 23:06:00.453: notice: running ../../zkt-signer -v -v +2010-08-26 23:06:00.456: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-08-26 23:06:00.593: debug: +2010-08-26 23:06:00.593: debug: parsing zone "example.net." in dir "./example.net" +2010-08-26 23:06:00.672: debug: +2010-08-26 23:06:00.672: notice: end of run: 0 errors occured +2010-08-26 23:11:33.804: notice: ------------------------------------------------------------ +2010-08-26 23:11:33.805: notice: running ../../zkt-signer -v -v +2010-08-26 23:11:33.807: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-08-26 23:11:33.808: debug: +2010-08-26 23:11:33.808: debug: parsing zone "example.net." in dir "./example.net" +2010-08-26 23:11:33.809: debug: +2010-08-26 23:11:33.809: notice: end of run: 0 errors occured +2010-08-26 23:12:51.008: notice: ------------------------------------------------------------ +2010-08-26 23:12:51.008: notice: running ../../zkt-signer -v -v +2010-08-26 23:12:51.010: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-08-26 23:12:51.011: debug: +2010-08-26 23:12:51.012: debug: parsing zone "example.net." in dir "./example.net" +2010-08-26 23:12:51.012: debug: +2010-08-26 23:12:51.012: notice: end of run: 0 errors occured +2010-08-26 23:23:47.879: notice: ------------------------------------------------------------ +2010-08-26 23:23:47.880: notice: running ../../zkt-signer -v -v +2010-08-26 23:23:47.886: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-08-26 23:23:47.886: debug: +2010-08-26 23:23:47.886: debug: parsing zone "example.net." in dir "./example.net" +2010-08-26 23:23:47.886: debug: +2010-08-26 23:23:47.886: notice: end of run: 0 errors occured +2010-08-26 23:50:15.720: notice: ------------------------------------------------------------ +2010-08-26 23:50:15.720: notice: running ../../zkt-signer -v -v +2010-08-26 23:50:15.722: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-08-26 23:50:15.724: debug: +2010-08-26 23:50:15.724: debug: parsing zone "example.net." in dir "./example.net" +2010-08-26 23:50:15.725: debug: +2010-08-26 23:50:15.725: notice: end of run: 0 errors occured +2010-08-26 23:50:55.121: notice: ------------------------------------------------------------ +2010-08-26 23:50:55.121: notice: running ../../zkt-signer -v -v +2010-08-26 23:50:55.123: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-08-26 23:50:55.124: debug: +2010-08-26 23:50:55.124: debug: parsing zone "example.net." in dir "./example.net" +2010-08-26 23:50:55.124: debug: +2010-08-26 23:50:55.124: notice: end of run: 0 errors occured +2010-08-26 23:51:46.603: notice: ------------------------------------------------------------ +2010-08-26 23:51:46.604: notice: running ../../zkt-signer -v -v +2010-08-26 23:51:46.606: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-08-26 23:51:46.719: debug: +2010-08-26 23:51:46.719: debug: parsing zone "example.net." in dir "./example.net" +2010-08-26 23:51:46.719: debug: +2010-08-26 23:51:46.719: notice: end of run: 0 errors occured +2010-08-26 23:54:22.818: notice: ------------------------------------------------------------ +2010-08-26 23:54:22.819: notice: running ../../zkt-signer -v -v +2010-08-26 23:54:22.821: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-08-26 23:54:22.823: debug: +2010-08-26 23:54:22.823: debug: parsing zone "example.net." in dir "./example.net" +2010-08-26 23:54:22.825: debug: +2010-08-26 23:54:22.825: notice: end of run: 0 errors occured +2010-08-26 23:55:00.013: notice: ------------------------------------------------------------ +2010-08-26 23:55:00.013: notice: running ../../zkt-signer -v -v +2010-08-26 23:55:00.017: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-08-26 23:55:00.018: debug: +2010-08-26 23:55:00.018: debug: parsing zone "example.net." in dir "./example.net" +2010-08-26 23:55:00.169: debug: +2010-08-26 23:55:00.169: notice: end of run: 0 errors occured +2010-08-26 23:56:17.462: notice: ------------------------------------------------------------ +2010-08-26 23:56:17.462: notice: running ../../zkt-signer -v -v +2010-08-26 23:56:17.464: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-08-26 23:56:17.465: debug: +2010-08-26 23:56:17.465: debug: parsing zone "example.net." in dir "./example.net" +2010-08-26 23:56:17.531: debug: +2010-08-26 23:56:17.531: notice: end of run: 0 errors occured +2010-08-26 23:57:00.176: notice: ------------------------------------------------------------ +2010-08-26 23:57:00.176: notice: running ../../zkt-signer -v -v +2010-08-26 23:57:00.178: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-08-26 23:57:00.178: debug: +2010-08-26 23:57:00.178: debug: parsing zone "example.net." in dir "./example.net" +2010-08-26 23:57:00.179: debug: +2010-08-26 23:57:00.179: notice: end of run: 0 errors occured +2010-10-21 14:01:35.484: notice: ------------------------------------------------------------ +2010-10-21 14:01:35.484: notice: running zkt-signer -c dnssec.conf -D . +2010-10-21 14:01:35.486: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-10-21 14:01:35.546: debug: +2010-10-21 14:01:35.546: debug: parsing zone "example.net." in dir "./example.net" +2010-10-21 14:01:35.794: debug: +2010-10-21 14:01:35.794: notice: end of run: 2 errors occured +2010-10-21 14:02:09.144: notice: ------------------------------------------------------------ +2010-10-21 14:02:09.144: notice: running zkt-signer -v -v -c dnssec.conf -D . +2010-10-21 14:02:09.146: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-10-21 14:02:09.209: debug: +2010-10-21 14:02:09.209: debug: parsing zone "example.net." in dir "./example.net" +2010-10-21 14:02:09.209: debug: +2010-10-21 14:02:09.209: notice: end of run: 2 errors occured +2010-10-21 14:05:35.986: notice: ------------------------------------------------------------ +2010-10-21 14:05:35.986: notice: running ../../zkt-signer -v -v +2010-10-21 14:05:35.988: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-10-21 14:05:36.170: debug: +2010-10-21 14:05:36.170: debug: parsing zone "example.net." in dir "./example.net" +2010-10-21 14:05:36.170: debug: +2010-10-21 14:05:36.170: notice: end of run: 0 errors occured +2010-10-21 14:30:43.890: notice: ------------------------------------------------------------ +2010-10-21 14:30:43.890: notice: running ../../zkt-signer -v -v +2010-10-21 14:30:43.892: debug: parsing zone "sub.example.net." in dir "./sub.example.net" +2010-10-21 14:30:43.892: debug: +2010-10-21 14:30:43.892: debug: parsing zone "example.net." in dir "./example.net" +2010-10-21 14:30:43.893: debug: +2010-10-21 14:30:43.893: notice: end of run: 0 errors occured diff --git a/contrib/zkt-1.1.2/examples/flat/zone.conf b/contrib/zkt-1.1.2/examples/flat/zone.conf new file mode 100644 index 0000000000..54487af2f0 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/flat/zone.conf @@ -0,0 +1,10 @@ + +zone "example.NET." in { + type master; + file "example.net/zone.db.signed"; +}; + +zone "sub.example.NET." in { + type master; + file "sub.example.net/zone.db.signed"; +}; diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+25598.key b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+25598.key new file mode 100644 index 0000000000..45ff7704ae --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+25598.key @@ -0,0 +1,3 @@ +;% generationtime=20110125091120 +;% lifetime=84d +example.de. IN DNSKEY 256 3 5 BQEAAAAB13b8+4oBaYaLYdDvH6fwVwDfohlzGdSu5A9nO/wJ1taCB+4T wn3TSAtlttLmzYad5EbBUIn+4CLBKmc4sKn/cw== diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+25598.published b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+25598.published new file mode 100644 index 0000000000..21ac24add1 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+25598.published @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: 13b8+4oBaYaLYdDvH6fwVwDfohlzGdSu5A9nO/wJ1taCB+4Twn3TSAtlttLmzYad5EbBUIn+4CLBKmc4sKn/cw== +PublicExponent: AQAAAAE= +PrivateExponent: Hr+/WEVR20WhmLb/zS+1qqrw9YDpgmw2hTb9Qs5wa5el38OEzQV5OvBdfQC/aDj7SW1PPSw0iYvcoVS3ZPZh +Prime1: 84w3+p6VYYdrwuju6BrMdISLRla1pPo+synV7D7IR4M= +Prime2: 4nsxmxk0VLrAzzVDfxvEcF3uEOPIKDgayiB1YCvJ9VE= +Exponent1: XzmWw18psVyeqhhEZygfbffj2N61WpM0OulCViv4upM= +Exponent2: Qvo4lPrZBicpnQoC+TTYN2MhzXfIm4IPATGftVC6oFE= +Coefficient: 6J4QOm1lunyBgAiluqGKhs9FJs9y1ZQ62Lzgauf6XVA= diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+37983.key b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+37983.key new file mode 100644 index 0000000000..55364ea623 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+37983.key @@ -0,0 +1,3 @@ +;% generationtime=20081116180040 +;% lifetime=365d +example.de. IN DNSKEY 257 3 5 BQEAAAABDOkPawC/tCqSITj6lvzcIPwcMEX+Nvz17GBu85jmigMuvZQU YZBVUmJNNBbCNStlz+Y+1pGg9HbWFvn0tpH/bm4mZPlJmk+WxQhHz7eT m5xhSaSEEzq0uf087tAbaq1yaTpTtA2R7JXIPxt6CuD9Ou5bbYOzrFnB q1VBAYrwB6t/us10+Ab7T6Jvie/W+v4jto1Xx912Z8HHTbU48Mlp1+mU jQ== diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+37983.published b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+37983.published new file mode 100644 index 0000000000..b120c0c6a6 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+37983.published @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: DOkPawC/tCqSITj6lvzcIPwcMEX+Nvz17GBu85jmigMuvZQUYZBVUmJNNBbCNStlz+Y+1pGg9HbWFvn0tpH/bm4mZPlJmk+WxQhHz7eTm5xhSaSEEzq0uf087tAbaq1yaTpTtA2R7JXIPxt6CuD9Ou5bbYOzrFnBq1VBAYrwB6t/us10+Ab7T6Jvie/W+v4jto1Xx912Z8HHTbU48Mlp1+mUjQ== +PublicExponent: AQAAAAE= +PrivateExponent: AcxmOS9ewHH4UTWVHOSEyONodDImWb5DFyMOUzn3FCkdBEnsOAYTO8/noT3PP0uoMK0s7/BlIReEqsyCVcgQVrTbJszoKlwhHT+XO60i3wPJIWF9u8ouFDnGLkbSRpw6L72uRZy9SdSWUWHdlRayK6T3uJGrcsCLIlzaSue1vXjdUobHMVxQ+mPCFNjSgRWOvTxGcsoXPKx5MjrmAUEnLyQuoQ== +Prime1: A50KZhIYCkyx48okZHgirDXs0cVYf2OOvLcNKF4AvBBTwoV9+oFfTd+wKy9f+G/FqVBV1s4rv/M7UCpAFJPCqaDkt+EEv5DNnX69RgvwBrHyxQ== +Prime2: A5KoV2IkWEM9Djm8pZay/fQpM8coQxVutNDb9G4ADMwpwK5ddGifS38jPlHenUKDxSFtfOZBQbyf7ra/lSttpOqSnr/e6s6HHRn5TYfdR9IXKQ== +Exponent1: eWP9FtwMjnnrsAhQlO7Fbko74gKGRVaygSe4Pd+TGM22dHDZCCoc//IBL+s2Dhezy1l8xiOPVbcxzxHMbqrQhPENi7HihDwiR1WfuSaoIfod +Exponent2: AweXUxlW7qBg+v2qV5cCZl+gvTBW/1vP7llsoOqbHR69xLklXEV96TlEbKU8hoSnq8ts8qqh4/HFj1d+KRTeHWpseUm0GXdK/k7ZvYfr7KVHUQ== +Coefficient: AwVZtbgFX0bAOj9J2p48qYAn3EaIuCvzDYoIE3E/m3NZS8UXQ5MK12AFhulRYpWOgZCIWK9fH0MTvtDFk3I5vyFTMhovDBrSWNn/+TJ47CwrBQ== diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+47280.key b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+47280.key new file mode 100644 index 0000000000..cf983b6961 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+47280.key @@ -0,0 +1,3 @@ +;% generationtime=20080914221502 +;% lifetime=365d +example.de. IN DNSKEY 257 3 5 BQEAAAABDV7kFHqVcWLoSAShdlXU5LKUdyU4LlsJGYMr8oIpjEzvwonR mX5pRiEjVhTwx+vx6eWluv6txXVu+F0g2ykmqUQdMfPYWmD9AJOqvc2t CKVSRePqZ+HeIZR+heBnFKr5kWQmB5XOlMdWNRA3y78s/LufVB8hD7r2 60jrVJ0W6wSMGDjN4zQce8rHCe+LNB1GfaIASkMWjdgxNNAsK9bqDM8E uw== diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+47280.private b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+47280.private new file mode 100644 index 0000000000..fed718b586 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+47280.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: DV7kFHqVcWLoSAShdlXU5LKUdyU4LlsJGYMr8oIpjEzvwonRmX5pRiEjVhTwx+vx6eWluv6txXVu+F0g2ykmqUQdMfPYWmD9AJOqvc2tCKVSRePqZ+HeIZR+heBnFKr5kWQmB5XOlMdWNRA3y78s/LufVB8hD7r260jrVJ0W6wSMGDjN4zQce8rHCe+LNB1GfaIASkMWjdgxNNAsK9bqDM8Euw== +PublicExponent: AQAAAAE= +PrivateExponent: CxINUgbVqMf0BnMNYq3aL8ucN4fael2ljQYgDCpcTMfqVuRo+Vo6sMEr3C6Bw8MTHWo2jMxdulyS4tsiMQVVjWUArFL/sfFYLwopjOExcneji6noi8n9dzgslNpo3QAdnKwDGUwj+k7CBzCbLSZ5xpt/eaHcN4l1buQ0tcqShthdh7sNHFX1nAqjsLa7xxCiBsliA6LD/QTAAzcbED0Xw7SJWQ== +Prime1: A+RY6jx9urFg5GeyRqrAiqqClEzyWgEM4HsJn/oQ38PE6NrPzcG9U95um79u1WwWtXe5xTifInhN40CpxQYH45NFjZEuEvROvkXk5JHV9b5UHw== +Prime2: A2949khdV+cKgI2EHmRIu7PJUFkBgrMXacwVpGdaN41NpJYFRYW8qoPmKRrw/Fji7GZj0rrro51XT7JNDbC44dX/bGdNa/eWvslPJGfCR4Gb5Q== +Exponent1: rVHNFnlV2HXIOzi9+2Hit8m7bNXrVXA/DJ3lGCzDL2PzpvQcrL6mMXzaYznP9XaSgyR9M8u+Tdwqq11lHsnWhNLyWKTyAlO5WP3syQD3+0Jp +Exponent2: ArQCCQS8lPgDvu7LI3q5tanr2nmM2uMzPNud9EPSqAql8iEIgOZDLDsMDZd9QHm2Dicjc2UifTcJgQlc3OACSVYkkxjvHKO7t03KNoZkhceTTQ== +Coefficient: GUOOUFWtz0iCPZx1ljdxpP3T4hW7Jux1zcfV6PwX+Nx+8KcawXFfNxjsC1+Sla9Txv02Kgqg9Mh3mCNGynimcbkmmOcfyozKOttAD1sheFK0 diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+60407.key b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+60407.key new file mode 100644 index 0000000000..f2528244fa --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+60407.key @@ -0,0 +1,3 @@ +;% generationtime=20101127093934 +;% lifetime=63d +example.de. IN DNSKEY 256 3 5 BQEAAAABw62oxcUQ8mF4T6zH+tAkM0FU3nXJ4sgnBSUa884gZL2AlG+t 7FpwrRm/Hish/hxVRzmM8q2srgLHBYAk12VkMQ== diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+60407.private b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+60407.private new file mode 100644 index 0000000000..4ac668f210 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/Kexample.de.+005+60407.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: w62oxcUQ8mF4T6zH+tAkM0FU3nXJ4sgnBSUa884gZL2AlG+t7FpwrRm/Hish/hxVRzmM8q2srgLHBYAk12VkMQ== +PublicExponent: AQAAAAE= +PrivateExponent: IwUfBuvY5VY30HNbiboZAUkgEkSiFAj86peg2ue+PhllmtSP+Vxl7bguyEq0JJgk8AcQB0fxD9b8VdkgksSwgQ== +Prime1: 54rg6aJKRFWczUKRDwD0/aRC+VKc6gJAtw3RrAnW/Nc= +Prime2: 2Fj7RLozuJFUHRkDTFIQWrPEInCGmrIPU+tLPH6vPjc= +Exponent1: gwVUTriIA6KGdAqT+sX/5cpwaIC0v5Nnl70WXoOkiOs= +Exponent2: RI+e2Q3LGyTFTRf64HiGzl67T84jor3EM+1LTugfpSs= +Coefficient: CNfuRUw+kKfO99T09DeD1y4N7QwyGG03NfazSa4GvPU= diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/dnskey.db b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/dnskey.db new file mode 100644 index 0000000000..b0d62f552a --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/dnskey.db @@ -0,0 +1,39 @@ +; +; !!! Don't edit this file by hand. +; !!! It will be generated by zkt-signer. +; +; Last generation time Jan 25 2011 19:39:31 +; + +; *** List of Key Signing Keys *** +; example.de. tag=47280 algo=RSASHA1 generated Jul 05 2010 09:43:02 +example.de. 14400 IN DNSKEY 257 3 5 ( + BQEAAAABDV7kFHqVcWLoSAShdlXU5LKUdyU4LlsJGYMr8oIpjEzvwonR + mX5pRiEjVhTwx+vx6eWluv6txXVu+F0g2ykmqUQdMfPYWmD9AJOqvc2t + CKVSRePqZ+HeIZR+heBnFKr5kWQmB5XOlMdWNRA3y78s/LufVB8hD7r2 + 60jrVJ0W6wSMGDjN4zQce8rHCe+LNB1GfaIASkMWjdgxNNAsK9bqDM8E + uw== + ) ; key id = 47280 + +; example.de. tag=37983 algo=RSASHA1 generated Jul 05 2010 09:43:02 +example.de. 14400 IN DNSKEY 257 3 5 ( + BQEAAAABDOkPawC/tCqSITj6lvzcIPwcMEX+Nvz17GBu85jmigMuvZQU + YZBVUmJNNBbCNStlz+Y+1pGg9HbWFvn0tpH/bm4mZPlJmk+WxQhHz7eT + m5xhSaSEEzq0uf087tAbaq1yaTpTtA2R7JXIPxt6CuD9Ou5bbYOzrFnB + q1VBAYrwB6t/us10+Ab7T6Jvie/W+v4jto1Xx912Z8HHTbU48Mlp1+mU + jQ== + ) ; key id = 37983 + +; *** List of Zone Signing Keys *** +; example.de. tag=60407 algo=RSASHA1 generated Nov 27 2010 19:46:33 +example.de. 14400 IN DNSKEY 256 3 5 ( + BQEAAAABw62oxcUQ8mF4T6zH+tAkM0FU3nXJ4sgnBSUa884gZL2AlG+t + 7FpwrRm/Hish/hxVRzmM8q2srgLHBYAk12VkMQ== + ) ; key id = 60407 + +; example.de. tag=25598 algo=RSASHA1 generated Jan 25 2011 10:11:20 +example.de. 14400 IN DNSKEY 256 3 5 ( + BQEAAAAB13b8+4oBaYaLYdDvH6fwVwDfohlzGdSu5A9nO/wJ1taCB+4T + wn3TSAtlttLmzYad5EbBUIn+4CLBKmc4sKn/cw== + ) ; key id = 25598 + diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/dsset-example.de. b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/dsset-example.de. new file mode 100644 index 0000000000..86ba183b06 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/dsset-example.de. @@ -0,0 +1,4 @@ +example.de. IN DS 37983 5 1 635B486D53D19B16BC4A87366BC2D5626978F4B9 +example.de. IN DS 37983 5 2 5B8412FE443D8F4F77AC4C89FF12289DA88998D864EC68E3E5A4EE2C B192F9DC +example.de. IN DS 47280 5 1 149C886C8175B220A964D4293EB4FCFAC1650974 +example.de. IN DS 47280 5 2 466E738B6913F7081DE5E17FC3567771618AB1D6CB0A333270A4AC24 7DB14DD0 diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/keyset-example.de. b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/keyset-example.de. new file mode 100644 index 0000000000..27a14419fa --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/keyset-example.de. @@ -0,0 +1,19 @@ +$ORIGIN . +example.de 7200 IN DNSKEY 257 3 5 ( + BQEAAAABDOkPawC/tCqSITj6lvzcIPwcMEX+ + Nvz17GBu85jmigMuvZQUYZBVUmJNNBbCNStl + z+Y+1pGg9HbWFvn0tpH/bm4mZPlJmk+WxQhH + z7eTm5xhSaSEEzq0uf087tAbaq1yaTpTtA2R + 7JXIPxt6CuD9Ou5bbYOzrFnBq1VBAYrwB6t/ + us10+Ab7T6Jvie/W+v4jto1Xx912Z8HHTbU4 + 8Mlp1+mUjQ== + ) ; key id = 37983 + 7200 IN DNSKEY 257 3 5 ( + BQEAAAABDV7kFHqVcWLoSAShdlXU5LKUdyU4 + LlsJGYMr8oIpjEzvwonRmX5pRiEjVhTwx+vx + 6eWluv6txXVu+F0g2ykmqUQdMfPYWmD9AJOq + vc2tCKVSRePqZ+HeIZR+heBnFKr5kWQmB5XO + lMdWNRA3y78s/LufVB8hD7r260jrVJ0W6wSM + GDjN4zQce8rHCe+LNB1GfaIASkMWjdgxNNAs + K9bqDM8Euw== + ) ; key id = 47280 diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/keyset-sub.example.de. b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/keyset-sub.example.de. new file mode 100644 index 0000000000..6c7f963191 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/keyset-sub.example.de. @@ -0,0 +1,7 @@ +; KSK rollover phase1 (new key generated but this is alread the old one) +sub.example.de. 14400 IN DNSKEY 257 3 5 ( + BQEAAAABzRcWJYuBn9eY8u4x+04jkYmSmfRaGuNc4soput6Fo2/HViu1 + 1Jo2uMnp4Z4MeGzti4IGsL2Lp5vC66qXeX0Qqk+aIJBQUyHCF1nPmPad + 2hDVFpD4Lp/uArmHaaLxQ4px6LEe0PMG1W/a/gJWNxuiTmkSN5c9vXsQ + m3SuRnb0ef0= + ) ; key id = 38331 diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+27647.key b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+27647.key new file mode 100644 index 0000000000..30860426d1 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+27647.key @@ -0,0 +1,3 @@ +;% generationtime=20101127093933 +;% lifetime=3d +sub.example.de. IN DNSKEY 256 3 5 BQEAAAAB5tuyJuCMHTySqvnPpVSbFcnFK6jI/BG3Va5Yu0ou7jPArylc mziNb9AIJ2PBaVcXbeH6h9YWd9MLCLKPZqRLKQ== diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+27647.private b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+27647.private new file mode 100644 index 0000000000..3618ea59cc --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+27647.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: 5tuyJuCMHTySqvnPpVSbFcnFK6jI/BG3Va5Yu0ou7jPArylcmziNb9AIJ2PBaVcXbeH6h9YWd9MLCLKPZqRLKQ== +PublicExponent: AQAAAAE= +PrivateExponent: JzR1JHrF/sD4IW5yUk+u1Kk3EuBcKPbD8wqOMseG34SyEm1jPU+o2QlTA2DPw49ApfKrkq+ikDZ7+mRwRGOHAQ== +Prime1: 9OdVjN/tX8KeuG8oURXKri8YD04kz07isqeYTYyksfE= +Prime2: 8VFyYFkvnx5UuYdOTuoIIJcQqK0HeC+JwB1wAyRm9Lk= +Exponent1: ATIpC4/KM7AKHLlt3vvxyyov3pPBnCwF9NC4L4gpNEE= +Exponent2: 8UV1SqMZEk9tI8NTvRa2Z6xRB0b7D2MNnedSZqOXi/E= +Coefficient: mUOK9cs0xozwdcUZPkP+FDoxJvfN6eeidsFqya3JLOo= diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+32679.key b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+32679.key new file mode 100644 index 0000000000..c9a4679c41 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+32679.key @@ -0,0 +1,3 @@ +;% generationtime=20110125183931 +;% lifetime=7d +sub.example.de. IN DNSKEY 257 3 5 BQEAAAABocb52XnOJzaKKv90SFZxTddP7OuzI/qaeOqptm7BH3QKGTBj ZmgfJ6J2uNXamzVEUGiAV5yLvPbxSAUK/R7HWP22ENqRxouZrQVUYfMC pVS69kTGagTnMmywpg5LtCic9+18YRX2NhkxNvUpBjlTn7BbjXW36yy5 sA1Uq+Rg2cU= diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+32679.private b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+32679.private new file mode 100644 index 0000000000..526253928d --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+32679.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: ocb52XnOJzaKKv90SFZxTddP7OuzI/qaeOqptm7BH3QKGTBjZmgfJ6J2uNXamzVEUGiAV5yLvPbxSAUK/R7HWP22ENqRxouZrQVUYfMCpVS69kTGagTnMmywpg5LtCic9+18YRX2NhkxNvUpBjlTn7BbjXW36yy5sA1Uq+Rg2cU= +PublicExponent: AQAAAAE= +PrivateExponent: JpNUVc04LC+jHSd/SN4bbbUXotjoQMNxsR0OmiGAQqOdWL6NWZ2XRr1dYS0NWy6lLxPCtA5MhnS5TgY633Vfd2KM8ywkNy3Dwtd/ynHRqv6poAhSoSZtYds/RrPATwMMzKmuwXoH9YAG4IHhG9y4mUA9cVB84xT/5ZVxoaatYgE= +Prime1: 1hrTq3BjlThxhlNym2qSx5Kop2rtn6J3LSM7wlQ8vd2vR9lNuj8TrM8yig3S1tRh4RSKLWtOgb3eBo26nrp+EQ== +Prime2: wW7mdWIEe1UkZVFnH2J2If5D5v1mn0o8umik+tE3aQJun9WOVjbZ/PjwlaMM+nFAID08Plj25ec0z8hu8cV8dQ== +Exponent1: iVUvqW8WSh0JJt2Cs6Eokp6fhJveVPMTmTtWWkKtYFnQx/peBxb55x+ULMQvHG3Iz06Y445k61629mCvyB9qwQ== +Exponent2: Ewn17+1cExPMS+ZITVszVdouSCvnteVj7V/AL8C0iSK0x7XlBx3F8D9vNfYWL+7WOjF5t+v0dmBM+J0TKLUZzQ== +Coefficient: AhCRWPVu5lQcfR94r8G5sQik3ZmZf1uJbO2mf+24yHQA0qjzYiEo42jCwXSDA3JtBwAbTwukmmTn4gOWHex7JQ== diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+38331.key b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+38331.key new file mode 100644 index 0000000000..e4eace4255 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+38331.key @@ -0,0 +1,3 @@ +;% generationtime=20100826211144 +;% lifetime=7d +sub.example.de. IN DNSKEY 257 3 5 BQEAAAABzRcWJYuBn9eY8u4x+04jkYmSmfRaGuNc4soput6Fo2/HViu1 1Jo2uMnp4Z4MeGzti4IGsL2Lp5vC66qXeX0Qqk+aIJBQUyHCF1nPmPad 2hDVFpD4Lp/uArmHaaLxQ4px6LEe0PMG1W/a/gJWNxuiTmkSN5c9vXsQ m3SuRnb0ef0= diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+38331.private b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+38331.private new file mode 100644 index 0000000000..d0d323dcfd --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+38331.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: zRcWJYuBn9eY8u4x+04jkYmSmfRaGuNc4soput6Fo2/HViu11Jo2uMnp4Z4MeGzti4IGsL2Lp5vC66qXeX0Qqk+aIJBQUyHCF1nPmPad2hDVFpD4Lp/uArmHaaLxQ4px6LEe0PMG1W/a/gJWNxuiTmkSN5c9vXsQm3SuRnb0ef0= +PublicExponent: AQAAAAE= +PrivateExponent: YcpriBuIcizNJGNwVPxNTYDgzz4nQsZ2z7F5fr5BmfC9Ukx7Mdl8wzS/8dikD3FhTqEbDdANf5L/LuPiE0XvvFzMEweRtoSQnYDlnvpYQPGcFcTXlbY1Jn6h3WvVyfLWMWK0/2lsLtHzRhToyI1WyO6wFqrun9e+HvHb71SwP6k= +Prime1: 9aHh1J2wdRibYZI01fQqegxMuZn5+NlvxWxO2Bzwbm4e68cMQjVeyn7N0j46hE7kv+z07422AgXq1kLllqIpNw== +Prime2: 1b8i4culx54km/hid+U9qLFcorXX9e2QF2LFxd5/+YYBBILp7RGk9sD/PWTCPcYZbviPzkRhq+3ignTfwdzAaw== +Exponent1: 2fQGWETsC1OVxzQamORV4JQzBB8haAYNHaCcvgidlQgQFQA2pR4PNaLj77DUHBOrjb2pKjsCS7xumwVu1F8T2w== +Exponent2: EX6aW8lr4Fizn0QwEumQAYnRv7Z32Tfmnr/s6gHPVxPK7spfiPhK0Lb3Q04OfFkJdHNaG9YMpqmNI8ZW/PyJsw== +Coefficient: YvQ1SQqRz/y9ApJSUmswljwbA6NGxS5Mh9ZA8Ui1jNPYClQ6Ncn2A4FatnLBfyLaalCLzR3rf22LoNvwc9g8rg== diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+51846.key b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+51846.key new file mode 100644 index 0000000000..40d7719cbc --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+51846.key @@ -0,0 +1,3 @@ +;% generationtime=20101127101703 +;% lifetime=7d +sub.example.de. IN DNSKEY 257 3 5 BQEAAAAB2CMCmaITzL7L6UmI0Y+u16LiyINgkYc3dxYunDYWK0FEXGa5 L7ss8jepJnBM6KD/rekwqb5wgso/5VnSprhUUnQqec6ESuJ/9/ThI6i7 zD6AnwdtXagTOaTRqWhUEcjgMIG4oJK/Pb5mZAlXvzPqmRkyeStRw0cU AEWQvdtuDcc= diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+51846.private b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+51846.private new file mode 100644 index 0000000000..cc7651480b --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+51846.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: 2CMCmaITzL7L6UmI0Y+u16LiyINgkYc3dxYunDYWK0FEXGa5L7ss8jepJnBM6KD/rekwqb5wgso/5VnSprhUUnQqec6ESuJ/9/ThI6i7zD6AnwdtXagTOaTRqWhUEcjgMIG4oJK/Pb5mZAlXvzPqmRkyeStRw0cUAEWQvdtuDcc= +PublicExponent: AQAAAAE= +PrivateExponent: BTyLOYpzVpf3iu0C8TsgWOjkBxZYFrHY/A1FOznBnvmYoGo/R3VEoeiZ8rNeizi5z123O37vROe8lz78HGacZbAdOJN2641uSsIN291KQk5phA9udaR6LT+mc0pIb9jg++M0F3Hf5i5PYEu/er/JGSHFT6/h9NpnbyqcXYjV6yE= +Prime1: 8+mFlmHUdJ730AoP0NGVCaQXmU0YRTKsbR/6nQLOerKE9XBfedI9yqBR3c/jxko6dt8f6d/vhizdeTfmQU/xJQ== +Prime2: 4tka/vWR5lFqC3IGnKH0Dudiwurzz/dDoPwc1WWdpKWdKBss3D+aFFr61NFTgJCT2vw7/5EJY0RGX7JVMKQdew== +Exponent1: ZKJzEF60uVnkVEg+IyIS7mBmUVL91FmieU1ZOXSeV683uCdVKSTSdPr/+l18R7IgjOnCOs9ityOfGb0eVrqHKQ== +Exponent2: af/TPglQaRZJKRwT8Jh6PbuBtK1RpMmudpVF/M+t7VSCpkhIEa+MPQP3f/9POSHT/Th8oe7PE/JLhqEllQTgsQ== +Coefficient: PlboG/Rm7dd/QQirRpQ/fZZdFPjNI0J1VjfRst+Qb/yuB2m81CU6GNwDyJujX7L5JQpfQGlqIRvk9jw2cpRBJQ== diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+55550.key b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+55550.key new file mode 100644 index 0000000000..a2eafcbc8b --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+55550.key @@ -0,0 +1,3 @@ +;% generationtime=20110125091120 +;% lifetime=3d +sub.example.de. IN DNSKEY 256 3 5 BQEAAAAB1+QMKtDQA7dd2FA5IMVv5Y/VQa1ueCB4ZgDqvDUkdmQ2STLE DwQuCoL26XId1SjEPQS47v3GBqTkSb0M/mSIsw== diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+55550.published b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+55550.published new file mode 100644 index 0000000000..d465b72ad9 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+55550.published @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: 1+QMKtDQA7dd2FA5IMVv5Y/VQa1ueCB4ZgDqvDUkdmQ2STLEDwQuCoL26XId1SjEPQS47v3GBqTkSb0M/mSIsw== +PublicExponent: AQAAAAE= +PrivateExponent: Kye03nJBn261AzC2UQAIVVOz0IUDAmIO/LqThB87QJc9xFPk+KQZDvn7+XaLReYSUZrgDadZozVyGCBwmTbKEQ== +Prime1: 8c3ijRfD1wTzd2CKDyO9Zzsq0r/DvH/30BL7QzB1/7s= +Prime2: 5JC0mXeSA3vDweMKht4bH44IXBPLuq9EGTVWDLolH2k= +Exponent1: jCN5Qm3qprCbs+lLPNJ1fIWWD6Zzg6tObVCputLFRqE= +Exponent2: ooEJXApdOWOj2g9rLuZ0jCEkARFtLd/fnvlEZfWOJFk= +Coefficient: GZIo2y2pmmjsXCZaHPzd6CGGkXRq1kOw2OCZ1NUcPWY= diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/dlvset-sub.example.de. b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/dlvset-sub.example.de. new file mode 100644 index 0000000000..c640dc1314 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/dlvset-sub.example.de. @@ -0,0 +1,6 @@ +sub.example.de.dlv.trusted-keys.net. IN DLV 32679 5 1 B2B115076F5BC2F2864D8ED1D63279193E5E7999 +sub.example.de.dlv.trusted-keys.net. IN DLV 32679 5 2 71B3896274A524028F131983D780C12CB38EA40E435815E9CC301749 26BFD367 +sub.example.de.dlv.trusted-keys.net. IN DLV 38331 5 1 8F7E90EE2686DAE4D31CEE40142AD6A25670B0A0 +sub.example.de.dlv.trusted-keys.net. IN DLV 38331 5 2 7B791220D03926DC6D3531CD155EF1E2AB202CE5955DF61079BEDD48 67400707 +sub.example.de.dlv.trusted-keys.net. IN DLV 51846 5 1 F0B3607F13FFE0C5AEF2ED24978FC8D42B391361 +sub.example.de.dlv.trusted-keys.net. IN DLV 51846 5 2 B067543FEAC9F203E9508672D802DEFD9F8AFF6CDBCC298B25C2CCED EDC813D8 diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/dnskey.db b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/dnskey.db new file mode 100644 index 0000000000..152e303229 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/dnskey.db @@ -0,0 +1,45 @@ +; +; !!! Don't edit this file by hand. +; !!! It will be generated by zkt-signer. +; +; Last generation time Jan 25 2011 19:39:31 +; + +; *** List of Key Signing Keys *** +; sub.example.de. tag=38331 algo=RSASHA1 generated Aug 26 2010 23:11:44 +sub.example.de. 14400 IN DNSKEY 257 3 5 ( + BQEAAAABzRcWJYuBn9eY8u4x+04jkYmSmfRaGuNc4soput6Fo2/HViu1 + 1Jo2uMnp4Z4MeGzti4IGsL2Lp5vC66qXeX0Qqk+aIJBQUyHCF1nPmPad + 2hDVFpD4Lp/uArmHaaLxQ4px6LEe0PMG1W/a/gJWNxuiTmkSN5c9vXsQ + m3SuRnb0ef0= + ) ; key id = 38331 + +; sub.example.de. tag=51846 algo=RSASHA1 generated Nov 27 2010 11:17:03 +sub.example.de. 14400 IN DNSKEY 257 3 5 ( + BQEAAAAB2CMCmaITzL7L6UmI0Y+u16LiyINgkYc3dxYunDYWK0FEXGa5 + L7ss8jepJnBM6KD/rekwqb5wgso/5VnSprhUUnQqec6ESuJ/9/ThI6i7 + zD6AnwdtXagTOaTRqWhUEcjgMIG4oJK/Pb5mZAlXvzPqmRkyeStRw0cU + AEWQvdtuDcc= + ) ; key id = 51846 + +; sub.example.de. tag=32679 algo=RSASHA1 generated Jan 25 2011 19:39:31 +sub.example.de. 14400 IN DNSKEY 257 3 5 ( + BQEAAAABocb52XnOJzaKKv90SFZxTddP7OuzI/qaeOqptm7BH3QKGTBj + ZmgfJ6J2uNXamzVEUGiAV5yLvPbxSAUK/R7HWP22ENqRxouZrQVUYfMC + pVS69kTGagTnMmywpg5LtCic9+18YRX2NhkxNvUpBjlTn7BbjXW36yy5 + sA1Uq+Rg2cU= + ) ; key id = 32679 + +; *** List of Zone Signing Keys *** +; sub.example.de. tag=27647 algo=RSASHA1 generated Jan 25 2011 10:11:20 +sub.example.de. 14400 IN DNSKEY 256 3 5 ( + BQEAAAAB5tuyJuCMHTySqvnPpVSbFcnFK6jI/BG3Va5Yu0ou7jPArylc + mziNb9AIJ2PBaVcXbeH6h9YWd9MLCLKPZqRLKQ== + ) ; key id = 27647 + +; sub.example.de. tag=55550 algo=RSASHA1 generated Jan 25 2011 10:11:20 +sub.example.de. 14400 IN DNSKEY 256 3 5 ( + BQEAAAAB1+QMKtDQA7dd2FA5IMVv5Y/VQa1ueCB4ZgDqvDUkdmQ2STLE + DwQuCoL26XId1SjEPQS47v3GBqTkSb0M/mSIsw== + ) ; key id = 55550 + diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/dnssec.conf b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/dnssec.conf new file mode 100644 index 0000000000..ef2b668ef3 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/dnssec.conf @@ -0,0 +1,16 @@ +## +## dnssec-zkt v0.4 (c) Jan 2005 hoz hznet de ## +## + +resigninterval 12h +sigvalidity 1d +max_ttl 90s + +ksk_lifetime 7d +key_algo RSASHA1 +ksk_bits 1024 + +zsk_lifetime 3d +zsk_bits 512 + +dlv_domain "dlv.trusted-keys.net" diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/dsset-sub.example.de. b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/dsset-sub.example.de. new file mode 100644 index 0000000000..b3e2e25dd6 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/dsset-sub.example.de. @@ -0,0 +1,6 @@ +sub.example.de. IN DS 32679 5 1 B2B115076F5BC2F2864D8ED1D63279193E5E7999 +sub.example.de. IN DS 32679 5 2 71B3896274A524028F131983D780C12CB38EA40E435815E9CC301749 26BFD367 +sub.example.de. IN DS 38331 5 1 8F7E90EE2686DAE4D31CEE40142AD6A25670B0A0 +sub.example.de. IN DS 38331 5 2 7B791220D03926DC6D3531CD155EF1E2AB202CE5955DF61079BEDD48 67400707 +sub.example.de. IN DS 51846 5 1 F0B3607F13FFE0C5AEF2ED24978FC8D42B391361 +sub.example.de. IN DS 51846 5 2 B067543FEAC9F203E9508672D802DEFD9F8AFF6CDBCC298B25C2CCED EDC813D8 diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/keyset-sub.example.de. b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/keyset-sub.example.de. new file mode 100644 index 0000000000..6b3a4d6211 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/keyset-sub.example.de. @@ -0,0 +1,22 @@ +$ORIGIN . +sub.example.de 7200 IN DNSKEY 257 3 5 ( + BQEAAAABocb52XnOJzaKKv90SFZxTddP7Ouz + I/qaeOqptm7BH3QKGTBjZmgfJ6J2uNXamzVE + UGiAV5yLvPbxSAUK/R7HWP22ENqRxouZrQVU + YfMCpVS69kTGagTnMmywpg5LtCic9+18YRX2 + NhkxNvUpBjlTn7BbjXW36yy5sA1Uq+Rg2cU= + ) ; key id = 32679 + 7200 IN DNSKEY 257 3 5 ( + BQEAAAABzRcWJYuBn9eY8u4x+04jkYmSmfRa + GuNc4soput6Fo2/HViu11Jo2uMnp4Z4MeGzt + i4IGsL2Lp5vC66qXeX0Qqk+aIJBQUyHCF1nP + mPad2hDVFpD4Lp/uArmHaaLxQ4px6LEe0PMG + 1W/a/gJWNxuiTmkSN5c9vXsQm3SuRnb0ef0= + ) ; key id = 38331 + 7200 IN DNSKEY 257 3 5 ( + BQEAAAAB2CMCmaITzL7L6UmI0Y+u16LiyINg + kYc3dxYunDYWK0FEXGa5L7ss8jepJnBM6KD/ + rekwqb5wgso/5VnSprhUUnQqec6ESuJ/9/Th + I6i7zD6AnwdtXagTOaTRqWhUEcjgMIG4oJK/ + Pb5mZAlXvzPqmRkyeStRw0cUAEWQvdtuDcc= + ) ; key id = 51846 diff --git a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+08544.key b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+08544.key similarity index 100% rename from contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+08544.key rename to contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+08544.key diff --git a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+08544.private b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+08544.private similarity index 100% rename from contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+08544.private rename to contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+08544.private diff --git a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+27861.key b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+27861.key similarity index 100% rename from contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+27861.key rename to contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+27861.key diff --git a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+27861.private b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+27861.private similarity index 100% rename from contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+27861.private rename to contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+27861.private diff --git a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+42639.key b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+42639.key similarity index 100% rename from contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+42639.key rename to contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+42639.key diff --git a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+42639.private b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+42639.private similarity index 100% rename from contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+42639.private rename to contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+42639.private diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/parent-sub.example.de. b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/parent-sub.example.de. new file mode 100644 index 0000000000..6c7f963191 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/parent-sub.example.de. @@ -0,0 +1,7 @@ +; KSK rollover phase1 (new key generated but this is alread the old one) +sub.example.de. 14400 IN DNSKEY 257 3 5 ( + BQEAAAABzRcWJYuBn9eY8u4x+04jkYmSmfRaGuNc4soput6Fo2/HViu1 + 1Jo2uMnp4Z4MeGzti4IGsL2Lp5vC66qXeX0Qqk+aIJBQUyHCF1nPmPad + 2hDVFpD4Lp/uArmHaaLxQ4px6LEe0PMG1W/a/gJWNxuiTmkSN5c9vXsQ + m3SuRnb0ef0= + ) ; key id = 38331 diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/zone.db b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/zone.db new file mode 100644 index 0000000000..d4611a5d6e --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/zone.db @@ -0,0 +1,25 @@ +;----------------------------------------------------------------- +; +; @(#) sub.example.de/zone.db +; +;----------------------------------------------------------------- + +$TTL 7200 + +@ IN SOA ns1.example.de. hostmaster.example.de. ( + 2011012503; Serial (up to 10 digits) + 86400 ; Refresh (RIPE recommendation if NOTIFY is used) + 1800 ; Retry + 2W ; Expire + 7200 ) ; Minimum + + + IN NS ns1.example.de. + +$INCLUDE dnskey.db + +localhost IN A 127.0.0.1 + +a IN A 1.2.3.4 +b IN A 1.2.3.5 +c IN A 1.2.3.6 diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/zone.db.signed b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/zone.db.signed new file mode 100644 index 0000000000..84ae34b2d6 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/sub.example.de/zone.db.signed @@ -0,0 +1,131 @@ +; File written on Tue Jan 25 19:39:31 2011 +; dnssec_signzone version 9.7.2-P2 +sub.example.de. 7200 IN SOA ns1.example.de. hostmaster.example.de. ( + 2011012503 ; serial + 86400 ; refresh (1 day) + 1800 ; retry (30 minutes) + 1209600 ; expire (2 weeks) + 7200 ; minimum (2 hours) + ) + 7200 RRSIG SOA 5 3 7200 20110126173931 ( + 20110125173931 27647 sub.example.de. + wbTvANOCw3T6BjH3ibeVrgAG2WJPmX09LZmX + P7xtuj9F1Kaj+EpXvQv37SaA8ldr0Ge25q3+ + KB0+dtpmxel7NQ== ) + 7200 NS ns1.example.de. + 7200 RRSIG NS 5 3 7200 20110126173931 ( + 20110125173931 27647 sub.example.de. + hvliLSJ7kw/6nZfrDHJ3nnvW3RjiYZMbYASL + IdKLGsytfU6zaypMXGiwxDo/k+BafY7V4xAM + RGxgMNRthCqOaQ== ) + 7200 NSEC a.sub.example.de. NS SOA RRSIG NSEC DNSKEY + 7200 RRSIG NSEC 5 3 7200 20110126173931 ( + 20110125173931 27647 sub.example.de. + fCX2CjTIm3XyOXhPZni/e21bTKmdZlW9keBX + pb9hEYY5/D3UJWzkVNpVeQ0e1n3QQvwklLda + ezrP/SfZDzIwbg== ) + 14400 DNSKEY 256 3 5 ( + BQEAAAAB1+QMKtDQA7dd2FA5IMVv5Y/VQa1u + eCB4ZgDqvDUkdmQ2STLEDwQuCoL26XId1SjE + PQS47v3GBqTkSb0M/mSIsw== + ) ; key id = 55550 + 14400 DNSKEY 256 3 5 ( + BQEAAAAB5tuyJuCMHTySqvnPpVSbFcnFK6jI + /BG3Va5Yu0ou7jPArylcmziNb9AIJ2PBaVcX + beH6h9YWd9MLCLKPZqRLKQ== + ) ; key id = 27647 + 14400 DNSKEY 257 3 5 ( + BQEAAAABocb52XnOJzaKKv90SFZxTddP7Ouz + I/qaeOqptm7BH3QKGTBjZmgfJ6J2uNXamzVE + UGiAV5yLvPbxSAUK/R7HWP22ENqRxouZrQVU + YfMCpVS69kTGagTnMmywpg5LtCic9+18YRX2 + NhkxNvUpBjlTn7BbjXW36yy5sA1Uq+Rg2cU= + ) ; key id = 32679 + 14400 DNSKEY 257 3 5 ( + BQEAAAABzRcWJYuBn9eY8u4x+04jkYmSmfRa + GuNc4soput6Fo2/HViu11Jo2uMnp4Z4MeGzt + i4IGsL2Lp5vC66qXeX0Qqk+aIJBQUyHCF1nP + mPad2hDVFpD4Lp/uArmHaaLxQ4px6LEe0PMG + 1W/a/gJWNxuiTmkSN5c9vXsQm3SuRnb0ef0= + ) ; key id = 38331 + 14400 DNSKEY 257 3 5 ( + BQEAAAAB2CMCmaITzL7L6UmI0Y+u16LiyINg + kYc3dxYunDYWK0FEXGa5L7ss8jepJnBM6KD/ + rekwqb5wgso/5VnSprhUUnQqec6ESuJ/9/Th + I6i7zD6AnwdtXagTOaTRqWhUEcjgMIG4oJK/ + Pb5mZAlXvzPqmRkyeStRw0cUAEWQvdtuDcc= + ) ; key id = 51846 + 14400 RRSIG DNSKEY 5 3 14400 20110126173931 ( + 20110125173931 27647 sub.example.de. + sg/apLP8ejq7KT+djaUwJqizKG4tq1jTLMLt + NHLn/68rX5w4dY8DTeYxexb4r8Z23kVb0bg+ + lJmmBy5j2r8SMg== ) + 14400 RRSIG DNSKEY 5 3 14400 20110126173931 ( + 20110125173931 32679 sub.example.de. + bzzolxuy/5cXaTOvYDGz+xiRffMSQUSCRicG + jN2InbD0oghm9IlZYaerY3Cx4ta0xitl63Fa + 9n8DAb409BU+uR3SKw+EMQwdEhn1ixslf7Er + N9nyPz+3hCteJ89htoyGBRehQbw3LkFsHPKS + 1q62yU3+dLOLqiJUGgXinFwZ81o= ) + 14400 RRSIG DNSKEY 5 3 14400 20110126173931 ( + 20110125173931 38331 sub.example.de. + nflCKXmANdTDh1g72GpT5JzeaE9u+kZ6Kkds + q4VbnnZjmv8flpsqH9XHV6QU7W7pFhLQ9i9X + qYVPL5HzoZn0q4m08h2z9VCrfCVzfOZVr6S2 + TnL/RTbSRXMHwU63bMM7FNbPz2JlajNAIpfW + 7uHjqoQEWRcJ8ee7JkW5tiu5/5A= ) + 14400 RRSIG DNSKEY 5 3 14400 20110126173931 ( + 20110125173931 51846 sub.example.de. + WaCBxN/IXv3g2NtoBm2epHkZqBTMONadExfN + 0rWSV0mazdli950enMmBwwIEZK+0FVwLpv4Z + zgL5BHuPim7ObqnR6wM1gOpi65lU8IX5Ilbv + OIrUZ5g0O1rYHUjaQKtKBTcgOo7ZtutIj4gc + Xn+2dark9is8EoDHripF5TkDJgU= ) +a.sub.example.de. 7200 IN A 1.2.3.4 + 7200 RRSIG A 5 4 7200 20110126173931 ( + 20110125173931 27647 sub.example.de. + zXzioVSpADspftLWazy+jcGRxHytDuZtUBkD + dsjcU3fy6a8atHbcwUjd43rwzazxphVcL/sM + CeWz5ZcXkYCWeQ== ) + 7200 NSEC b.sub.example.de. A RRSIG NSEC + 7200 RRSIG NSEC 5 4 7200 20110126173931 ( + 20110125173931 27647 sub.example.de. + k6LWx56HsWiDm7DLUShd97q7dprzDXaocGVL + UPB35LGLUzZIGx/80K+ppeqAD2KoiJ/d+jBi + ZwtomkSGusfVIA== ) +b.sub.example.de. 7200 IN A 1.2.3.5 + 7200 RRSIG A 5 4 7200 20110126173931 ( + 20110125173931 27647 sub.example.de. + b90i/duKEbOBKWDJ39xTlMbGJ3DqdTUCdH1y + sTs96Ea2PZFNoCenAssREGxLG/SdArErfdOC + Q1zCi5z2cYYeyg== ) + 7200 NSEC c.sub.example.de. A RRSIG NSEC + 7200 RRSIG NSEC 5 4 7200 20110126173931 ( + 20110125173931 27647 sub.example.de. + EGurYn3qRMV+uwzTGq9asXnpKvLhX3qZhQh/ + Tb3AiQ+Oyl+PzfDjP1BI8jqejNTwvlRWBL4H + RRBZMN/Pnn22bw== ) +c.sub.example.de. 7200 IN A 1.2.3.6 + 7200 RRSIG A 5 4 7200 20110126173931 ( + 20110125173931 27647 sub.example.de. + DCFyTIcXCMd3wIdwLjDNXOINmMcQ1tYBzgry + JnZZecok5A6TPXCQ5PrErgwWl6h9URa8M6Kd + Yg6jLpDMcmdNug== ) + 7200 NSEC localhost.sub.example.de. A RRSIG NSEC + 7200 RRSIG NSEC 5 4 7200 20110126173931 ( + 20110125173931 27647 sub.example.de. + cUvw2e+2VlJVaFGF5zciADg3W/DMz2zeLTlp + bEav7jr7xFJdg9twcr+WtKh9xyAraH/0eqT8 + cs3z8i81I/Dgzg== ) +localhost.sub.example.de. 7200 IN A 127.0.0.1 + 7200 RRSIG A 5 4 7200 20110126173931 ( + 20110125173931 27647 sub.example.de. + eKi4L2xErnSUAPH3jGWtLShBTab/ZMC86wdf + F8jRpWkNzMqpxhmEOgeCnCA1cm3Ua/vrSSpA + HmPpxba/FXtOkg== ) + 7200 NSEC sub.example.de. A RRSIG NSEC + 7200 RRSIG NSEC 5 4 7200 20110126173931 ( + 20110125173931 27647 sub.example.de. + texCzbZHYWVAyNKaR2otusOB3nzL3NMPYApC + Lg7vi4wuk08gC4CvTbEHz+4I7ZeWrMIHwNTp + vsE/tnmaVsHM6Q== ) diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/zone.db b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/zone.db new file mode 100644 index 0000000000..3a140b2c41 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/zone.db @@ -0,0 +1,38 @@ +;----------------------------------------------------------------- +; +; @(#) example.de/zone.db +; +;----------------------------------------------------------------- + +$TTL 7200 + +; Ensure that the serial number below is left +; justified in a field of at least 10 chars!! +; 0123456789; +; It's also possible to use the date format e.g. 2005040101 +@ IN SOA ns1.example.de. hostmaster.example.de. ( + 315 ; Serial + 43200 ; Refresh + 1800 ; Retry + 2W ; Expire + 7200 ) ; Minimum + + + IN NS ns1.example.de. + IN NS ns2.example.de. + +ns1 IN A 1.0.0.5 + IN AAAA 2001:db8::53 +ns2 IN A 1.2.0.6 + +localhost IN A 127.0.0.1 + +; Delegation to secure zone; The DS resource record will +; be added by dnssec-signzone automatically if the +; keyset-sub.example.de file is present (run dnssec-signzone +; with option -g or use the dnssec-signer tool) ;-) +sub IN NS ns1.example.de. + +; this file will contain all the zone keys +$INCLUDE dnskey.db + diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/zone.db.signed b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/zone.db.signed new file mode 100644 index 0000000000..33f2c363e3 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/zone.db.signed @@ -0,0 +1,129 @@ +; File written on Tue Jan 25 19:39:31 2011 +; dnssec_signzone version 9.7.2-P2 +example.de. 7200 IN SOA ns1.example.de. hostmaster.example.de. ( + 315 ; serial + 43200 ; refresh (12 hours) + 1800 ; retry (30 minutes) + 1209600 ; expire (2 weeks) + 7200 ; minimum (2 hours) + ) + 7200 RRSIG SOA 5 2 7200 20110215173931 ( + 20110125173931 60407 example.de. + D25r9o5y0UlIClgAHwOq9P1/prHCO3/KI/91 + ZHUOA1HPvRt/EW4vQdHNsZPzTgbEZlkrzK1B + f9Z8FRjiPwwuTg== ) + 7200 NS ns1.example.de. + 7200 NS ns2.example.de. + 7200 RRSIG NS 5 2 7200 20110215173931 ( + 20110125173931 60407 example.de. + UDFg0Wr335Zhx2JZNw7ctla8EpFv+8eVjh8Y + YDv47XmCXuazL4EZV3efeU4wnuxmphL02j8X + NLpnUVnRP2QufQ== ) + 7200 NSEC localhost.example.de. NS SOA RRSIG NSEC DNSKEY + 7200 RRSIG NSEC 5 2 7200 20110215173931 ( + 20110125173931 60407 example.de. + K2wUxsJtWVpASeYbWyG58uK4DK8w+TRTSRiJ + aYtgUDjUGeUeNbHaT1FhfXl4xpNts/irmB6K + YDeVNvnB7piRPw== ) + 14400 DNSKEY 256 3 5 ( + BQEAAAABw62oxcUQ8mF4T6zH+tAkM0FU3nXJ + 4sgnBSUa884gZL2AlG+t7FpwrRm/Hish/hxV + RzmM8q2srgLHBYAk12VkMQ== + ) ; key id = 60407 + 14400 DNSKEY 256 3 5 ( + BQEAAAAB13b8+4oBaYaLYdDvH6fwVwDfohlz + GdSu5A9nO/wJ1taCB+4Twn3TSAtlttLmzYad + 5EbBUIn+4CLBKmc4sKn/cw== + ) ; key id = 25598 + 14400 DNSKEY 257 3 5 ( + BQEAAAABDOkPawC/tCqSITj6lvzcIPwcMEX+ + Nvz17GBu85jmigMuvZQUYZBVUmJNNBbCNStl + z+Y+1pGg9HbWFvn0tpH/bm4mZPlJmk+WxQhH + z7eTm5xhSaSEEzq0uf087tAbaq1yaTpTtA2R + 7JXIPxt6CuD9Ou5bbYOzrFnBq1VBAYrwB6t/ + us10+Ab7T6Jvie/W+v4jto1Xx912Z8HHTbU4 + 8Mlp1+mUjQ== + ) ; key id = 37983 + 14400 DNSKEY 257 3 5 ( + BQEAAAABDV7kFHqVcWLoSAShdlXU5LKUdyU4 + LlsJGYMr8oIpjEzvwonRmX5pRiEjVhTwx+vx + 6eWluv6txXVu+F0g2ykmqUQdMfPYWmD9AJOq + vc2tCKVSRePqZ+HeIZR+heBnFKr5kWQmB5XO + lMdWNRA3y78s/LufVB8hD7r260jrVJ0W6wSM + GDjN4zQce8rHCe+LNB1GfaIASkMWjdgxNNAs + K9bqDM8Euw== + ) ; key id = 47280 + 14400 RRSIG DNSKEY 5 2 14400 20110215173931 ( + 20110125173931 47280 example.de. + AiQOEpltQhIL1w1bnStthur44g28NqsYjUfV + BU5yNlEs84I+U3N2qpTC8dske08pwOikBCFG + Yao6Dglj4zi5dbFbp+ssErNWTOX1khHe8FvI + keq7lkbMDoOeiecJ5paN2/yV5gX3Vn0RZXJb + CQFVdrNLQ8gKdMga9YKw70n43MxdgkDJRIVo + gUxKkMaMo/g2KORJf4iOZPRvLfkwFb/QgTsx + Eg== ) + 14400 RRSIG DNSKEY 5 2 14400 20110215173931 ( + 20110125173931 60407 example.de. + iomqvy1Na7p8UHNl9U8hgHqg+BBe7lwPNMv7 + Tur+g2ss3LYZkvkwZgdhP/MNQgF0BTrFIK/n + vjk+0gQ9RFqKbA== ) +localhost.example.de. 7200 IN A 127.0.0.1 + 7200 RRSIG A 5 3 7200 20110215173931 ( + 20110125173931 60407 example.de. + EzoKkOXLzlKf9rTaxofUW5uAmsaIZe2Jrf/R + FgPsnDvXDkGIeA54f+uw0+alWKb4gMgynJJ+ + jjuF3d4TsoLC4A== ) + 7200 NSEC ns1.example.de. A RRSIG NSEC + 7200 RRSIG NSEC 5 3 7200 20110215173931 ( + 20110125173931 60407 example.de. + BPjsJrlWAQNSqVOJ5hRb1iL8ABPdGID+qdYF + AWHYpZOsMg3TXsmOfsrZ8tzJ44Ag0FmHdWYr + cSaie8XqF3dndw== ) +ns1.example.de. 7200 IN A 1.0.0.5 + 7200 RRSIG A 5 3 7200 20110215173931 ( + 20110125173931 60407 example.de. + FZu2Oy/7txl4G47fh2gn/f0k4+9YqbdMaCoj + DK/5LCUjQIzK+YHMKnurZVmMSbvFCCCcKgUd + rBO1Kbc3ZFRUDg== ) + 7200 AAAA 2001:db8::53 + 7200 RRSIG AAAA 5 3 7200 20110215173931 ( + 20110125173931 60407 example.de. + ckrkMyljZdlHRMzYceGk/Upzbmijw2bPrhda + 6y9l+yS/zOCYQ3qGfzLFDLUPeMDLEL5f7gxa + adKw2t8cu/BLnw== ) + 7200 NSEC ns2.example.de. A AAAA RRSIG NSEC + 7200 RRSIG NSEC 5 3 7200 20110215173931 ( + 20110125173931 60407 example.de. + fZadcPS/Zhf+DKNupxsEZOSWm8mC1aimYHSi + 00zMJL5oZdUCXgsJYha69s8gtOn12K95doRw + 2AP6FArRosKy3Q== ) +ns2.example.de. 7200 IN A 1.2.0.6 + 7200 RRSIG A 5 3 7200 20110215173931 ( + 20110125173931 60407 example.de. + QXIJk7GcV6+LlGEtrClHCS2ddj/9fqtqKD9h + BfADqhMYLlVKjQe8grBdgOdbvvmAiSibdbJI + 4lFjh6EkXglPIg== ) + 7200 NSEC sub.example.de. A RRSIG NSEC + 7200 RRSIG NSEC 5 3 7200 20110215173931 ( + 20110125173931 60407 example.de. + HbXCvcFWhQZwhPsyHxht7auAMyYrqOhhI3/Q + S+1jwao3ejHJRMdTWrTgyBAXMJpS1SeMnD9i + Dx7A5OvtVUoj7g== ) +sub.example.de. 7200 IN NS ns1.example.de. + 7200 DS 38331 5 1 ( + 8F7E90EE2686DAE4D31CEE40142AD6A25670 + B0A0 ) + 7200 DS 38331 5 2 ( + 7B791220D03926DC6D3531CD155EF1E2AB20 + 2CE5955DF61079BEDD4867400707 ) + 7200 RRSIG DS 5 3 7200 20110215173931 ( + 20110125173931 60407 example.de. + GJcNtYbOxbVYA73qgH9bpPvrVIBbUqD0y/dX + ZAA1ZpXc3Kz7a4Dzr4fn20KiGF0/huYoo5vt + kU+GHU3wuUTtTQ== ) + 7200 NSEC example.de. NS DS RRSIG NSEC + 7200 RRSIG NSEC 5 3 7200 20110215173931 ( + 20110125173931 60407 example.de. + LQT1mxY77PpPtpdrjZ5HAzxsQDar+6bsodd9 + TWNvagqjzvfLTC5Lc5Jy63YmdVkZNmH0RCBP + ciRqPQYlvMx8rg== ) diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/zone.soa b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/zone.soa new file mode 100644 index 0000000000..9b200c1bd7 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/example.de/zone.soa @@ -0,0 +1,10 @@ +; Be sure that the serial number below is left +; justified in a field of at least 10 chars!! +; 0123456789; +; It's also possible to use the date form e.g. 2005040101 +@ IN SOA ns1.example.de. hostmaster.example.de. ( + 267 ; Serial + 43200 ; Refresh + 1800 ; Retry + 2W ; Expire + 7200 ) ; Minimum diff --git a/contrib/zkt-1.1.2/examples/hierarchical/de/keyset-example.de. b/contrib/zkt-1.1.2/examples/hierarchical/de/keyset-example.de. new file mode 100644 index 0000000000..27a14419fa --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/de/keyset-example.de. @@ -0,0 +1,19 @@ +$ORIGIN . +example.de 7200 IN DNSKEY 257 3 5 ( + BQEAAAABDOkPawC/tCqSITj6lvzcIPwcMEX+ + Nvz17GBu85jmigMuvZQUYZBVUmJNNBbCNStl + z+Y+1pGg9HbWFvn0tpH/bm4mZPlJmk+WxQhH + z7eTm5xhSaSEEzq0uf087tAbaq1yaTpTtA2R + 7JXIPxt6CuD9Ou5bbYOzrFnBq1VBAYrwB6t/ + us10+Ab7T6Jvie/W+v4jto1Xx912Z8HHTbU4 + 8Mlp1+mUjQ== + ) ; key id = 37983 + 7200 IN DNSKEY 257 3 5 ( + BQEAAAABDV7kFHqVcWLoSAShdlXU5LKUdyU4 + LlsJGYMr8oIpjEzvwonRmX5pRiEjVhTwx+vx + 6eWluv6txXVu+F0g2ykmqUQdMfPYWmD9AJOq + vc2tCKVSRePqZ+HeIZR+heBnFKr5kWQmB5XO + lMdWNRA3y78s/LufVB8hD7r260jrVJ0W6wSM + GDjN4zQce8rHCe+LNB1GfaIASkMWjdgxNNAs + K9bqDM8Euw== + ) ; key id = 47280 diff --git a/contrib/zkt-1.1.2/examples/hierarchical/dnssec.conf b/contrib/zkt-1.1.2/examples/hierarchical/dnssec.conf new file mode 100644 index 0000000000..76dc458bbc --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/dnssec.conf @@ -0,0 +1,44 @@ +# +# @(#) dnssec.conf T1.0rc1 (c) Feb 2005 - Mar 2010 Holger Zuleger hznet.de +# + +# dnssec-zkt options +Zonedir: "." +Recursive: True +PrintTime: False +PrintAge: True +LeftJustify: False + +# zone specific values +ResignInterval: 1w # (604800 seconds) +Sigvalidity: 10d # (864000 seconds) +Max_TTL: 6h # (21600 seconds) +Propagation: 5m # (300 seconds) +KEY_TTL: 1h # (3600 seconds) +Serialformat: incremental + +# signing key parameters +Key_Algo: RSASHA1 # (Algorithm ID 5) +KSK_lifetime: 30d +KSK_bits: 1300 +KSK_randfile: "/dev/urandom" +ZSK_lifetime: 10d +ZSK_bits: 512 +ZSK_randfile: "/dev/urandom" +SaltBits: 24 + +# dnssec-signer options +LogFile: "log" +LogLevel: INFO +LogDomainDir: "log" +SyslogFacility: USER +SyslogLevel: NOTICE +VerboseLog: 0 +Keyfile: "dnskey.db" +Zonefile: "zone.db" +KeySetDir: ".." +DLV_Domain: "" +Sig_Pseudorand: True +Sig_GenerateDS: True +Sig_DnsKeyKSK: True +Sig_Parameter: "" diff --git a/contrib/zkt/examples/hierarchical/log/zktlog-example.de. b/contrib/zkt-1.1.2/examples/hierarchical/log/zktlog-example.de. similarity index 67% rename from contrib/zkt/examples/hierarchical/log/zktlog-example.de. rename to contrib/zkt-1.1.2/examples/hierarchical/log/zktlog-example.de. index ffae0f0dde..bf0252f3c3 100644 --- a/contrib/zkt/examples/hierarchical/log/zktlog-example.de. +++ b/contrib/zkt-1.1.2/examples/hierarchical/log/zktlog-example.de. @@ -14,3 +14,11 @@ 2010-04-01 01:05:48.848: notice: "example.de.": lifetime of zone signing key 39599 exceeded since 43m41s: ZSK rollover deferred: waiting for published key 2010-04-01 01:05:48.928: info: "example.de.": new key 9743 generated for publishing 2010-04-01 01:05:48.929: notice: "example.de.": re-signing triggered: Modfied zone key set +2010-08-26 22:54:24.762: notice: "example.de.": lifetime of zone signing key 39599 exceeded: ZSK rollover done +2010-08-26 22:54:24.837: info: "example.de.": new key 18539 generated for publishing +2010-08-26 22:54:24.837: notice: "example.de.": re-signing triggered: Modfied zone key set +2010-08-26 23:11:44.548: notice: "example.de.": re-signing triggered: Modified KSK in delegated domain +2010-10-21 13:41:23.152: info: "example.de.": old ZSK 39599 removed +2010-10-21 13:41:23.152: notice: "example.de.": lifetime of zone signing key 9743 exceeded: ZSK rollover done +2010-10-21 13:41:23.152: notice: "example.de.": re-signing triggered: Modfied zone key set +2011-01-25 10:13:58.477: notice: "example.de.": re-signing triggered: Modified KSK in delegated domain diff --git a/contrib/zkt/examples/hierarchical/log/zktlog-sub.example.de. b/contrib/zkt-1.1.2/examples/hierarchical/log/zktlog-sub.example.de. similarity index 70% rename from contrib/zkt/examples/hierarchical/log/zktlog-sub.example.de. rename to contrib/zkt-1.1.2/examples/hierarchical/log/zktlog-sub.example.de. index d0d0e12e28..681565118a 100644 --- a/contrib/zkt/examples/hierarchical/log/zktlog-sub.example.de. +++ b/contrib/zkt-1.1.2/examples/hierarchical/log/zktlog-sub.example.de. @@ -31,3 +31,17 @@ 2010-04-01 01:05:48.169: notice: "sub.example.de.": lifetime of zone signing key 63530 exceeded: ZSK rollover done 2010-04-01 01:05:48.650: info: "sub.example.de.": new key 40559 generated for publishing 2010-04-01 01:05:48.650: notice: "sub.example.de.": re-signing triggered: Modfied zone key set +2010-08-26 22:54:24.495: info: "sub.example.de.": kskrollover phase3: Remove old key 8544 +2010-08-26 22:54:24.495: info: "sub.example.de.": old ZSK 63530 removed +2010-08-26 22:54:24.513: notice: "sub.example.de.": lifetime of zone signing key 7295 exceeded: ZSK rollover done +2010-08-26 22:54:24.617: info: "sub.example.de.": new key 25007 generated for publishing +2010-08-26 22:54:24.617: notice: "sub.example.de.": re-signing triggered: Modfied zone key set +2010-08-26 23:11:44.485: info: "sub.example.de.": kskrollover phase1: New key 38331 generated +2010-08-26 23:11:44.485: info: "sub.example.de.": old ZSK 7295 removed +2010-08-26 23:11:44.513: notice: "sub.example.de.": re-signing triggered: Modfied zone key set +2010-10-21 13:41:22.956: info: "sub.example.de.": kskrollover phase2: send new key 27861 to the parent zone +2010-10-21 13:41:22.956: notice: "sub.example.de.": lifetime of zone signing key 40559 exceeded: ZSK rollover done +2010-10-21 13:41:22.956: notice: "sub.example.de.": re-signing triggered: Modfied zone key set +2010-10-21 14:30:47.663: info: "sub.example.de.": old ZSK 40559 removed +2010-10-21 14:30:47.663: notice: "sub.example.de.": re-signing triggered: Modfied zone key set +2011-01-25 10:15:57.334: notice: "sub.example.de.": re-signing triggered: Zone file edited diff --git a/contrib/zkt-1.1.2/examples/hierarchical/named.conf b/contrib/zkt-1.1.2/examples/hierarchical/named.conf new file mode 100644 index 0000000000..8bd3f9db7c --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/named.conf @@ -0,0 +1,102 @@ +/***************************************************************** +** +** #(@) named.conf (c) 6. May 2004 (hoz) +** +*****************************************************************/ + +/***************************************************************** +** logging options +*****************************************************************/ +logging { + channel "named-log" { + file "/var/log/named" versions 3 size 2m; + print-time yes; + print-category yes; + print-severity yes; + severity info; + }; + channel "resolver-log" { + file "/var/log/named"; + print-time yes; + print-category yes; + print-severity yes; + severity debug 1; + }; + channel "dnssec-log" { +# file "/var/log/named-dnssec" ; + file "/var/log/named" ; + print-time yes; + print-category yes; + print-severity yes; + severity debug 3; + }; + category "dnssec" { "dnssec-log"; }; + category "default" { "named-log"; }; + category "resolver" { "resolver-log"; }; + category "client" { "resolver-log"; }; + category "queries" { "resolver-log"; }; +}; + +/***************************************************************** +** name server options +*****************************************************************/ +options { + directory "."; + + dump-file "/var/log/named_dump.db"; + statistics-file "/var/log/named.stats"; + + listen-on-v6 { any; }; + + query-source address * port 53; + transfer-source * port 53; + notify-source * port 53; + + recursion yes; + dnssec-enable yes; + edns-udp-size 4096; + +# dnssec-lookaside "." trust-anchor "trusted-keys.de."; + + querylog yes; + +}; + +/***************************************************************** +** include shared secrets... +*****************************************************************/ +/** for control sessions ... **/ +# include "rndc.key"; +controls { + inet 127.0.0.1 + allow { localhost; } + keys { "rndc-key"; }; + inet ::1 + allow { localhost; } + keys { "rndc-key"; }; +}; + +/***************************************************************** +** ... and trusted_keys +*****************************************************************/ +# include "trusted-keys.conf" ; + +/***************************************************************** +** root server hints and required 127 stuff +*****************************************************************/ +zone "." in { + type hint; + file "root.hint"; +}; + +zone "localhost" in { + type master; + file "localhost.zone"; +}; + +zone "0.0.127.in-addr.arpa" in { + type master; + file "127.0.0.zone"; +}; + +include "zone.conf"; diff --git a/contrib/zkt-1.1.2/examples/hierarchical/zkt-ls b/contrib/zkt-1.1.2/examples/hierarchical/zkt-ls new file mode 120000 index 0000000000..c513980564 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/zkt-ls @@ -0,0 +1 @@ +../zkt-ls.sh \ No newline at end of file diff --git a/contrib/zkt-1.1.2/examples/hierarchical/zkt-signer b/contrib/zkt-1.1.2/examples/hierarchical/zkt-signer new file mode 120000 index 0000000000..b5f367de78 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/zkt-signer @@ -0,0 +1 @@ +../zkt-signer.sh \ No newline at end of file diff --git a/contrib/zkt-1.1.2/examples/hierarchical/zone.conf b/contrib/zkt-1.1.2/examples/hierarchical/zone.conf new file mode 100644 index 0000000000..afd5a739fb --- /dev/null +++ b/contrib/zkt-1.1.2/examples/hierarchical/zone.conf @@ -0,0 +1,10 @@ + +zone "example.de." in { + type master; + file "de/example.de/zone.db.signed"; +}; + +zone "sub.example.de." in { + type master; + file "de/example.de/sub.example.de/zone.db.signed"; +}; diff --git a/contrib/zkt-1.1.2/examples/views/dnssec-extern.conf b/contrib/zkt-1.1.2/examples/views/dnssec-extern.conf new file mode 100644 index 0000000000..728dcc9431 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/dnssec-extern.conf @@ -0,0 +1,39 @@ +# +# @(#) dnssec.conf vT0.96 (c) Feb 2005 - May 2008 Holger Zuleger hznet.de +# + +# dnssec-zkt options +Zonedir: "extern" +Recursive: True +PrintTime: False +PrintAge: True +LeftJustify: False + +# zone specific values +ResignInterval: 1w # (604800 seconds) +Sigvalidity: 10d # (864000 seconds) +Max_TTL: 8h # (28800 seconds) +Propagation: 5m # (300 seconds) +KEY_TTL: 1h # (3600 seconds) +Serialformat: unixtime + +# signing key parameters +KSK_lifetime: 1y # (31536000 seconds) +KSK_algo: RSASHA1 # (Algorithm ID 5) +KSK_bits: 1300 +KSK_randfile: "/dev/urandom" +ZSK_lifetime: 30d # (2592000 seconds) +ZSK_algo: RSASHA1 # (Algorithm ID 5) +ZSK_bits: 512 +ZSK_randfile: "/dev/urandom" + +# dnssec-signer options +LogFile: "zkt-ext.log" +LogLevel: "debug" +SyslogFacility: "none" +SyslogLevel: "notice" +VerboseLog: 2 +Keyfile: "dnskey.db" +Zonefile: "zone.db" +DLV_Domain: "" +Sig_Pseudorand: True diff --git a/contrib/zkt-1.1.2/examples/views/dnssec-intern.conf b/contrib/zkt-1.1.2/examples/views/dnssec-intern.conf new file mode 100644 index 0000000000..d49fc94664 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/dnssec-intern.conf @@ -0,0 +1,39 @@ +# +# @(#) dnssec.conf vT0.96 (c) Feb 2005 - May 2008 Holger Zuleger hznet.de +# + +# dnssec-zkt options +Zonedir: "intern" +Recursive: True +PrintTime: False +PrintAge: True +LeftJustify: False + +# zone specific values +ResignInterval: 5h # (18000 seconds) +Sigvalidity: 1d # (86400 seconds) +Max_TTL: 30m # (1800 seconds) +Propagation: 1m # (60 seconds) +KEY_TTL: 30m # (1800 seconds) +Serialformat: unixtime + +# signing key parameters +KSK_lifetime: 1y # (31536000 seconds) +KSK_algo: RSASHA1 # (Algorithm ID 5) +KSK_bits: 1300 +KSK_randfile: "/dev/urandom" +ZSK_lifetime: 30d # (2592000 seconds) +ZSK_algo: RSASHA1 # (Algorithm ID 5) +ZSK_bits: 512 +ZSK_randfile: "/dev/urandom" + +# dnssec-signer options +LogFile: "zkt-int.log" +LogLevel: "debug" +SyslogFacility: "none" +SyslogLevel: "notice" +VerboseLog: 2 +Keyfile: "dnskey.db" +Zonefile: "zone.db" +DLV_Domain: "" +Sig_Pseudorand: True diff --git a/contrib/zkt-1.1.2/examples/views/dnssec-signer-extern b/contrib/zkt-1.1.2/examples/views/dnssec-signer-extern new file mode 100644 index 0000000000..910e82aa8d --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/dnssec-signer-extern @@ -0,0 +1,7 @@ +#!/bin/sh +# +# Shell script to start the dnssec-signer +# command out of the view directory +# + +ZKT_CONFFILE=`pwd`/dnssec.conf ../../dnssec-signer -V extern "$@" diff --git a/contrib/zkt-1.1.2/examples/views/dnssec-signer-intern b/contrib/zkt-1.1.2/examples/views/dnssec-signer-intern new file mode 100644 index 0000000000..915ed153c4 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/dnssec-signer-intern @@ -0,0 +1,7 @@ +#!/bin/sh +# +# Shell script to start the dnssec-signer +# command out of the view directory +# + +ZKT_CONFFILE=`pwd`/dnssec.conf ../../dnssec-signer -V intern "$@" diff --git a/contrib/zkt-1.1.2/examples/views/dnssec-zkt-extern b/contrib/zkt-1.1.2/examples/views/dnssec-zkt-extern new file mode 100644 index 0000000000..129b4e1004 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/dnssec-zkt-extern @@ -0,0 +1,7 @@ +#!/bin/sh +# +# Shell script to start the dnssec-zkt command +# out of the view directory +# + +ZKT_CONFFILE=`pwd`/dnssec.conf ../../dnssec-zkt --view extern "$@" diff --git a/contrib/zkt-1.1.2/examples/views/dnssec-zkt-intern b/contrib/zkt-1.1.2/examples/views/dnssec-zkt-intern new file mode 100644 index 0000000000..1836840f8d --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/dnssec-zkt-intern @@ -0,0 +1,7 @@ +#!/bin/sh +# +# Shell script to start the dnssec-zkt command +# out of the view directory +# + +ZKT_CONFFILE=`pwd`/dnssec.conf ../../dnssec-zkt --view intern "$@" diff --git a/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+08885.key b/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+08885.key new file mode 100644 index 0000000000..d4b9e8f0cc --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+08885.key @@ -0,0 +1,3 @@ +;% generationtime=20110125091121 +;% lifetime=84d +example.net. IN DNSKEY 256 3 5 BQEAAAABqSWPYNt6RitV7CJxyFXjIPeP6zSXtBki5cAiVVA3SdX0cBs6 gWttgt+wxEPMApn/ncgjqcUHTJEVHyd/TrL/Aw== diff --git a/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+08885.published b/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+08885.published new file mode 100644 index 0000000000..fc85be4c37 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+08885.published @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: qSWPYNt6RitV7CJxyFXjIPeP6zSXtBki5cAiVVA3SdX0cBs6gWttgt+wxEPMApn/ncgjqcUHTJEVHyd/TrL/Aw== +PublicExponent: AQAAAAE= +PrivateExponent: ZcFZXvGGkc0uEOtIHBJaTdBpl/aTKs4xGhG/eOMinMPHbUPlL5R1KL/27O+KQnfs1xjwz48w5Xos8CoTG+1n0Q== +Prime1: 1ho0OW0hJVUICO4jthhzFp2ETYke7vssfhq2oKrsjgk= +Prime2: yj87c5Ewsksm+SsHsBQVC6Gd6P19Yu+ZY7dPeBvW56s= +Exponent1: LwSIjbnndDmgi0pCo0CW95qvG1VEUniUQQmYmda/L7k= +Exponent2: jsIwd0hy3NXOjUbXkeT25G/3QNQcXcIwHzupbZLpuh0= +Coefficient: VRdfIjOr87SWcUBSP9wQGjD1GcCsV3OQ0u03QQwofmo= diff --git a/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+23553.key b/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+23553.key new file mode 100644 index 0000000000..ec11dcb5e4 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+23553.key @@ -0,0 +1 @@ +example.net. IN DNSKEY 257 3 5 BQEAAAABDEEycfY6uqWNTpQO8ygi9xms6NOFYGhCjijN109fVGJ4KDnI ZtLhoFrOKru9rZn+pyqurlyZG4vESg0BMty6xljVDlr/TegDYFTN19mQ uwvlasJhZPv9pjROPqQGnqLaw3O4OKCY9HgTTPdXK1hQ4Mg2rNU4SM2T u5ki91f5AQqiXF8KYMics0mwVvpj5C2YTDvE9SafLrce68JM6DaiC6E1 sQ== diff --git a/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+23553.private b/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+23553.private new file mode 100644 index 0000000000..ea294474c0 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+23553.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: DEEycfY6uqWNTpQO8ygi9xms6NOFYGhCjijN109fVGJ4KDnIZtLhoFrOKru9rZn+pyqurlyZG4vESg0BMty6xljVDlr/TegDYFTN19mQuwvlasJhZPv9pjROPqQGnqLaw3O4OKCY9HgTTPdXK1hQ4Mg2rNU4SM2Tu5ki91f5AQqiXF8KYMics0mwVvpj5C2YTDvE9SafLrce68JM6DaiC6E1sQ== +PublicExponent: AQAAAAE= +PrivateExponent: A3ZXTF8afjlxddgO/sDxotc0XLBMa3sNrXhCpdFzeDV1HszZbz1lP8rrZjA1wQgSo56DjiGRKTsHjAAm4xN1lGYKBZuVF4U3uiWie2PhJStt7kckNduKOfV9Nofow5Jh8I2lXKqcOJ8Qd+EJYIsajdBoGQ72PGGfDaHphbN/mW13n59PlilMF4RRRybcMA6jTAOfvIcv5Mes3+ADh0TktHdHQQ== +Prime1: A+SKyrgtNzGVpAXPQysMQ9O/10B/+nhy6//1F5Epxihyuln+d2euh+TjVneojx4D2JUflDUSD5BQAdflDb+KiBXdQjBEmqfWwY+INwSQzv4M5Q== +Prime2: AyXovkiIs7ywIRS6FfRolMMUeh3yeYNtCVAvLB6EC2MiNCzfkDOFB7rpmUkZR8HYUWuz1hQfR781RDO81Sp3RIpSyL7SwOqkpMZyaSgK/GKE3Q== +Exponent1: D1vC405mkcUVfno92EuBXomRiOG7VeSyjwofgCpa0JKR6J2BThdCGrcVbq68ucIddn+cbkD8JsZB3k4aeDYFxm6d1En1Z2C1cVHrzCFi2zFV +Exponent2: N+iliM1Qp3spcsR06kXImb/N4FosHrZkXtcbRIMWhV8NBcyqLDIfGlNluaiztv4rf6Kn2UyVeiGC822nqZHcW5PiXJnBEWs9AC4Di1QzZh0h +Coefficient: AtZ4sYqGgyB5kfdcQBBlIkPbsRRNKrUVAsZkjabdZTQa+ox6tYnlVjh7BgPMHJlj/Z4VTRJ5rfAUPnB4ZwO/r1eAJLd+vxjJb9M7DaGMc+RqQA== diff --git a/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+38930.key b/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+38930.key new file mode 100644 index 0000000000..9602160d91 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+38930.key @@ -0,0 +1,3 @@ +;% generationtime=20101127101704 +;% lifetime=63d +example.net. IN DNSKEY 256 3 5 BQEAAAABw6SqqsNvYqmiYNMlroODy8rMZdbo2Pe8ldEblO9qtxI5oR4i UeUW/q3rZgCTuZI+ymMiLmaFSF1DXsAyG0M03Q== diff --git a/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+38930.private b/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+38930.private new file mode 100644 index 0000000000..715ef67994 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/extern/example.net/Kexample.net.+005+38930.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: w6SqqsNvYqmiYNMlroODy8rMZdbo2Pe8ldEblO9qtxI5oR4iUeUW/q3rZgCTuZI+ymMiLmaFSF1DXsAyG0M03Q== +PublicExponent: AQAAAAE= +PrivateExponent: lYq/wM8BLiaU+Ij/0JP6Csv8Pp/2WdNfsuCbLMU3IBJGimSxx7bvCLSZkDL5mV1E0HJqLrhb2l7GRr3PZKuWMQ== +Prime1: 5KAIpenYhEVE2U3Wzb2Lwp67HgGM/kV46RrvKFOYe08= +Prime2: 2xGmcIPYhuD7BKThg0/ldRhfapASbOw3RvSxY6GxkhM= +Exponent1: X9Z0wkwNnnme2hvoyDMigAYoLZvhx0Tz2ivdw41izlc= +Exponent2: VXrrgqEDOafxQ+jF6vhubWUdAsxz44nyXPHlwduJCtc= +Coefficient: 0pIJlBNZWGPdhykMXN3rPnbZoXUeSecEkpGPLBdw5oE= diff --git a/contrib/zkt-1.1.2/examples/views/extern/example.net/dnskey.db b/contrib/zkt-1.1.2/examples/views/extern/example.net/dnskey.db new file mode 100644 index 0000000000..d2da4fdeec --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/extern/example.net/dnskey.db @@ -0,0 +1,30 @@ +; +; !!! Don't edit this file by hand. +; !!! It will be generated by zkt-signer. +; +; Last generation time Jan 25 2011 20:02:30 +; + +; *** List of Key Signing Keys *** +; example.net. tag=23553 algo=RSASHA1 generated Jul 05 2010 09:43:02 +example.net. 14400 IN DNSKEY 257 3 5 ( + BQEAAAABDEEycfY6uqWNTpQO8ygi9xms6NOFYGhCjijN109fVGJ4KDnI + ZtLhoFrOKru9rZn+pyqurlyZG4vESg0BMty6xljVDlr/TegDYFTN19mQ + uwvlasJhZPv9pjROPqQGnqLaw3O4OKCY9HgTTPdXK1hQ4Mg2rNU4SM2T + u5ki91f5AQqiXF8KYMics0mwVvpj5C2YTDvE9SafLrce68JM6DaiC6E1 + sQ== + ) ; key id = 23553 + +; *** List of Zone Signing Keys *** +; example.net. tag=8885 algo=RSASHA1 generated Jan 25 2011 10:11:21 +example.net. 14400 IN DNSKEY 256 3 5 ( + BQEAAAABqSWPYNt6RitV7CJxyFXjIPeP6zSXtBki5cAiVVA3SdX0cBs6 + gWttgt+wxEPMApn/ncgjqcUHTJEVHyd/TrL/Aw== + ) ; key id = 8885 + +; example.net. tag=38930 algo=RSASHA1 generated Jan 25 2011 10:11:21 +example.net. 14400 IN DNSKEY 256 3 5 ( + BQEAAAABw6SqqsNvYqmiYNMlroODy8rMZdbo2Pe8ldEblO9qtxI5oR4i + UeUW/q3rZgCTuZI+ymMiLmaFSF1DXsAyG0M03Q== + ) ; key id = 38930 + diff --git a/contrib/zkt-1.1.2/examples/views/extern/example.net/dsset-example.net. b/contrib/zkt-1.1.2/examples/views/extern/example.net/dsset-example.net. new file mode 100644 index 0000000000..cbcd3d0220 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/extern/example.net/dsset-example.net. @@ -0,0 +1,2 @@ +example.net. IN DS 23553 5 1 A1A6D06CB84D619730F605AEF2A6DD4148DD9D5B +example.net. IN DS 23553 5 2 B0DCAB8A32C230495CEC1FD61CEC03849450909CA6636FD9BC53D1B3 3B4F3A2D diff --git a/contrib/zkt-1.1.2/examples/views/extern/example.net/keyset-example.net. b/contrib/zkt-1.1.2/examples/views/extern/example.net/keyset-example.net. new file mode 100644 index 0000000000..b84524567e --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/extern/example.net/keyset-example.net. @@ -0,0 +1,10 @@ +$ORIGIN . +example.net 7200 IN DNSKEY 257 3 5 ( + BQEAAAABDEEycfY6uqWNTpQO8ygi9xms6NOF + YGhCjijN109fVGJ4KDnIZtLhoFrOKru9rZn+ + pyqurlyZG4vESg0BMty6xljVDlr/TegDYFTN + 19mQuwvlasJhZPv9pjROPqQGnqLaw3O4OKCY + 9HgTTPdXK1hQ4Mg2rNU4SM2Tu5ki91f5AQqi + XF8KYMics0mwVvpj5C2YTDvE9SafLrce68JM + 6DaiC6E1sQ== + ) ; key id = 23553 diff --git a/contrib/zkt-1.1.2/examples/views/extern/example.net/zone.db b/contrib/zkt-1.1.2/examples/views/extern/example.net/zone.db new file mode 100644 index 0000000000..4c72928f0b --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/extern/example.net/zone.db @@ -0,0 +1,33 @@ +;----------------------------------------------------------------- +; +; @(#) extern/example.net/zone.db +; +;----------------------------------------------------------------- + +$TTL 7200 + +@ IN SOA ns1.example.net. hostmaster.example.net. ( + 0 ; Serial + 43200 ; Refresh + 1800 ; Retry + 2W ; Expire + 7200 ) ; Minimum + + IN NS ns1.example.net. + IN NS ns2.example.net. + +ns1 IN A 1.0.0.5 + IN AAAA 2001:db8::53 +ns2 IN A 1.2.0.6 + +localhost IN A 127.0.0.1 + +; Delegation to secure zone; The DS resource record will +; be added by dnssec-signzone automatically if the +; keyset-sub.example.net file is present (run dnssec-signzone +; with option -g or use the dnssec-signer tool) ;-) +sub IN NS ns1.example.net. + +; this file will have all the zone keys +$INCLUDE dnskey.db + diff --git a/contrib/zkt-1.1.2/examples/views/extern/example.net/zone.db.signed b/contrib/zkt-1.1.2/examples/views/extern/example.net/zone.db.signed new file mode 100644 index 0000000000..e1c7b4525c --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/extern/example.net/zone.db.signed @@ -0,0 +1,109 @@ +; File written on Tue Jan 25 20:02:30 2011 +; dnssec_signzone version 9.7.2-P2 +example.net. 7200 IN SOA ns1.example.net. hostmaster.example.net. ( + 1295982150 ; serial + 43200 ; refresh (12 hours) + 1800 ; retry (30 minutes) + 1209600 ; expire (2 weeks) + 7200 ; minimum (2 hours) + ) + 7200 RRSIG SOA 5 2 7200 20110215180230 ( + 20110125180230 38930 example.net. + CIEzsLXkJjCehSXcubmncFE46Mdo6duV35FA + 83ynRO2fDHNGEMGcgc1JR0uNRPUs1AySfvMe + 64sN9M5jw7bs+g== ) + 7200 NS ns1.example.net. + 7200 NS ns2.example.net. + 7200 RRSIG NS 5 2 7200 20110215180230 ( + 20110125180230 38930 example.net. + WaUhQqPwY1IGpdo3gG5D7hJrnNsk0GnIXPKa + zw1WGnFj0vcwDxsiEsk9L1NSb/c1j+uPepon + GcCFU8lkAkPJwg== ) + 7200 NSEC localhost.example.net. NS SOA RRSIG NSEC DNSKEY + 7200 RRSIG NSEC 5 2 7200 20110215180230 ( + 20110125180230 38930 example.net. + wkdRRnjfyPQSFb5jju3cEPfVM5T6SlMteEe9 + Vx09wy9b9aZIO6aT2Q83RUr/GIhkC7JeVPWi + c3SftwVD4IKF2Q== ) + 14400 DNSKEY 256 3 5 ( + BQEAAAABqSWPYNt6RitV7CJxyFXjIPeP6zSX + tBki5cAiVVA3SdX0cBs6gWttgt+wxEPMApn/ + ncgjqcUHTJEVHyd/TrL/Aw== + ) ; key id = 8885 + 14400 DNSKEY 256 3 5 ( + BQEAAAABw6SqqsNvYqmiYNMlroODy8rMZdbo + 2Pe8ldEblO9qtxI5oR4iUeUW/q3rZgCTuZI+ + ymMiLmaFSF1DXsAyG0M03Q== + ) ; key id = 38930 + 14400 DNSKEY 257 3 5 ( + BQEAAAABDEEycfY6uqWNTpQO8ygi9xms6NOF + YGhCjijN109fVGJ4KDnIZtLhoFrOKru9rZn+ + pyqurlyZG4vESg0BMty6xljVDlr/TegDYFTN + 19mQuwvlasJhZPv9pjROPqQGnqLaw3O4OKCY + 9HgTTPdXK1hQ4Mg2rNU4SM2Tu5ki91f5AQqi + XF8KYMics0mwVvpj5C2YTDvE9SafLrce68JM + 6DaiC6E1sQ== + ) ; key id = 23553 + 14400 RRSIG DNSKEY 5 2 14400 20110215180230 ( + 20110125180230 23553 example.net. + A44WHsFr4O7Rzuflm19mFBAu7e6asUF5hkzB + KjVkCkxH2NkIcTnDdzpxM/LzXMXyZGzxYQrI + AjStvUqfoDpaay+Jl87/IXd77Owbc762EF6U + Ew1NqHGG0UdO+os5STwPNT7UUi5i8HVVPglx + gpHti4RS6icrcsYMTeuf4yrffMr9xWlI/S2l + vu9b6maVqqAMds1dj9ZEDUWKLrylTngtc33R + BQ== ) + 14400 RRSIG DNSKEY 5 2 14400 20110215180230 ( + 20110125180230 38930 example.net. + P/9UIYie44cvptFvxgny+zKNDilIMUsswBkg + aEJVqCzUnbpA7x5xvzGhlilb38MRv9fvYEtr + AsBz1D2Uo3ZULQ== ) +localhost.example.net. 7200 IN A 127.0.0.1 + 7200 RRSIG A 5 3 7200 20110215180230 ( + 20110125180230 38930 example.net. + iM76gTURcaiYI2yrAIgVcJS1//ZfhCbcVU6o + +aeTvwHCyT4kes8uLluV5sS24MuR1fi+E9I3 + AIeGM/7HdIIi/g== ) + 7200 NSEC ns1.example.net. A RRSIG NSEC + 7200 RRSIG NSEC 5 3 7200 20110215180230 ( + 20110125180230 38930 example.net. + nEzM1RA6blYjp6PkXp5QPfJd1kWdcVwByMrM + LWWoLI70W9ilxuD3xHOFwmjWwjED/r+NH+53 + DCjTN5DE/RtNkA== ) +ns1.example.net. 7200 IN A 1.0.0.5 + 7200 RRSIG A 5 3 7200 20110215180230 ( + 20110125180230 38930 example.net. + UmtBBwApnfVqXzj76BIVJtuajos1Qr8LfqaT + x0FMOrpjhg9p1JN25jUEIkexUmBqkvt9VEam + my5k3FrYQZpAcw== ) + 7200 AAAA 2001:db8::53 + 7200 RRSIG AAAA 5 3 7200 20110215180230 ( + 20110125180230 38930 example.net. + dWIIV6h276aolyfUWyoup6svZygotNuZpUlE + LhXOr3MU2QgnEo8a1akuhMYf245B76VXd657 + TBjQBuexeFt1ww== ) + 7200 NSEC ns2.example.net. A AAAA RRSIG NSEC + 7200 RRSIG NSEC 5 3 7200 20110215180230 ( + 20110125180230 38930 example.net. + AjKEeI3cjcxi7DxYwr4cvAeycPNETAm+R74G + /k3Cr8WaPkenxX5n9Meb0rOJRur1RGe0LApr + PuFixxEFVo2EUg== ) +ns2.example.net. 7200 IN A 1.2.0.6 + 7200 RRSIG A 5 3 7200 20110215180230 ( + 20110125180230 38930 example.net. + NqBJpDCmIi/XcjCIl8YGbw0mpVnp8+kT81l3 + wciY/V07AI1ucghehgMJIaG1ZSkPnPlllc5o + trsxvawJv/irEw== ) + 7200 NSEC sub.example.net. A RRSIG NSEC + 7200 RRSIG NSEC 5 3 7200 20110215180230 ( + 20110125180230 38930 example.net. + NssXK84EXEa1XUWKD+7aeSJFtg3JNnq3J/Ox + ItxpbWdaCgqEqJ87oHNWYGic6POmWPc5P8LI + yLgte5CwMN8ufg== ) +sub.example.net. 7200 IN NS ns1.example.net. + 7200 NSEC example.net. NS RRSIG NSEC + 7200 RRSIG NSEC 5 3 7200 20110215180230 ( + 20110125180230 38930 example.net. + BslSne1rxv0Rkahw4vdoqh3vlVkiVOQsrsa1 + 1ofMNaBxphwoTj8nkICePawKby4cTFX0kuRL + MiloJ6y9vkvC3Q== ) diff --git a/contrib/zkt-1.1.2/examples/views/extern/keyset-example.net. b/contrib/zkt-1.1.2/examples/views/extern/keyset-example.net. new file mode 100644 index 0000000000..b84524567e --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/extern/keyset-example.net. @@ -0,0 +1,10 @@ +$ORIGIN . +example.net 7200 IN DNSKEY 257 3 5 ( + BQEAAAABDEEycfY6uqWNTpQO8ygi9xms6NOF + YGhCjijN109fVGJ4KDnIZtLhoFrOKru9rZn+ + pyqurlyZG4vESg0BMty6xljVDlr/TegDYFTN + 19mQuwvlasJhZPv9pjROPqQGnqLaw3O4OKCY + 9HgTTPdXK1hQ4Mg2rNU4SM2Tu5ki91f5AQqi + XF8KYMics0mwVvpj5C2YTDvE9SafLrce68JM + 6DaiC6E1sQ== + ) ; key id = 23553 diff --git a/contrib/zkt-1.1.2/examples/views/extern/zkt-ext.log b/contrib/zkt-1.1.2/examples/views/extern/zkt-ext.log new file mode 100644 index 0000000000..d070ca23f3 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/extern/zkt-ext.log @@ -0,0 +1,51 @@ +2008-06-12 17:59:04.194: notice: running as ../../dnssec-signer -V extern -v -v +2008-06-12 17:59:04.195: debug: parsing zone "example.net." in dir "extern/example.net." +2008-06-12 17:59:04.196: debug: Check RFC5011 status +2008-06-12 17:59:04.196: debug: ->ksk5011status returns 0 +2008-06-12 17:59:04.196: debug: Check ksk status +2008-06-12 17:59:04.196: debug: Re-signing not necessary! +2008-06-12 17:59:04.196: notice: end of run: 0 errors occured +2008-06-12 17:59:17.435: notice: running as ../../dnssec-signer -V extern -v -v +2008-06-12 17:59:17.436: debug: parsing zone "example.net." in dir "extern/example.net." +2008-06-12 17:59:17.436: debug: Check RFC5011 status +2008-06-12 17:59:17.436: debug: ->ksk5011status returns 0 +2008-06-12 17:59:17.436: debug: Check ksk status +2008-06-12 17:59:17.436: debug: Re-signing not necessary! +2008-06-12 17:59:17.436: notice: end of run: 0 errors occured +2008-06-12 18:00:07.818: notice: running as ../../dnssec-signer -V extern -v -v +2008-06-12 18:00:07.819: debug: parsing zone "example.net." in dir "extern/example.net." +2008-06-12 18:00:07.819: debug: Check RFC5011 status +2008-06-12 18:00:07.819: debug: ->ksk5011status returns 0 +2008-06-12 18:00:07.819: debug: Check ksk status +2008-06-12 18:00:07.819: debug: Re-signing not necessary! +2008-06-12 18:00:07.819: notice: end of run: 0 errors occured +2008-06-12 18:00:39.019: notice: running as ../../dnssec-signer -V extern -v -v +2008-06-12 18:00:39.020: debug: parsing zone "example.net." in dir "extern/example.net." +2008-06-12 18:00:39.020: debug: Check RFC5011 status +2008-06-12 18:00:39.020: debug: ->ksk5011status returns 0 +2008-06-12 18:00:39.020: debug: Check ksk status +2008-06-12 18:00:39.020: debug: Re-signing not necessary! +2008-06-12 18:00:39.020: notice: end of run: 0 errors occured +2008-10-03 01:00:45.544: notice: ------------------------------------------------------------ +2008-10-03 01:00:45.544: notice: running ../../dnssec-signer -V extern -v -v +2008-10-03 01:00:45.545: debug: parsing zone "example.net" in dir "extern/example.net" +2008-10-03 01:00:45.545: debug: Check RFC5011 status +2008-10-03 01:00:45.545: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2008-10-03 01:00:45.545: debug: Check KSK status +2008-10-03 01:00:45.545: debug: Check ZSK status +2008-10-03 01:00:45.545: debug: Lifetime(2592000 +/-150 sec) of active key 35744 exceeded (5018328 sec) +2008-10-03 01:00:45.546: debug: ->depreciate it +2008-10-03 01:00:45.546: debug: ->activate published key 10367 +2008-10-03 01:00:45.546: notice: "example.net": lifetime of zone signing key 35744 exceeded: ZSK rollover done +2008-10-03 01:00:45.546: debug: New key for publishing needed +2008-10-03 01:00:45.614: debug: ->creating new key 14714 +2008-10-03 01:00:45.614: info: "example.net": new key 14714 generated for publishing +2008-10-03 01:00:45.614: debug: Re-signing necessary: New zone key +2008-10-03 01:00:45.614: notice: "example.net": re-signing triggered: New zone key +2008-10-03 01:00:45.614: debug: Writing key file "extern/example.net/dnskey.db" +2008-10-03 01:00:45.614: debug: Signing zone "example.net" +2008-10-03 01:00:45.614: debug: Run cmd "cd extern/example.net; /usr/local/sbin/dnssec-signzone -g -p -o example.net -e +864000 -N unixtime zone.db K*.private" +2008-10-03 01:00:46.114: debug: Cmd dnssec-signzone return: "zone.db.signed" +2008-10-03 01:00:46.114: debug: Signing completed after 1s. +2008-10-03 01:00:46.114: debug: +2008-10-03 01:00:46.114: notice: end of run: 0 errors occured diff --git a/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+00126.key b/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+00126.key new file mode 100644 index 0000000000..316e4cfeaf --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+00126.key @@ -0,0 +1 @@ +example.net. IN DNSKEY 257 3 5 BQEAAAABC+JLXRgWPqqGe0cta8CR95tz7PkkgRDlXyxESD+XkpVDkJ3W ey/1Lh7083Ve1WmIuUAo3N4d7HjLgrFVZxiumGGRz/aV3s01OFFS5JqI wF9BTNrNPGLPzzbBaQMHErO88HIbbg4sot7e6bSrtpAEf23MhZ3qZJC9 +nN+DknmsgTE6EpK6ZyUrZc64/0K68EWhtk1gf95NQEzTD4QgrOD6IYq Lw== diff --git a/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+00126.private b/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+00126.private new file mode 100644 index 0000000000..96e1ff6e08 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+00126.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: C+JLXRgWPqqGe0cta8CR95tz7PkkgRDlXyxESD+XkpVDkJ3Wey/1Lh7083Ve1WmIuUAo3N4d7HjLgrFVZxiumGGRz/aV3s01OFFS5JqIwF9BTNrNPGLPzzbBaQMHErO88HIbbg4sot7e6bSrtpAEf23MhZ3qZJC9+nN+DknmsgTE6EpK6ZyUrZc64/0K68EWhtk1gf95NQEzTD4QgrOD6IYqLw== +PublicExponent: AQAAAAE= +PrivateExponent: CF6/bss8OtQFdcjO6kJh9EamPFXAsaXFCdcYpHF55CU4H3jBuu7teLFEanvgm6M+wROYF0Yohiyb2aeSBdGLRIfTC9l3xfHD+XixuZVoNk6DqR1/8Wlxwu/a/hW9dq7pUXqDfTbzdZKR6SVRPa4MAdQ0p8aSF4S926NRqZC6E/anqhqNPSlBpxTs3TrRk+wY6u8wMXxPGNjJYoID8Y0Qau/H6Q== +Prime1: A50B7etEtQCDudL8+KBxU1/2sVT3ORMfoZPsOe+ZLFrwcOO9Iyrr6saymuD4QvcIHECdLUM5rsT1JBo87wgvVysibco7oVLxlIfsTcbM70l2Kw== +Prime2: A0n3+qM3ng3WAFzlpYRNUZpH/CW1pMq3nOHjx2olWwDxDZ4tAsUPKuW9n3kVZAR+4FkeUKn2ePR7xRtO3AzvA6QmZuZN6EHuLPlSKRufzeZ+DQ== +Exponent1: Hk5KY5PiXs6pf8T8rSvVs6PJqDX491R01ZDdAIDYjmhIUHKWQ2STAlPEpSAGXi+oqOo4dD1eJWgw36hT0JakjXU4aIvPoSdmVPMs8aod0NUh +Exponent2: AXKBZ5sYApCCj/0fGBTkmU6Zc89/ddQNrFm2lVLrwSTILHQWm/aXDvI+5icpF5kdrukVcNHUeCz1R/RTgeV4N9/qvr5YzbPWieqDNvpG1RcNRQ== +Coefficient: BZxK+fKwUNWoJ5huBqLsi8UMWgrCMqAfXvge4+Y4n4IL0VCU1UUEXZQEEeiATh0g52CuetOMej6FZ4QKbNryWg036ZKl81ataMGtDX/i/yZG diff --git a/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+52235.key b/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+52235.key new file mode 100644 index 0000000000..2745a9eacb --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+52235.key @@ -0,0 +1,3 @@ +;% generationtime=20110125091121 +;% lifetime=84d +example.net. IN DNSKEY 256 3 5 BQEAAAAB0WcmwbQoLbDFommP0H2zyiHXC1ekz3VMR+zl69pZZb5nLL/j 66zL43Op/UVNhNlmwqH10QVie/oJf/ag07n8Jw== diff --git a/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+52235.published b/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+52235.published new file mode 100644 index 0000000000..7df544e738 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+52235.published @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: 0WcmwbQoLbDFommP0H2zyiHXC1ekz3VMR+zl69pZZb5nLL/j66zL43Op/UVNhNlmwqH10QVie/oJf/ag07n8Jw== +PublicExponent: AQAAAAE= +PrivateExponent: jKRY6rToay8xyeGq5FZclg8nBubVeiu90mF5yKtUcCW1AEdiwAzyCkhhC+1I3jOgzuY6h8rKYs09HrGKap3/8Q== +Prime1: 8mXlFt4dXw7fPEG/XutzjHcy0GZe9XJkTWm39fvVZ6s= +Prime2: 3SdGMdlT+QzR5kfCkRJ6IT78B4yGeVXrXWgPDlmt0XU= +Exponent1: oNNInlF/En5spkcgs3jG8Nu8HoNiqLnCc/XtHwKF6xc= +Exponent2: M4FLC8tRFOF9LuCNcRYHmh6cSnZpWzQjcZ1uLvmsxp0= +Coefficient: pXldDiEWVr7Z5BTFXunGzpXoX+cs+oW0qit/1uqGv84= diff --git a/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+57602.key b/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+57602.key new file mode 100644 index 0000000000..4950d13bb6 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+57602.key @@ -0,0 +1,3 @@ +;% generationtime=20101127101704 +;% lifetime=63d +example.net. IN DNSKEY 256 3 5 BQEAAAABp57sZfLQTLH4pU1vFRNfxU7IKonyz/BcaNqh2jywFbz/EzPP jB0M4UOfR7iwChoqiFgatnKg02Qazs+MbD8uyw== diff --git a/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+57602.private b/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+57602.private new file mode 100644 index 0000000000..84b54db171 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/intern/example.net/Kexample.net.+005+57602.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: p57sZfLQTLH4pU1vFRNfxU7IKonyz/BcaNqh2jywFbz/EzPPjB0M4UOfR7iwChoqiFgatnKg02Qazs+MbD8uyw== +PublicExponent: AQAAAAE= +PrivateExponent: jGofatbQPs8FyTAJmAWZZF+XzHKd9jhSQaDzrjMBf23DwDuu/GnyF7AcASTdHhzDqPXWkPIulsPDqYsewdLVMQ== +Prime1: 1VB6Wv92Rl/nEGuc9/P+Own4QLbsebgXceG7Eih0Fhk= +Prime2: ySmvvq+Qmh1o7os/4x7BB5/qI0vi4yZqp+OycM3S4IM= +Exponent1: jb0CEguKt/4oCHM5s/aLfSf5KGSNWrKew0CjNFprx8k= +Exponent2: wcyaaYEfMDYy9Hrzka7/L29W97KH+qVm7wZrUfQWoC0= +Coefficient: 0B7KgaK213Z/2VYJ/7hnCZGFlmHoJtYcwV790fwNilY= diff --git a/contrib/zkt-1.1.2/examples/views/intern/example.net/dnskey.db b/contrib/zkt-1.1.2/examples/views/intern/example.net/dnskey.db new file mode 100644 index 0000000000..7076e11658 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/intern/example.net/dnskey.db @@ -0,0 +1,30 @@ +; +; !!! Don't edit this file by hand. +; !!! It will be generated by zkt-signer. +; +; Last generation time Jan 25 2011 20:02:30 +; + +; *** List of Key Signing Keys *** +; example.net. tag=126 algo=RSASHA1 generated Jul 05 2010 09:43:02 +example.net. 14400 IN DNSKEY 257 3 5 ( + BQEAAAABC+JLXRgWPqqGe0cta8CR95tz7PkkgRDlXyxESD+XkpVDkJ3W + ey/1Lh7083Ve1WmIuUAo3N4d7HjLgrFVZxiumGGRz/aV3s01OFFS5JqI + wF9BTNrNPGLPzzbBaQMHErO88HIbbg4sot7e6bSrtpAEf23MhZ3qZJC9 + +nN+DknmsgTE6EpK6ZyUrZc64/0K68EWhtk1gf95NQEzTD4QgrOD6IYq + Lw== + ) ; key id = 126 + +; *** List of Zone Signing Keys *** +; example.net. tag=57602 algo=RSASHA1 generated Jan 25 2011 10:11:21 +example.net. 14400 IN DNSKEY 256 3 5 ( + BQEAAAABp57sZfLQTLH4pU1vFRNfxU7IKonyz/BcaNqh2jywFbz/EzPP + jB0M4UOfR7iwChoqiFgatnKg02Qazs+MbD8uyw== + ) ; key id = 57602 + +; example.net. tag=52235 algo=RSASHA1 generated Jan 25 2011 10:11:21 +example.net. 14400 IN DNSKEY 256 3 5 ( + BQEAAAAB0WcmwbQoLbDFommP0H2zyiHXC1ekz3VMR+zl69pZZb5nLL/j + 66zL43Op/UVNhNlmwqH10QVie/oJf/ag07n8Jw== + ) ; key id = 52235 + diff --git a/contrib/zkt-1.1.2/examples/views/intern/example.net/dsset-example.net. b/contrib/zkt-1.1.2/examples/views/intern/example.net/dsset-example.net. new file mode 100644 index 0000000000..b61c1b6fd5 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/intern/example.net/dsset-example.net. @@ -0,0 +1,2 @@ +example.net. IN DS 126 5 1 D32161DCFCA120944CB9C0394CBED1389FDB72CA +example.net. IN DS 126 5 2 351C6807B25E47223D7A6AA222291E8D7D7DDDA61D64CE839F937F22 47481FC9 diff --git a/contrib/zkt-1.1.2/examples/views/intern/example.net/keyset-example.net. b/contrib/zkt-1.1.2/examples/views/intern/example.net/keyset-example.net. new file mode 100644 index 0000000000..0aa2c7d464 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/intern/example.net/keyset-example.net. @@ -0,0 +1,10 @@ +$ORIGIN . +example.net 7200 IN DNSKEY 257 3 5 ( + BQEAAAABC+JLXRgWPqqGe0cta8CR95tz7Pkk + gRDlXyxESD+XkpVDkJ3Wey/1Lh7083Ve1WmI + uUAo3N4d7HjLgrFVZxiumGGRz/aV3s01OFFS + 5JqIwF9BTNrNPGLPzzbBaQMHErO88HIbbg4s + ot7e6bSrtpAEf23MhZ3qZJC9+nN+DknmsgTE + 6EpK6ZyUrZc64/0K68EWhtk1gf95NQEzTD4Q + grOD6IYqLw== + ) ; key id = 126 diff --git a/contrib/zkt-1.1.2/examples/views/intern/example.net/zone.db b/contrib/zkt-1.1.2/examples/views/intern/example.net/zone.db new file mode 100644 index 0000000000..af4861b5da --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/intern/example.net/zone.db @@ -0,0 +1,33 @@ +;----------------------------------------------------------------- +; +; @(#) intern/example.net/zone.db +; +;----------------------------------------------------------------- + +$TTL 7200 + +@ IN SOA ns1.example.net. hostmaster.example.net. ( + 0 ; Serial + 43200 ; Refresh + 1800 ; Retry + 2W ; Expire + 7200 ) ; Minimum + + IN NS ns1.example.net. + IN NS ns2.example.net. + +ns1 IN A 192.168.1.53 + IN AAAA fd12:063c:cdbb::53 +ns2 IN A 10.1.2.3 + +localhost IN A 127.0.0.1 + +; Delegation to secure zone; The DS resource record will +; be added by dnssec-signzone automatically if the +; keyset-sub.example.net file is present (run dnssec-signzone +; with option -g or use the dnssec-signer tool) ;-) +sub IN NS ns1.example.net. + +; this file will have all the zone keys +$INCLUDE dnskey.db + diff --git a/contrib/zkt-1.1.2/examples/views/intern/example.net/zone.db.signed b/contrib/zkt-1.1.2/examples/views/intern/example.net/zone.db.signed new file mode 100644 index 0000000000..316f1b2989 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/intern/example.net/zone.db.signed @@ -0,0 +1,109 @@ +; File written on Tue Jan 25 20:02:30 2011 +; dnssec_signzone version 9.7.2-P2 +example.net. 7200 IN SOA ns1.example.net. hostmaster.example.net. ( + 1295982150 ; serial + 43200 ; refresh (12 hours) + 1800 ; retry (30 minutes) + 1209600 ; expire (2 weeks) + 7200 ; minimum (2 hours) + ) + 7200 RRSIG SOA 5 2 7200 20110215180230 ( + 20110125180230 57602 example.net. + G+lTux2CtT0K4DoG9SDhvOHYHecTP+zQAFhx + 21fAFnHrV26q5OEL3XG2MqtFIBRzBVyWOQky + HjA0OrT2h0QMbQ== ) + 7200 NS ns1.example.net. + 7200 NS ns2.example.net. + 7200 RRSIG NS 5 2 7200 20110215180230 ( + 20110125180230 57602 example.net. + jWqP9xbY7F8AtNaHjKaLBKURY9MHkMdwlsv/ + h6Ood+Dktz/Cc2WC6Ce4twTQSPp4fZtIsIfl + Y50zl5acgD3fcA== ) + 7200 NSEC localhost.example.net. NS SOA RRSIG NSEC DNSKEY + 7200 RRSIG NSEC 5 2 7200 20110215180230 ( + 20110125180230 57602 example.net. + lPfwTBz3QYn6NzJPnYzFuwqAskF9AjE65UFQ + aTqwZpQ+puYATzTMbe4Aa7x1fOzMoffZCADV + RwJhuqle8AED1w== ) + 14400 DNSKEY 256 3 5 ( + BQEAAAABp57sZfLQTLH4pU1vFRNfxU7IKony + z/BcaNqh2jywFbz/EzPPjB0M4UOfR7iwChoq + iFgatnKg02Qazs+MbD8uyw== + ) ; key id = 57602 + 14400 DNSKEY 256 3 5 ( + BQEAAAAB0WcmwbQoLbDFommP0H2zyiHXC1ek + z3VMR+zl69pZZb5nLL/j66zL43Op/UVNhNlm + wqH10QVie/oJf/ag07n8Jw== + ) ; key id = 52235 + 14400 DNSKEY 257 3 5 ( + BQEAAAABC+JLXRgWPqqGe0cta8CR95tz7Pkk + gRDlXyxESD+XkpVDkJ3Wey/1Lh7083Ve1WmI + uUAo3N4d7HjLgrFVZxiumGGRz/aV3s01OFFS + 5JqIwF9BTNrNPGLPzzbBaQMHErO88HIbbg4s + ot7e6bSrtpAEf23MhZ3qZJC9+nN+DknmsgTE + 6EpK6ZyUrZc64/0K68EWhtk1gf95NQEzTD4Q + grOD6IYqLw== + ) ; key id = 126 + 14400 RRSIG DNSKEY 5 2 14400 20110215180230 ( + 20110125180230 126 example.net. + BZPPo0GqOxCxCzx78nwK4Qbwj9kAYTyo7mYB + 5wx53cGRn7gD26tw/l12w4Vp5Q4/UCvZ1QCf + pk0xJM4qkd1wfMXQtxmYL/95aHIbrfW4uyE8 + UD7wMjD7ufDTGEc40unLunJ7FEXZ3iLTHdwL + J/moCVAPKq+jQznC0eIcqAoIrSSbTHK4QRZc + s9OLmfm0W3xPAPr14imqExL76r57sILcKFfC + jQ== ) + 14400 RRSIG DNSKEY 5 2 14400 20110215180230 ( + 20110125180230 57602 example.net. + c3xZnvGx3v6Ccjz+o9YbKCFPWDbD+i6Gw/IF + RlxpOD41xQxoDWnqZlmqPu/gc0afQ0IbuJen + BV6v2Q1tnSWtIQ== ) +localhost.example.net. 7200 IN A 127.0.0.1 + 7200 RRSIG A 5 3 7200 20110215180230 ( + 20110125180230 57602 example.net. + DqPVfZUI44qRqPnoTclRf9EKixcqpPv8/3vc + QK2Y6HAj3YBcmVFDD5T6L31mv5ay34psfUu7 + hDJvYtCJFor/lw== ) + 7200 NSEC ns1.example.net. A RRSIG NSEC + 7200 RRSIG NSEC 5 3 7200 20110215180230 ( + 20110125180230 57602 example.net. + E9k/RxN76Z2eFfHPJTdDcGz/TrthOQDihNoZ + k4bh858HkuPgXgfgdHJ2QL6xwS0oncP4JgqY + gKcmYxPyCqct5g== ) +ns1.example.net. 7200 IN A 192.168.1.53 + 7200 RRSIG A 5 3 7200 20110215180230 ( + 20110125180230 57602 example.net. + ku/0VTBFiNgLoBG9lWRvoJOzuyFUyOColXz2 + ZTtmrZWLPpnFapDsEC2ZOkWhlzpysbuCnZeq + +Tn35JziKPaCnQ== ) + 7200 AAAA fd12:63c:cdbb::53 + 7200 RRSIG AAAA 5 3 7200 20110215180230 ( + 20110125180230 57602 example.net. + ZepJB6jcivMqxfdR+B1qO8ZPsQrH6UmoLKN7 + 3S4X3/UbFEYXbEb/RF6p9Fb7pHPjnSAQyob2 + 2jBPrkol58C8hA== ) + 7200 NSEC ns2.example.net. A AAAA RRSIG NSEC + 7200 RRSIG NSEC 5 3 7200 20110215180230 ( + 20110125180230 57602 example.net. + Rq2gPDo+xpndSV1TfK7AzWemTd3qtsKDFN+/ + jjmUzilm/2R1E/X7eNpIaF9oOtzPggTms8MJ + dhb5HUcMpe1idQ== ) +ns2.example.net. 7200 IN A 10.1.2.3 + 7200 RRSIG A 5 3 7200 20110215180230 ( + 20110125180230 57602 example.net. + ArSVm6tZqguzW2eVycpq//OvjGjWAy2/nrpv + P2uvavxWKJVdqIIUg3Yyvb5W6h4qUa+u0br4 + Yz213ghrj8exKg== ) + 7200 NSEC sub.example.net. A RRSIG NSEC + 7200 RRSIG NSEC 5 3 7200 20110215180230 ( + 20110125180230 57602 example.net. + TCmdUAxSnk5oliX8/r9Z8odEHCtUOm87EAqK + 3JNlzlknuhYYvm7HaoEurXqdU4hMnU8h3LbW + W+Lus6YDeEyAtw== ) +sub.example.net. 7200 IN NS ns1.example.net. + 7200 NSEC example.net. NS RRSIG NSEC + 7200 RRSIG NSEC 5 3 7200 20110215180230 ( + 20110125180230 57602 example.net. + mlIuEvQU5KrqBbP/qoM+tAx+MilvdI5g4X/o + 2w42OZ563C9ki9Q4lxCMQ67BQRKmVLiPZDX9 + U40oapBFIpDYTw== ) diff --git a/contrib/zkt-1.1.2/examples/views/intern/keyset-example.net. b/contrib/zkt-1.1.2/examples/views/intern/keyset-example.net. new file mode 100644 index 0000000000..0aa2c7d464 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/intern/keyset-example.net. @@ -0,0 +1,10 @@ +$ORIGIN . +example.net 7200 IN DNSKEY 257 3 5 ( + BQEAAAABC+JLXRgWPqqGe0cta8CR95tz7Pkk + gRDlXyxESD+XkpVDkJ3Wey/1Lh7083Ve1WmI + uUAo3N4d7HjLgrFVZxiumGGRz/aV3s01OFFS + 5JqIwF9BTNrNPGLPzzbBaQMHErO88HIbbg4s + ot7e6bSrtpAEf23MhZ3qZJC9+nN+DknmsgTE + 6EpK6ZyUrZc64/0K68EWhtk1gf95NQEzTD4Q + grOD6IYqLw== + ) ; key id = 126 diff --git a/contrib/zkt-1.1.2/examples/views/intern/zkt-int.log b/contrib/zkt-1.1.2/examples/views/intern/zkt-int.log new file mode 100644 index 0000000000..d6d4593cd9 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/intern/zkt-int.log @@ -0,0 +1,192 @@ +2008-06-12 18:02:13.593: notice: running as ../../dnssec-signer -V intern -v -v +2008-06-12 18:02:13.594: debug: parsing zone "example.net." in dir "intern/example.net." +2008-06-12 18:02:13.594: debug: Check RFC5011 status +2008-06-12 18:02:13.595: debug: ->ksk5011status returns 0 +2008-06-12 18:02:13.595: debug: Check ksk status +2008-06-12 18:02:13.595: debug: Lifetime(2592000 +/-150 sec) of active key 5972 exceeded (17727466 sec) +2008-06-12 18:02:13.595: debug: ->waiting for pre-publish key +2008-06-12 18:02:13.595: notice: "example.net.": lifetime of zone signing key 5972 exceeded since 25w4h17m46s: ZSK rollover deferred: waiting for pre-publish key +2008-06-12 18:02:13.595: debug: Re-signing necessary: Modified keys +2008-06-12 18:02:13.595: notice: "example.net.": re-signing triggered: Modified keys +2008-06-12 18:02:13.595: debug: Writing key file "intern/example.net./dnskey.db" +2008-06-12 18:02:13.596: debug: Signing zone "example.net." +2008-06-12 18:02:13.596: debug: Run cmd "cd intern/example.net.; /usr/local/sbin/dnssec-signzone -p -o example.net. -e +86400 -g -N unixtime zone.db K*.private" +2008-06-12 18:02:13.705: debug: Cmd dnssec-signzone return: "zone.db.signed" +2008-06-12 18:02:13.705: debug: Signing completed after 0s. +2008-06-12 18:02:13.705: debug: +2008-06-12 18:02:13.705: notice: end of run: 0 errors occured +2008-06-12 18:03:13.208: notice: running as ../../dnssec-signer -V intern -r -v -v +2008-06-12 18:03:13.209: debug: parsing zone "example.net." in dir "intern/example.net." +2008-06-12 18:03:13.209: debug: Check RFC5011 status +2008-06-12 18:03:13.209: debug: ->ksk5011status returns 0 +2008-06-12 18:03:13.209: debug: Check ksk status +2008-06-12 18:03:13.209: debug: Lifetime(2592000 +/-150 sec) of active key 5972 exceeded (17727526 sec) +2008-06-12 18:03:13.209: debug: ->waiting for pre-publish key +2008-06-12 18:03:13.209: notice: "example.net.": lifetime of zone signing key 5972 exceeded since 25w4h18m46s: ZSK rollover deferred: waiting for pre-publish key +2008-06-12 18:03:13.209: debug: Re-signing not necessary! +2008-06-12 18:03:13.209: notice: end of run: 0 errors occured +2008-06-12 18:03:19.287: notice: running as ../../dnssec-signer -V intern -r -v -v +2008-06-12 18:03:19.288: debug: parsing zone "example.net." in dir "intern/example.net." +2008-06-12 18:03:19.288: debug: Check RFC5011 status +2008-06-12 18:03:19.289: debug: ->ksk5011status returns 0 +2008-06-12 18:03:19.289: debug: Check ksk status +2008-06-12 18:03:19.289: debug: Lifetime(2592000 +/-150 sec) of active key 5972 exceeded (17727532 sec) +2008-06-12 18:03:19.289: debug: ->waiting for pre-publish key +2008-06-12 18:03:19.289: notice: "example.net.": lifetime of zone signing key 5972 exceeded since 25w4h18m52s: ZSK rollover deferred: waiting for pre-publish key +2008-06-12 18:03:19.289: debug: Re-signing not necessary! +2008-06-12 18:03:19.289: notice: end of run: 0 errors occured +2008-06-12 18:03:23.617: notice: running as ../../dnssec-signer -V intern -f -r -v -v +2008-06-12 18:03:23.618: debug: parsing zone "example.net." in dir "intern/example.net." +2008-06-12 18:03:23.618: debug: Check RFC5011 status +2008-06-12 18:03:23.618: debug: ->ksk5011status returns 0 +2008-06-12 18:03:23.618: debug: Check ksk status +2008-06-12 18:03:23.618: debug: Lifetime(2592000 +/-150 sec) of active key 5972 exceeded (17727536 sec) +2008-06-12 18:03:23.618: debug: ->waiting for pre-publish key +2008-06-12 18:03:23.618: notice: "example.net.": lifetime of zone signing key 5972 exceeded since 25w4h18m56s: ZSK rollover deferred: waiting for pre-publish key +2008-06-12 18:03:23.618: debug: Re-signing necessary: Option -f +2008-06-12 18:03:23.618: notice: "example.net.": re-signing triggered: Option -f +2008-06-12 18:03:23.618: debug: Writing key file "intern/example.net./dnskey.db" +2008-06-12 18:03:23.619: debug: Signing zone "example.net." +2008-06-12 18:03:23.619: debug: Run cmd "cd intern/example.net.; /usr/local/sbin/dnssec-signzone -p -o example.net. -e +86400 -g -N unixtime zone.db K*.private" +2008-06-12 18:03:23.719: debug: Cmd dnssec-signzone return: "zone.db.signed" +2008-06-12 18:03:23.719: debug: Signing completed after 0s. +2008-06-12 18:03:23.720: notice: ""example.net." in view "intern"": reload triggered +2008-06-12 18:03:23.772: debug: +2008-06-12 18:03:23.772: notice: end of run: 0 errors occured +2008-06-12 18:05:39.532: notice: running as ../../dnssec-signer -V intern -f -r -v -v +2008-06-12 18:05:39.533: debug: parsing zone "example.net." in dir "intern/example.net." +2008-06-12 18:05:39.533: debug: Check RFC5011 status +2008-06-12 18:05:39.533: debug: ->ksk5011status returns 0 +2008-06-12 18:05:39.533: debug: Check ksk status +2008-06-12 18:05:39.533: debug: Lifetime(2592000 +/-150 sec) of active key 5972 exceeded (17727672 sec) +2008-06-12 18:05:39.533: debug: ->waiting for pre-publish key +2008-06-12 18:05:39.533: notice: "example.net.": lifetime of zone signing key 5972 exceeded since 25w4h21m12s: ZSK rollover deferred: waiting for pre-publish key +2008-06-12 18:05:39.533: debug: Re-signing necessary: Option -f +2008-06-12 18:05:39.533: notice: "example.net.": re-signing triggered: Option -f +2008-06-12 18:05:39.533: debug: Writing key file "intern/example.net./dnskey.db" +2008-06-12 18:05:39.534: debug: Signing zone "example.net." +2008-06-12 18:05:39.534: debug: Run cmd "cd intern/example.net.; /usr/local/sbin/dnssec-signzone -p -o example.net. -e +86400 -g -N unixtime zone.db K*.private" +2008-06-12 18:05:39.629: debug: Cmd dnssec-signzone return: "zone.db.signed" +2008-06-12 18:05:39.630: debug: Signing completed after 0s. +2008-06-12 18:05:39.630: notice: ""example.net."": reload triggered +2008-06-12 18:05:39.640: debug: +2008-06-12 18:05:39.640: notice: end of run: 0 errors occured +2008-06-12 18:07:47.753: notice: running as ../../dnssec-signer -V intern -f -r -v -v +2008-06-12 18:07:47.754: debug: parsing zone "example.net." in dir "intern/example.net." +2008-06-12 18:07:47.754: debug: Check RFC5011 status +2008-06-12 18:07:47.754: debug: ->ksk5011status returns 0 +2008-06-12 18:07:47.754: debug: Check ksk status +2008-06-12 18:07:47.754: debug: Lifetime(2592000 +/-150 sec) of active key 5972 exceeded (17727800 sec) +2008-06-12 18:07:47.754: debug: ->waiting for pre-publish key +2008-06-12 18:07:47.754: notice: "example.net.": lifetime of zone signing key 5972 exceeded since 25w4h23m20s: ZSK rollover deferred: waiting for pre-publish key +2008-06-12 18:07:47.754: debug: Re-signing necessary: Option -f +2008-06-12 18:07:47.754: notice: "example.net.": re-signing triggered: Option -f +2008-06-12 18:07:47.754: debug: Writing key file "intern/example.net./dnskey.db" +2008-06-12 18:07:47.754: debug: Signing zone "example.net." +2008-06-12 18:07:47.754: debug: Run cmd "cd intern/example.net.; /usr/local/sbin/dnssec-signzone -p -o example.net. -e +86400 -g -N unixtime zone.db K*.private" +2008-06-12 18:07:47.856: debug: Cmd dnssec-signzone return: "zone.db.signed" +2008-06-12 18:07:47.856: debug: Signing completed after 0s. +2008-06-12 18:07:47.856: notice: ""example.net."": reload triggered +2008-06-12 18:07:47.866: debug: +2008-06-12 18:07:47.867: notice: end of run: 0 errors occured +2008-06-12 18:10:57.978: notice: running as ../../dnssec-signer -V intern -f -r -v -v +2008-06-12 18:10:57.978: debug: parsing zone "example.net." in dir "intern/example.net." +2008-06-12 18:10:57.978: debug: Check RFC5011 status +2008-06-12 18:10:57.978: debug: ->ksk5011status returns 0 +2008-06-12 18:10:57.978: debug: Check ksk status +2008-06-12 18:10:57.978: debug: Lifetime(2592000 +/-150 sec) of active key 5972 exceeded (17727990 sec) +2008-06-12 18:10:57.978: debug: ->waiting for pre-publish key +2008-06-12 18:10:57.978: notice: "example.net.": lifetime of zone signing key 5972 exceeded since 25w4h26m30s: ZSK rollover deferred: waiting for pre-publish key +2008-06-12 18:10:57.978: debug: Re-signing necessary: Option -f +2008-06-12 18:10:57.978: notice: "example.net.": re-signing triggered: Option -f +2008-06-12 18:10:57.978: debug: Writing key file "intern/example.net./dnskey.db" +2008-06-12 18:10:57.979: debug: Signing zone "example.net." +2008-06-12 18:10:57.979: debug: Run cmd "cd intern/example.net.; /usr/local/sbin/dnssec-signzone -p -o example.net. -e +86400 -g -N unixtime zone.db K*.private" +2008-06-12 18:10:58.081: debug: Cmd dnssec-signzone return: "zone.db.signed" +2008-06-12 18:10:58.081: debug: Signing completed after 1s. +2008-06-12 18:10:58.081: notice: ""example.net." in view "intern"": reload triggered +2008-06-12 18:10:58.093: debug: +2008-06-12 18:10:58.093: notice: end of run: 0 errors occured +2008-06-12 18:13:29.511: notice: running as ../../dnssec-signer -V intern -f -r -v -v +2008-06-12 18:13:29.512: debug: parsing zone "example.net." in dir "intern/example.net." +2008-06-12 18:13:29.512: debug: Check RFC5011 status +2008-06-12 18:13:29.512: debug: ->ksk5011status returns 0 +2008-06-12 18:13:29.512: debug: Check ksk status +2008-06-12 18:13:29.512: debug: Lifetime(2592000 +/-150 sec) of active key 5972 exceeded (17728142 sec) +2008-06-12 18:13:29.512: debug: ->waiting for pre-publish key +2008-06-12 18:13:29.512: notice: "example.net.": lifetime of zone signing key 5972 exceeded since 25w4h29m2s: ZSK rollover deferred: waiting for pre-publish key +2008-06-12 18:13:29.512: debug: Re-signing necessary: Option -f +2008-06-12 18:13:29.512: notice: "example.net.": re-signing triggered: Option -f +2008-06-12 18:13:29.512: debug: Writing key file "intern/example.net./dnskey.db" +2008-06-12 18:13:29.513: debug: Signing zone "example.net." +2008-06-12 18:13:29.513: debug: Run cmd "cd intern/example.net.; /usr/local/sbin/dnssec-signzone -p -o example.net. -e +86400 -g -N unixtime zone.db K*.private" +2008-06-12 18:13:29.612: debug: Cmd dnssec-signzone return: "zone.db.signed" +2008-06-12 18:13:29.612: debug: Signing completed after 0s. +2008-06-12 18:13:29.612: notice: ""example.net." in view "intern"": reload triggered +2008-06-12 18:13:29.612: debug: Reload zone "example.net." in view "intern" +2008-06-12 18:13:29.612: debug: Run cmd "/usr/local/sbin/rndc reload example.net. IN intern" +2008-06-12 18:13:29.623: debug: +2008-06-12 18:13:29.623: notice: end of run: 0 errors occured +2008-06-12 18:13:38.707: notice: running as ../../dnssec-signer -V intern -f -r -v +2008-06-12 18:13:38.708: debug: parsing zone "example.net." in dir "intern/example.net." +2008-06-12 18:13:38.709: debug: Check RFC5011 status +2008-06-12 18:13:38.709: debug: ->ksk5011status returns 0 +2008-06-12 18:13:38.709: debug: Check ksk status +2008-06-12 18:13:38.709: debug: Lifetime(2592000 +/-150 sec) of active key 5972 exceeded (17728151 sec) +2008-06-12 18:13:38.709: debug: ->waiting for pre-publish key +2008-06-12 18:13:38.709: notice: "example.net.": lifetime of zone signing key 5972 exceeded since 25w4h29m11s: ZSK rollover deferred: waiting for pre-publish key +2008-06-12 18:13:38.709: debug: Re-signing necessary: Option -f +2008-06-12 18:13:38.709: notice: "example.net.": re-signing triggered: Option -f +2008-06-12 18:13:38.709: debug: Writing key file "intern/example.net./dnskey.db" +2008-06-12 18:13:38.710: debug: Signing zone "example.net." +2008-06-12 18:13:38.710: debug: Run cmd "cd intern/example.net.; /usr/local/sbin/dnssec-signzone -p -o example.net. -e +86400 -g -N unixtime zone.db K*.private" +2008-06-12 18:13:39.163: debug: Cmd dnssec-signzone return: "zone.db.signed" +2008-06-12 18:13:39.163: debug: Signing completed after 1s. +2008-06-12 18:13:39.163: notice: ""example.net." in view "intern"": reload triggered +2008-06-12 18:13:39.163: debug: Reload zone "example.net." in view "intern" +2008-06-12 18:13:39.163: debug: Run cmd "/usr/local/sbin/rndc reload example.net. IN intern" +2008-06-12 18:13:39.174: debug: +2008-06-12 18:13:39.174: notice: end of run: 0 errors occured +2008-06-12 18:13:43.163: notice: running as ../../dnssec-signer -V intern -f -r -v -v +2008-06-12 18:13:43.164: debug: parsing zone "example.net." in dir "intern/example.net." +2008-06-12 18:13:43.164: debug: Check RFC5011 status +2008-06-12 18:13:43.164: debug: ->ksk5011status returns 0 +2008-06-12 18:13:43.164: debug: Check ksk status +2008-06-12 18:13:43.164: debug: Lifetime(2592000 +/-150 sec) of active key 5972 exceeded (17728156 sec) +2008-06-12 18:13:43.164: debug: ->waiting for pre-publish key +2008-06-12 18:13:43.164: notice: "example.net.": lifetime of zone signing key 5972 exceeded since 25w4h29m16s: ZSK rollover deferred: waiting for pre-publish key +2008-06-12 18:13:43.164: debug: Re-signing necessary: Option -f +2008-06-12 18:13:43.164: notice: "example.net.": re-signing triggered: Option -f +2008-06-12 18:13:43.164: debug: Writing key file "intern/example.net./dnskey.db" +2008-06-12 18:13:43.164: debug: Signing zone "example.net." +2008-06-12 18:13:43.164: debug: Run cmd "cd intern/example.net.; /usr/local/sbin/dnssec-signzone -p -o example.net. -e +86400 -g -N unixtime zone.db K*.private" +2008-06-12 18:13:43.262: debug: Cmd dnssec-signzone return: "zone.db.signed" +2008-06-12 18:13:43.262: debug: Signing completed after 0s. +2008-06-12 18:13:43.262: notice: ""example.net." in view "intern"": reload triggered +2008-06-12 18:13:43.262: debug: Reload zone "example.net." in view "intern" +2008-06-12 18:13:43.262: debug: Run cmd "/usr/local/sbin/rndc reload example.net. IN intern" +2008-06-12 18:13:43.273: debug: +2008-06-12 18:13:43.273: notice: end of run: 0 errors occured +2008-10-03 01:00:38.404: notice: ------------------------------------------------------------ +2008-10-03 01:00:38.404: notice: running ../../dnssec-signer -V intern +2008-10-03 01:00:38.405: debug: parsing zone "example.net" in dir "intern/example.net" +2008-10-03 01:00:38.405: debug: Check RFC5011 status +2008-10-03 01:00:38.405: debug: ->not a rfc5011 zone, looking for a regular ksk rollover +2008-10-03 01:00:38.405: debug: Check KSK status +2008-10-03 01:00:38.405: debug: Check ZSK status +2008-10-03 01:00:38.405: debug: Lifetime(2592000 +/-150 sec) of active key 5972 exceeded (5018321 sec) +2008-10-03 01:00:38.405: debug: ->depreciate it +2008-10-03 01:00:38.405: debug: ->activate published key 23375 +2008-10-03 01:00:38.405: notice: "example.net": lifetime of zone signing key 5972 exceeded: ZSK rollover done +2008-10-03 01:00:38.405: debug: New key for publishing needed +2008-10-03 01:00:38.491: debug: ->creating new key 55745 +2008-10-03 01:00:38.492: info: "example.net": new key 55745 generated for publishing +2008-10-03 01:00:38.492: debug: Re-signing necessary: New zone key +2008-10-03 01:00:38.492: notice: "example.net": re-signing triggered: New zone key +2008-10-03 01:00:38.492: debug: Writing key file "intern/example.net/dnskey.db" +2008-10-03 01:00:38.492: debug: Signing zone "example.net" +2008-10-03 01:00:38.492: debug: Run cmd "cd intern/example.net; /usr/local/sbin/dnssec-signzone -g -p -o example.net -e +86400 -N unixtime zone.db K*.private" +2008-10-03 01:00:38.796: debug: Cmd dnssec-signzone return: "zone.db.signed" +2008-10-03 01:00:38.796: debug: Signing completed after 0s. +2008-10-03 01:00:38.796: debug: +2008-10-03 01:00:38.796: notice: end of run: 0 errors occured diff --git a/contrib/zkt-1.1.2/examples/views/named.conf b/contrib/zkt-1.1.2/examples/views/named.conf new file mode 100644 index 0000000000..c7034e2f5f --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/named.conf @@ -0,0 +1,97 @@ +/***************************************************************** +** +** #(@) named.conf (c) 6. May 2004 (hoz) +*****************************************************************/ + +/***************************************************************** +** logging options +*****************************************************************/ +logging { + channel "named-log" { + file "named.log"; + print-time yes; + print-category yes; + print-severity yes; + severity info; + }; + category "dnssec" { "named-log"; }; + category "edns-disabled" { "named-log"; }; + category "default" { "named-log"; }; +}; + +/***************************************************************** +** name server options +*****************************************************************/ +options { + directory "."; + + pid-file "named.pid"; + listen-on-v6 port 1053 { any; }; + listen-on port 1053 { any; }; + + empty-zones-enable no; + + port 1053; + query-source address * port 1053; + query-source-v6 address * port 1053; + transfer-source * port 53; + transfer-source-v6 * port 53; + use-alt-transfer-source no; + notify-source * port 53; + notify-source-v6 * port 53; + + recursion yes; + dnssec-enable yes; + dnssec-validation yes; /* required by BIND 9.4.0 */ + dnssec-accept-expired false; /* added since BIND 9.5.0 */ + edns-udp-size 1460; /* (M4) */ + max-udp-size 1460; /* (M5) */ + + # allow-query { localhost; }; /* default in 9.4.0 */ + # allow-query-cache { localhost; }; /* default in 9.4.0 */ + + dnssec-must-be-secure "." no; + + querylog yes; + + stats-server 127.0.0.1 port 8881; /* added since BIND 9.5.0 */ +}; + +/***************************************************************** +** view intern +*****************************************************************/ +view "intern" { + match-clients { 127.0.0.1; ::1; }; + recursion yes; + zone "." in { + type hint; + file "root.hint"; + }; + + zone "0.0.127.in-addr.arpa" in { + type master; + file "127.0.0.zone"; + }; + + zone "example.net" in { + type master; + file "intern/example.net/zone.db.signed"; + }; +}; + +/***************************************************************** +** view extern +*****************************************************************/ +view "extern" { + match-clients { any; }; + recursion no; + zone "." in { + type hint; + file "root.hint"; + }; + + zone "example.net" in { + type master; + file "extern/example.net/zone.db.signed"; + }; +}; diff --git a/contrib/zkt-1.1.2/examples/views/named.log b/contrib/zkt-1.1.2/examples/views/named.log new file mode 100644 index 0000000000..15d5f7b927 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/named.log @@ -0,0 +1,17 @@ +20-Nov-2007 17:12:58.092 general: critical: couldn't open pid file '/var/run/named.pid': Permission denied +20-Nov-2007 17:12:58.092 general: critical: exiting (due to early fatal error) +20-Nov-2007 17:20:24.941 general: critical: couldn't open pid file '/var/run/named.pid': Permission denied +20-Nov-2007 17:20:24.941 general: critical: exiting (due to early fatal error) +20-Nov-2007 17:28:22.686 general: critical: couldn't open pid file '/var/run/named.pid': Permission denied +20-Nov-2007 17:28:22.686 general: critical: exiting (due to early fatal error) +20-Nov-2007 17:40:12.389 general: error: zone 0.0.127.in-addr.arpa/IN/intern: loading from master file 127.0.0.zone failed: file not found +20-Nov-2007 17:40:12.391 general: info: zone example.net/IN/intern: loaded serial 1195574789 (signed) +20-Nov-2007 17:40:12.393 general: info: zone example.net/IN/extern: loaded serial 1195561217 (signed) +20-Nov-2007 17:40:12.393 general: notice: running +20-Nov-2007 17:40:12.393 notify: info: zone example.net/IN/intern: sending notifies (serial 1195574789) +20-Nov-2007 17:40:12.394 notify: info: zone example.net/IN/extern: sending notifies (serial 1195561217) +20-Nov-2007 19:07:04.016 general: info: shutting down +20-Nov-2007 19:07:04.017 network: info: no longer listening on ::#1053 +20-Nov-2007 19:07:04.017 network: info: no longer listening on 127.0.0.1#1053 +20-Nov-2007 19:07:04.017 network: info: no longer listening on 145.253.100.51#1053 +20-Nov-2007 19:07:04.020 general: notice: exiting diff --git a/contrib/zkt-1.1.2/examples/views/root.hint b/contrib/zkt-1.1.2/examples/views/root.hint new file mode 100644 index 0000000000..2b5c167a31 --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/root.hint @@ -0,0 +1,45 @@ +; <<>> DiG 9.5.0a6 <<>> ns . @a.root-servers.net +;; global options: printcmd +;; Got answer: +;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33355 +;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13 +;; WARNING: recursion requested but not available + +;; QUESTION SECTION: +;. IN NS + +;; ANSWER SECTION: +. 518400 IN NS H.ROOT-SERVERS.NET. +. 518400 IN NS I.ROOT-SERVERS.NET. +. 518400 IN NS J.ROOT-SERVERS.NET. +. 518400 IN NS K.ROOT-SERVERS.NET. +. 518400 IN NS L.ROOT-SERVERS.NET. +. 518400 IN NS M.ROOT-SERVERS.NET. +. 518400 IN NS A.ROOT-SERVERS.NET. +. 518400 IN NS B.ROOT-SERVERS.NET. +. 518400 IN NS C.ROOT-SERVERS.NET. +. 518400 IN NS D.ROOT-SERVERS.NET. +. 518400 IN NS E.ROOT-SERVERS.NET. +. 518400 IN NS F.ROOT-SERVERS.NET. +. 518400 IN NS G.ROOT-SERVERS.NET. + +;; ADDITIONAL SECTION: +A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4 +B.ROOT-SERVERS.NET. 3600000 IN A 192.228.79.201 +C.ROOT-SERVERS.NET. 3600000 IN A 192.33.4.12 +D.ROOT-SERVERS.NET. 3600000 IN A 128.8.10.90 +E.ROOT-SERVERS.NET. 3600000 IN A 192.203.230.10 +F.ROOT-SERVERS.NET. 3600000 IN A 192.5.5.241 +G.ROOT-SERVERS.NET. 3600000 IN A 192.112.36.4 +H.ROOT-SERVERS.NET. 3600000 IN A 128.63.2.53 +I.ROOT-SERVERS.NET. 3600000 IN A 192.36.148.17 +J.ROOT-SERVERS.NET. 3600000 IN A 192.58.128.30 +K.ROOT-SERVERS.NET. 3600000 IN A 193.0.14.129 +L.ROOT-SERVERS.NET. 3600000 IN A 199.7.83.42 +M.ROOT-SERVERS.NET. 3600000 IN A 202.12.27.33 + +;; Query time: 114 msec +;; SERVER: 198.41.0.4#53(198.41.0.4) +;; WHEN: Mon Nov 5 07:28:00 2007 +;; MSG SIZE rcvd: 436 + diff --git a/contrib/zkt-1.1.2/examples/views/viewtest.sh b/contrib/zkt-1.1.2/examples/views/viewtest.sh new file mode 100644 index 0000000000..f0a17543ac --- /dev/null +++ b/contrib/zkt-1.1.2/examples/views/viewtest.sh @@ -0,0 +1,20 @@ + + +ZKT_CONFFILE=dnssec.conf +export ZKT_CONFFILE + +if true +then + echo "All internal keys:" + ./dnssec-zkt-intern + echo + + echo "All external keys:" + ./dnssec-zkt-extern + echo +fi + +echo "Sign both views" +./dnssec-signer-intern -v -v -f -r +echo +./dnssec-signer-extern -v -v diff --git a/contrib/zkt/examples/zkt-ls.sh b/contrib/zkt-1.1.2/examples/zkt-ls.sh similarity index 100% rename from contrib/zkt/examples/zkt-ls.sh rename to contrib/zkt-1.1.2/examples/zkt-ls.sh diff --git a/contrib/zkt/examples/zkt-signer.sh b/contrib/zkt-1.1.2/examples/zkt-signer.sh similarity index 100% rename from contrib/zkt/examples/zkt-signer.sh rename to contrib/zkt-1.1.2/examples/zkt-signer.sh diff --git a/contrib/zkt/log.c b/contrib/zkt-1.1.2/log.c similarity index 100% rename from contrib/zkt/log.c rename to contrib/zkt-1.1.2/log.c diff --git a/contrib/zkt/log.h b/contrib/zkt-1.1.2/log.h similarity index 100% rename from contrib/zkt/log.h rename to contrib/zkt-1.1.2/log.h diff --git a/contrib/zkt/man/dnssec-zkt.8 b/contrib/zkt-1.1.2/man/dnssec-zkt.8 similarity index 100% rename from contrib/zkt/man/dnssec-zkt.8 rename to contrib/zkt-1.1.2/man/dnssec-zkt.8 diff --git a/contrib/zkt/man/zkt-conf.8 b/contrib/zkt-1.1.2/man/zkt-conf.8 similarity index 100% rename from contrib/zkt/man/zkt-conf.8 rename to contrib/zkt-1.1.2/man/zkt-conf.8 diff --git a/contrib/zkt/man/zkt-conf.8.html b/contrib/zkt-1.1.2/man/zkt-conf.8.html similarity index 100% rename from contrib/zkt/man/zkt-conf.8.html rename to contrib/zkt-1.1.2/man/zkt-conf.8.html diff --git a/contrib/zkt/man/zkt-conf.8.org b/contrib/zkt-1.1.2/man/zkt-conf.8.org similarity index 100% rename from contrib/zkt/man/zkt-conf.8.org rename to contrib/zkt-1.1.2/man/zkt-conf.8.org diff --git a/contrib/zkt/man/zkt-conf.8.pdf b/contrib/zkt-1.1.2/man/zkt-conf.8.pdf similarity index 100% rename from contrib/zkt/man/zkt-conf.8.pdf rename to contrib/zkt-1.1.2/man/zkt-conf.8.pdf diff --git a/contrib/zkt/man/zkt-keyman.8 b/contrib/zkt-1.1.2/man/zkt-keyman.8 similarity index 98% rename from contrib/zkt/man/zkt-keyman.8 rename to contrib/zkt-1.1.2/man/zkt-keyman.8 index 9c0da65673..69093117d1 100644 --- a/contrib/zkt/man/zkt-keyman.8 +++ b/contrib/zkt-1.1.2/man/zkt-keyman.8 @@ -202,7 +202,7 @@ option is specified. .TP .BI \-R " keyid" ", \-\-revoke=" keyid Revoke the key signing key with the given keyid. -A revoked key has bit 8 in the flags filed set (see RFC5011). +A revoked key has bit 8 in the flags field set (see RFC5011). The keyid is the numeric keytag with an optionally added zone name separated by a colon. .TP .BI \-\-rename=" keyid @@ -251,7 +251,7 @@ Use --ksk-rollover for a little more detailed description. .fam T Create a new key signing key for the zone "example.net". Store the key in the same directory below "zonedir" where the other -"example.net" keys live. +"example.net" keys life. .TP .fam C .B "zkt-keyman \-D 123245 \-r . diff --git a/contrib/zkt/man/zkt-keyman.8.html b/contrib/zkt-1.1.2/man/zkt-keyman.8.html similarity index 98% rename from contrib/zkt/man/zkt-keyman.8.html rename to contrib/zkt-1.1.2/man/zkt-keyman.8.html index dc53c9bb9c..fc93304f5a 100644 --- a/contrib/zkt/man/zkt-keyman.8.html +++ b/contrib/zkt-1.1.2/man/zkt-keyman.8.html @@ -1,5 +1,5 @@ - + @@ -223,7 +223,7 @@ The keyfile will be created in the current directory if the keyid, −−revoke=keyid

Revoke the key signing key with -the given keyid. A revoked key has bit 8 in the flags filed +the given keyid. A revoked key has bit 8 in the flags field set (see RFC5011). The keyid is the numeric keytag with an optionally added zone name separated by a colon.

@@ -285,7 +285,7 @@ more detailed description.

Create a new key signing key for the zone "example.net". Store the key in the same directory below "zonedir" where the other -"example.net" keys live.

+"example.net" keys life.

zkt-keyman −D 123245 −r .

diff --git a/contrib/zkt/man/zkt-keyman.8.pdf b/contrib/zkt-1.1.2/man/zkt-keyman.8.pdf similarity index 58% rename from contrib/zkt/man/zkt-keyman.8.pdf rename to contrib/zkt-1.1.2/man/zkt-keyman.8.pdf index 298fc2b429..487803c3fa 100644 Binary files a/contrib/zkt/man/zkt-keyman.8.pdf and b/contrib/zkt-1.1.2/man/zkt-keyman.8.pdf differ diff --git a/contrib/zkt/man/zkt-ls.8 b/contrib/zkt-1.1.2/man/zkt-ls.8 similarity index 93% rename from contrib/zkt/man/zkt-ls.8 rename to contrib/zkt-1.1.2/man/zkt-ls.8 index c4261912e3..8ee00b12ae 100644 --- a/contrib/zkt/man/zkt-ls.8 +++ b/contrib/zkt-1.1.2/man/zkt-ls.8 @@ -45,6 +45,30 @@ zkt\-ls \(em list dnskeys .RI [{ keyfile | dir } .RI "" ... ] +.B zkt\-ls +.B \-M +.RB [ \-V|--view +.IR "view" ] +.RB [ \-c +.IR "file" ] +.RB [ \-l +.IR "list" ] +.RB [ \-dhrz ] +.RI [{ keyfile | dir } +.RI "" ... ] +.br +.B zkt\-ls +.B \-\-list-managedkeys +.RB [ \-V|--view +.IR "view" ] +.RB [ \-c +.IR "file" ] +.RB [ \-l +.IR "list" ] +.RB [ \-dhrz ] +.RI [{ keyfile | dir } +.RI "" ... ] + .B zkt\-ls .B \-K .RB [ \-V|--view @@ -84,8 +108,8 @@ In that mode the use of option may be helpful to find the location of the keyfile in the directory tree. .PP Other forms of the command, print out keys in a format suitable for -a trusted-key section -.RB ( \-T ) +a trusted- or managed-key section +.RB ( \-T or \-M ) or as a DNSKEY .RB ( \-K ) resource record. @@ -161,7 +185,7 @@ Print the key generation time (default is on). Also settable in the dnssec.conf file (Parameter: PrintTime). .TP .B \-h -No header or trusted-key section header and trailer in -T mode +No header or trusted-key resp. managed-key section header and trailer in \-T or \-M mode. .SH COMMAND OPTIONS .TP diff --git a/contrib/zkt/man/zkt-ls.8.html b/contrib/zkt-1.1.2/man/zkt-ls.8.html similarity index 93% rename from contrib/zkt/man/zkt-ls.8.html rename to contrib/zkt-1.1.2/man/zkt-ls.8.html index 0954bda593..e827839920 100644 --- a/contrib/zkt/man/zkt-ls.8.html +++ b/contrib/zkt-1.1.2/man/zkt-ls.8.html @@ -1,5 +1,5 @@ - + @@ -73,6 +73,18 @@ zkt−ls −−list-trustedkeys ...]

+

zkt−ls +−M [−V|--view view] +[−c file] [−l list] +[−dhrz] [{keyfile|dir} +...]
+zkt−ls −−list-managedkeys
+[−V|--view view] [−c +file] [−l list] +[−dhrz] [{keyfile|dir} +...]

+ +

zkt−ls −K [−V|--view view] [−c file] [−l list] @@ -101,7 +113,8 @@ keyfile in the directory tree.

Other forms of the command, print out keys in a format suitable for a -trusted-key section (−T) or as a DNSKEY +trusted- or managed-key section +(−Tor−M) or as a DNSKEY (−K) resource record.

GENERAL OPTIONS @@ -228,8 +241,8 @@ PrintTime).

-

No header or trusted-key section header and trailer in --T mode

+

No header or trusted-key resp. managed-key section +header and trailer in −T or −M mode.

COMMAND OPTIONS diff --git a/contrib/zkt-1.1.2/man/zkt-ls.8.pdf b/contrib/zkt-1.1.2/man/zkt-ls.8.pdf new file mode 100644 index 0000000000..ad2a6e9008 Binary files /dev/null and b/contrib/zkt-1.1.2/man/zkt-ls.8.pdf differ diff --git a/contrib/zkt/man/zkt-signer.8 b/contrib/zkt-1.1.2/man/zkt-signer.8 similarity index 94% rename from contrib/zkt/man/zkt-signer.8 rename to contrib/zkt-1.1.2/man/zkt-signer.8 index 06de826df8..d182c2b59a 100644 --- a/contrib/zkt/man/zkt-signer.8 +++ b/contrib/zkt-1.1.2/man/zkt-signer.8 @@ -1,4 +1,4 @@ -.TH zkt-signer 8 "Feb 2, 2010" "ZKT 1.0" "" +.TH zkt-signer 8 "Nov 27, 2010" "ZKT 1.1" "" \" turn off hyphenation .\" if n .nh .nh @@ -8,12 +8,14 @@ zkt-signer \(em Secure DNS zone signing tool .SH SYNOPSYS .na .B zkt-signer -.RB [ \-L|--logfile +.RB [ \-L .IR "file" ] -.RB [ \-V|--view +.RB [ \-V .IR "view" ] .RB [ \-c .IR "file" ] +.RB [ \-O +.IR "optstr" ] .RB [ \-fhnr ] .RB [ \-v .RB [ \-v ]] @@ -23,12 +25,14 @@ zkt-signer \(em Secure DNS zone signing tool .RI "" ... ] .br .B zkt-signer -.RB [ \-L|--logfile +.RB [ \-L .IR "file" ] -.RB [ \-V|--view +.RB [ \-V .IR "view" ] .RB [ \-c .IR "file" ] +.RB [ \-O +.IR "optstr" ] .RB [ \-fhnr ] .RB [ \-v .RB [ \-v ]] @@ -38,12 +42,14 @@ zkt-signer \(em Secure DNS zone signing tool .RI "" ... ] .br .B zkt-signer -.RB [ \-L|--logfile +.RB [ \-L .IR "file" ] -.RB [ \-V|--view +.RB [ \-V .IR "view" ] .RB [ \-c .IR "file" ] +.RB [ \-O +.IR "optstr" ] .RB [ \-fhnr ] .RB [ \-v .RB [ \-v ]] @@ -78,6 +84,7 @@ If you have a configuration file with views, you have to use option Alternately you could link the executable file to a second name like .I zkt-signer-viewname and use that command to specify the name of the view. +.br All master zone statements will be scanned for filenames ending with ".signed". These zones will be checked if the necessary zone- and key signing keys @@ -108,30 +115,22 @@ Every secure zone found in a subdirectory below will be signed. However, it is also possible to reduce the signing to those zones given as arguments. -.ig -In directory mode the pre-requisite is, that the directory name is -exactly (including the trailing dot) the same as the zone name. -.. -.PP -In the last form of the command, the functionality is more or less the same -as the -.I dnssec-signzone (8) -command. -The parameter specifies the zone file name and the option -.B \-o -takes the name of the zone. -.PP -If neither +.br +If +.B \-D +is ommitted (and neither .B \-N nor -.B \-D -nor -.B \-o -is given, then the default directory specified in the +.BI \-o origin +is specified) the default directory specified in the .I dnssec.conf file by the parameter .I zonedir will be used as top level directory. +.ig +In directory mode the pre-requisite is, that the directory name is +exactly (including the trailing dot) the same as the zone name. +.. .SH OPTIONS .TP @@ -262,7 +261,7 @@ files. .TP .fam C .B "zkt-signer \-\-config-option='ResignInterval 1d; Sigvalidity 28h; \e -.B ZSK_lifetime 2d;' \-v \-v \-o example.net. zone.db +.B ZSKlifetime 2d;' \-v \-v \-o example.net. zone.db .fam T .br Sign the example.net zone but override some config file values with parameters @@ -278,7 +277,7 @@ Besides the zone file .RI ( zone.db ), there is a signed zone file .RI ( zone.db.signed), -a minimum of four files containing the keying material, +a minimum of four files containing the key material, a file called .I dnskey.db with the current used keys, @@ -314,7 +313,7 @@ The filename is the name of the zone file with the extension .IR .signed . Create an empty file with the name -.IB zonefile .signed +.IB zone.db .signed in the zone directory. .TP Include the keyfile in the zone. @@ -354,7 +353,8 @@ must be formated, so that the serial number is on a single line and left justified in a field of at least 10 spaces! .if t \{\ .fam C -.fi 0 +.\"fi 0 +.nf @ IN SOA ns1.example.net. hostmaster.example.net. ( 60 ; Serial 43200 ; Refresh @@ -366,7 +366,7 @@ left justified in a field of at least 10 spaces! .\} If you use BIND version 9.4 or later and use the unixtime format for the serial number (which is the default since ZKT-1.0) -than this is not necessary. +this is not necessary. See also the parameter Serialformat in .IR dnssec.conf . .TP @@ -389,7 +389,7 @@ Then try to load the file on the name server. .SH ENVIRONMENT VARIABLES .TP ZKT_CONFFILE -Specifies the name of the default global configuration files. +Specifies the name of the default global configuration file. .SH FILES .TP diff --git a/contrib/zkt/man/zkt-signer.8.html b/contrib/zkt-1.1.2/man/zkt-signer.8.html similarity index 83% rename from contrib/zkt/man/zkt-signer.8.html rename to contrib/zkt-1.1.2/man/zkt-signer.8.html index 72dbd8657e..95e82e8817 100644 --- a/contrib/zkt/man/zkt-signer.8.html +++ b/contrib/zkt-1.1.2/man/zkt-signer.8.html @@ -1,5 +1,5 @@ - + @@ -45,21 +45,21 @@

zkt-signer -[−L|--logfile file] -[−V|--view view] [−c -file] [−fhnr] [−v +[−L file] [−V view] +[−c file] [−O +optstr] [−fhnr] [−v [−v]] −N named.conf [zone ...]
-zkt-signer
[−L|--logfile file] -[−V|--view view] [−c -file] [−fhnr] [−v -[−v]] [−D directory] -[zone ...]
-zkt-signer
[−L|--logfile file] -[−V|--view view] [−c -file] [−fhnr] [−v -[−v]] −o origin -[zonefile]

+zkt-signer [−L file] +[−V view] [−c file] +[−O optstr] [−fhnr] +[−v [−v]] [−D +directory] [zone ...]
+zkt-signer
[−L file] +[−V view] [−c file] +[−O optstr] [−fhnr] +[−v [−v]] −o +origin [zonefile]

DESCRIPTION @@ -84,15 +84,16 @@ with views, you have to use option -V viewname or --view viewname to specify the name of the view. Alternately you could link the executable file to a second name like zkt-signer-viewname and use that command to specify -the name of the view. All master zone statements will be -scanned for filenames ending with ".signed". These -zones will be checked if the necessary zone- and key signing -keys are existent and fresh enough to be used in the signing -process. If one or more out-dated keys are found, new keying -material will be generated via the dnssec-keygen(8) -command and the old keys will be marked as depreciated. So -the command do anything needed for a zone key rollover as -defined by [2].

+the name of the view.
+All master zone statements will be scanned for filenames +ending with ".signed". These zones will be checked +if the necessary zone- and key signing keys are existent and +fresh enough to be used in the signing process. If one or +more out-dated keys are found, new keying material will be +generated via the dnssec-keygen(8) command and the +old keys will be marked as depreciated. So the command do +anything needed for a zone key rollover as defined by +[2].

If the resigning interval is reached or any new key must be @@ -107,19 +108,12 @@ form of the command it is possible to specify a directory tree with the option −D dir. Every secure zone found in a subdirectory below dir will be signed. However, it is also possible to reduce the signing -to those zones given as arguments.

- -

In the last -form of the command, the functionality is more or less the -same as the dnssec-signzone (8) command. The -parameter specifies the zone file name and the option -−o takes the name of the zone.

- -

If neither -−N nor −D nor −o is -given, then the default directory specified in the -dnssec.conf file by the parameter zonedir will -be used as top level directory.

+to those zones given as arguments.
+If −D is ommitted (and neither −N +nor −oorigin is specified) the default +directory specified in the dnssec.conf file by the +parameter zonedir will be used as top level +directory.

OPTIONS @@ -252,7 +246,7 @@ directory containing the example.net files.

−−config-option=’ResignInterval 1d; Sigvalidity 28h; \

-

ZSK_lifetime 2d;’ +

ZSKlifetime 2d;’ −v −v −o example.net. zone.db
Sign the example.net zone but override some config file values with parameters given on the commandline.

@@ -269,7 +263,7 @@ separate directory for every secure zone.

are many additional files needed to secure a zone. Besides the zone file (zone.db), there is a signed zone file (zone.db.signed), a minimum of four files containing -the keying material, a file called dnskey.db with the +the key material, a file called dnskey.db with the current used keys, and the dsset- and keyset-files created by the dnssec-signzone(8) command. So in summary there is a minimum of nine files used @@ -298,7 +292,7 @@ zonefile to the named.conf file

The filename is the name of the zone file with the extension .signed. Create an empty -file with the name zonefile.signed in the zone +file with the name zone.db.signed in the zone directory.

Include the keyfile in the diff --git a/contrib/zkt-1.1.2/man/zkt-signer.8.pdf b/contrib/zkt-1.1.2/man/zkt-signer.8.pdf new file mode 100644 index 0000000000..42fa33424b Binary files /dev/null and b/contrib/zkt-1.1.2/man/zkt-signer.8.pdf differ diff --git a/contrib/zkt/misc.c b/contrib/zkt-1.1.2/misc.c similarity index 100% rename from contrib/zkt/misc.c rename to contrib/zkt-1.1.2/misc.c diff --git a/contrib/zkt/misc.h b/contrib/zkt-1.1.2/misc.h similarity index 100% rename from contrib/zkt/misc.h rename to contrib/zkt-1.1.2/misc.h diff --git a/contrib/zkt/ncparse.c b/contrib/zkt-1.1.2/ncparse.c similarity index 100% rename from contrib/zkt/ncparse.c rename to contrib/zkt-1.1.2/ncparse.c diff --git a/contrib/zkt/ncparse.h b/contrib/zkt-1.1.2/ncparse.h similarity index 100% rename from contrib/zkt/ncparse.h rename to contrib/zkt-1.1.2/ncparse.h diff --git a/contrib/zkt/nscomm.c b/contrib/zkt-1.1.2/nscomm.c similarity index 100% rename from contrib/zkt/nscomm.c rename to contrib/zkt-1.1.2/nscomm.c diff --git a/contrib/zkt/nscomm.h b/contrib/zkt-1.1.2/nscomm.h similarity index 100% rename from contrib/zkt/nscomm.h rename to contrib/zkt-1.1.2/nscomm.h diff --git a/contrib/zkt/rollover.c b/contrib/zkt-1.1.2/rollover.c similarity index 84% rename from contrib/zkt/rollover.c rename to contrib/zkt-1.1.2/rollover.c index 88d7e0f813..0899ec356d 100644 --- a/contrib/zkt/rollover.c +++ b/contrib/zkt-1.1.2/rollover.c @@ -62,40 +62,63 @@ ** local function definition *****************************************************************/ -static dki_t *genkey (dki_t **listp, const char *dir, const char *domain, int ksk, const zconf_t *conf, int status) +static dki_t *genkey (int addkey, dki_t **listp, const char *dir, const char *domain, int ksk, const zconf_t *conf, int status); + +/* generate the first (or primary) key (algorithm k_algo) */ +static dki_t *genfirstkey (dki_t **listp, const char *dir, const char *domain, int ksk, const zconf_t *conf, int status) +{ + return genkey (0, listp, dir, domain, ksk, conf, status); +} + +/* generate the additional (or second) key (algorithm k2_algo) */ +static dki_t *genaddkey (dki_t **listp, const char *dir, const char *domain, int ksk, const zconf_t *conf, int status) +{ + return genkey (1, listp, dir, domain, ksk, conf, status); +} + + +/* generate a DNSKEY key */ +static dki_t *genkey (int addkey, dki_t **listp, const char *dir, const char *domain, int ksk, const zconf_t *conf, int status) { dki_t *dkp; + int confalgo; + int algo; +#if 0 if ( listp == NULL || domain == NULL ) return NULL; +#else + assert ( listp != NULL ); + assert ( domain != NULL ); +#endif + + if ( addkey ) /* generating an additional key ? */ + confalgo = conf->k2_algo; + else + confalgo = conf->k_algo; + + algo = confalgo; +#if defined(BIND_VERSION) && BIND_VERSION >= 960 + if ( conf->nsec3 != NSEC3_OFF ) /* is nsec3 turned on ? */ + { + if ( confalgo == DK_ALGO_RSASHA1 ) + algo = DK_ALGO_NSEC3RSASHA1; + else if ( confalgo == DK_ALGO_DSA ) + algo = DK_ALGO_NSEC3DSA; + } +#endif if ( ksk ) - dkp = dki_new (dir, domain, DKI_KSK, conf->k_algo, conf->k_bits, conf->k_random, conf->k_life / DAYSEC); + dkp = dki_new (dir, domain, DKI_KSK, algo, conf->k_bits, conf->k_random, conf->k_life / DAYSEC); else - dkp = dki_new (dir, domain, DKI_ZSK, conf->k_algo, conf->z_bits, conf->z_random, conf->z_life / DAYSEC); - dki_add (listp, dkp); - dki_setstatus (dkp, status); - - return dkp; -} - -static dki_t *genkey2 (dki_t **listp, const char *dir, const char *domain, int ksk, const zconf_t *conf, int status) -{ - dki_t *dkp; - - if ( listp == NULL || domain == NULL ) - return NULL; - - if ( ksk ) - dkp = dki_new (dir, domain, DKI_KSK, conf->k2_algo, conf->k_bits, conf->k_random, conf->k_life / DAYSEC); - else - dkp = dki_new (dir, domain, DKI_ZSK, conf->k2_algo, conf->z_bits, conf->z_random, conf->z_life / DAYSEC); + dkp = dki_new (dir, domain, DKI_ZSK, algo, conf->z_bits, conf->z_random, conf->z_life / DAYSEC); dki_add (listp, dkp); dki_setstatus (dkp, status); return dkp; } +/* get expiration time */ static time_t get_exptime (dki_t *key, const zconf_t *z) { time_t exptime; @@ -257,7 +280,7 @@ static int kskrollover (dki_t *ksk, zone_t *zonelist, zone_t *zp) { verbmesg (2, z, "\t\tkskrollover: create new key signing key\n"); /* create a new key: this is phase one of a double signing key rollover */ - ksk = genkey (&zp->keys, zp->dir, zp->zone, DKI_KSK, z, DKI_ACTIVE); + ksk = genfirstkey (&zp->keys, zp->dir, zp->zone, DKI_KSK, z, DKI_ACTIVE); if ( ksk == NULL ) { lg_mesg (LG_ERROR, "\"%s\": unable to generate new ksk for double signing rollover", zp->zone); @@ -434,7 +457,7 @@ int ksk5011status (dki_t **listp, const char *dir, const char *domain, const zco verbmesg (1, z, "\tLifetime of Key Signing Key %d exceeded (%s): Starting rfc5011 rollover!\n", activekey->tag, str_delspace (age2str (dki_age (activekey, currtime)))); verbmesg (2, z, "\t\t=>Generating new standby key signing key\n"); - dkp = genkey (listp, dir, domain, DKI_KSK, z, DKI_PUBLISHED); /* gentime == now; lifetime = z->k_life; exp = 0 */ + dkp = genfirstkey (listp, dir, domain, DKI_KSK, z, DKI_PUBLISHED); /* gentime == now; lifetime = z->k_life; exp = 0 */ if ( !dkp ) { error ("\tcould not generate new standby KSK\n"); @@ -484,7 +507,7 @@ int kskstatus (zone_t *zonelist, zone_t *zp) if ( akey == NULL ) { verbmesg (1, z, "\tNo active KSK found: generate new one\n"); - akey = genkey (&zp->keys, zp->dir, zp->zone, DKI_KSK, z, DKI_ACTIVE); + akey = genfirstkey (&zp->keys, zp->dir, zp->zone, DKI_KSK, z, DKI_ACTIVE); if ( !akey ) { error ("\tcould not generate new KSK\n"); @@ -506,7 +529,7 @@ int kskstatus (zone_t *zonelist, zone_t *zp) if ( akey == NULL ) { verbmesg (1, z, "\tNo active KSK for additional algorithm found: generate new one\n"); - akey = genkey2 (&zp->keys, zp->dir, zp->zone, DKI_KSK, z, DKI_ACTIVE); + akey = genaddkey (&zp->keys, zp->dir, zp->zone, DKI_KSK, z, DKI_ACTIVE); if ( !akey ) { error ("\tcould not generate new KSK for additional algorithm\n"); @@ -584,8 +607,14 @@ int zskstatus (dki_t **listp, const char *dir, const char *domain, const zconf_t if ( akey == NULL && lifetime > 0 ) /* no active key found */ { verbmesg (1, z, "\tNo active ZSK found: generate new one\n"); - akey = genkey (listp, dir, domain, DKI_ZSK, z, DKI_ACTIVE); - lg_mesg (LG_INFO, "\"%s\": generated new ZSK %d", domain, akey->tag); + akey = genfirstkey (listp, dir, domain, DKI_ZSK, z, DKI_ACTIVE); + if ( !akey ) + { + error ("\tcould not generate new ZSK\n"); + lg_mesg (LG_ERROR, "\%s\": can't generate new ZSK", domain); + } + else + lg_mesg (LG_INFO, "\"%s\": generated new ZSK %d", domain, akey->tag); } else /* active key exist */ { @@ -626,29 +655,54 @@ int zskstatus (dki_t **listp, const char *dir, const char *domain, const zconf_t } } } - /* Should we add a new publish key? This is necessary if the active - * key will be expired at the next re-signing interval (The published - * time will be checked just before the active key will be removed. - * See above). - */ - nextkey = (dki_t *)dki_findalgo (*listp, DKI_ZSK, z->k_algo, 'p', 1); - if ( nextkey == NULL && lifetime > 0 && (akey == NULL || - dki_age (akey, currtime + z->resign) > lifetime - (OFFSET)) ) - { - keychange = 1; - verbmesg (1, z, "\tNew key for publishing needed\n"); - nextkey = genkey (listp, dir, domain, DKI_ZSK, z, DKI_PUB); - if ( nextkey ) + /* Should we add a new publish key? */ + nextkey = (dki_t *)dki_findalgo (*listp, DKI_ZSK, z->k_algo, 'p', 1); /* is there a published ZSK? */ +#if defined(ALLOW_ALWAYS_PREPUBLISH_ZSK) && ALLOW_ALWAYS_PREPUBLISH_ZSK + if ( z->z_always ) /* always add a pre-publish ZSK (patch from Hrant Dadivanyan) */ + { + if ( nextkey == NULL ) { - verbmesg (1, z, "\t\t->creating new key %d\n", nextkey->tag); - lg_mesg (LG_INFO, "\"%s\": new key %d generated for publishing", domain, nextkey->tag); + verbmesg (1, z, "\tNew key for pre-publishing needed\n"); + nextkey = genfirstkey (listp, dir, domain, DKI_ZSK, z, DKI_PUB); + if ( nextkey ) + { + keychange = 1; + verbmesg (1, z, "\t\t->creating new key %d\n", nextkey->tag); + lg_mesg (LG_INFO, "\"%s\": new key %d generated for pre-publishing", domain, nextkey->tag); + } + else + { + error ("\tcould not generate new ZSK: \"%s\"\n", dki_geterrstr()); + lg_mesg (LG_ERROR, "\"%s\": can't generate new ZSK: \"%s\"", + domain, dki_geterrstr()); + } } - else + } + else /* do we need a new ZSK ? */ +#endif + { + /* This is necessary if the active key will be expired at the + * next re-signing interval (The published time will be checked + * just before the active key will be removed. See above). + */ + if ( nextkey == NULL && lifetime > 0 && (akey == NULL || + dki_age (akey, currtime + z->resign) > lifetime - (OFFSET)) ) { - error ("\tcould not generate new ZSK: \"%s\"\n", dki_geterrstr()); - lg_mesg (LG_ERROR, "\"%s\": can't generate new ZSK: \"%s\"", - domain, dki_geterrstr()); + verbmesg (1, z, "\tNew ZSK for publishing needed\n"); + nextkey = genfirstkey (listp, dir, domain, DKI_ZSK, z, DKI_PUB); + if ( nextkey ) + { + keychange = 1; + verbmesg (1, z, "\t\t->creating new key %d\n", nextkey->tag); + lg_mesg (LG_INFO, "\"%s\": new zone signing key %d generated for publishing", domain, nextkey->tag); + } + else + { + error ("\tcould not generate new ZSK: \"%s\"\n", dki_geterrstr()); + lg_mesg (LG_ERROR, "\"%s\": can't generate new ZSK: \"%s\"", + domain, dki_geterrstr()); + } } } @@ -660,7 +714,7 @@ int zskstatus (dki_t **listp, const char *dir, const char *domain, const zconf_t if ( akey == NULL ) { verbmesg (1, z, "\tNo active ZSK for second algorithm found: generate new one\n"); - akey = genkey2 (listp, dir, domain, DKI_ZSK, z, DKI_ACTIVE); + akey = genaddkey (listp, dir, domain, DKI_ZSK, z, DKI_ACTIVE); if ( !akey ) { error ("\tcould not generate new ZSK for 2nd algorithm\n"); diff --git a/contrib/zkt/rollover.h b/contrib/zkt-1.1.2/rollover.h similarity index 96% rename from contrib/zkt/rollover.h rename to contrib/zkt-1.1.2/rollover.h index ef9c609433..9bd3c9097b 100644 --- a/contrib/zkt/rollover.h +++ b/contrib/zkt-1.1.2/rollover.h @@ -47,11 +47,7 @@ # define OFFSET ((int) (2.5 * MINSEC)) # define PARENT_PROPAGATION (5 * MINSEC) # define ADD_HOLD_DOWN (30 * DAYSEC) -#if 0 # define REMOVE_HOLD_DOWN (30 * DAYSEC) -#else -# define REMOVE_HOLD_DOWN (10 * DAYSEC) /* reduced for testiing purposes */ -#endif extern int ksk5011status (dki_t **listp, const char *dir, const char *domain, const zconf_t *z); extern int kskstatus (zone_t *zonelist, zone_t *zp); diff --git a/contrib/zkt/soaserial.c b/contrib/zkt-1.1.2/soaserial.c similarity index 75% rename from contrib/zkt/soaserial.c rename to contrib/zkt-1.1.2/soaserial.c index 0f6eb2196e..45e186f06b 100644 --- a/contrib/zkt/soaserial.c +++ b/contrib/zkt-1.1.2/soaserial.c @@ -44,7 +44,7 @@ # include # include #ifdef HAVE_CONFIG_H -# include +# include "config.h" #endif # include "config_zkt.h" # include "zconf.h" @@ -79,12 +79,15 @@ static const char *strfindstr (const char *str, const char *search); ** of at least 10 characters like this: ** 1 ; Serial ** +** Since ZKT 1.1.0 single line SOA records are also supported +** ****************************************************************/ int inc_serial (const char *fname, int use_unixtime) { FILE *fp; char buf[4095+1]; int error; + int serial_pos; /** since BIND 9.4, there is a dnssec-signzone option available for @@ -99,22 +102,32 @@ int inc_serial (const char *fname, int use_unixtime) return -1; /* read until the line matches the beginning of a soa record ... */ - while ( fgets (buf, sizeof buf, fp) && !is_soa_rr (buf) ) - ; + while ( fgets (buf, sizeof buf, fp) ) + { + dbg_val ("inc_serial() checking line for SOA RR \"%s\"\n", buf); + serial_pos = is_soa_rr (buf); + if ( serial_pos ) /* SOA record found ? */ + break; + } if ( feof (fp) ) { fclose (fp); return -2; } + dbg_val ("serial_pos = %d\n", serial_pos); + if (serial_pos > 1 ) /* if we found a single line SOA RR */ + fseek (fp, -(long)serial_pos, SEEK_CUR); /* go back to the beginning of the line */ error = inc_soa_serial (fp, use_unixtime); /* .. inc soa serial no ... */ + dbg_val ("inc_soa_serial() returns %d\n", error); - if ( fclose (fp) != 0 ) + if ( fclose (fp) != 0 ) /* close the zone file in any case */ return -5; return error; } +#if 0 /***************************************************************** ** check if line is the beginning of a SOA RR record, thus ** containing the string "IN .* SOA" and ends with a '(' @@ -126,17 +139,65 @@ static int is_soa_rr (const char *line) assert ( line != NULL ); - if ( (p = strfindstr (line, "IN")) && strfindstr (p+2, "SOA") ) /* line contains "IN" and "SOA" */ + /* line contains "IN" and "SOA" */ + if ( (p = strfindstr (line, "IN")) && strfindstr (p+2, "SOA") ) { p = line + strlen (line) - 1; while ( p > line && isspace (*p) ) p--; - if ( *p == '(' ) /* last character have to be a '(' to start a multi line record */ + if ( *p == '(' ) /* last character must be a '(' to start a multi line record */ return 1; } return 0; } +#else +/***************************************************************** +** +** check if line is the beginning of a SOA RR record, thus +** containing the string "IN .* SOA" and ends with a '(' +** (multiline record) or is a single line record. +** +** returns 1 if it is a multi line record (for compability to +** the old function) or the position of the serial number +** field counted from the end of the line +** +*****************************************************************/ +static int is_soa_rr (const char *line) +{ + const char *p; + const char *soa_p; + + assert ( line != NULL ); + + /* line contains "IN" and "SOA" ? */ + if ( (p = strfindstr (line, "IN")) && (soa_p = strfindstr (p+2, "SOA")) ) + { + int len = strlen (line); + + /* check for multiline record */ + p = line + len - 1; + while ( p > line && isspace (*p) ) + p--; + if ( *p == '(' ) /* last character must be a '(' to start a multi line record */ + return 1; + + /* line is single line record */ + p = soa_p + 3; /* start just behind the SOA string */ + dbg_val1 ("p = \"%s\"\n", p); + p += strspn (p, " \t"); /* skip white space */ + p += strcspn (p, " \t"); /* skip primary master */ + p += strspn (p, " \t"); /* skip white space */ + p += strcspn (p, " \t"); /* skip mail address */ + dbg_val1 ("p = \"%s\"\n", p); + + dbg_val1 ("is_soa_rr returns = %d\n", (line+len) - p); + return (line+len) - p; /* position of serial nr from the end of the line */ + } + + return 0; +} +#endif /***************************************************************** ** Find string 'search' in 'str' and ignore case in comparison. @@ -185,6 +246,7 @@ static ulong serialtime (time_t sec) ** inc_soa_serial (fp, use_unixtime) ** increment the soa serial number of the file 'fp' ** 'fp' must be opened "r+" +** returns 0 on success or a negative value in case of an error *****************************************************************/ static int inc_soa_serial (FILE *fp, int use_unixtime) { @@ -194,7 +256,7 @@ static int inc_soa_serial (FILE *fp, int use_unixtime) int digits; ulong today; - /* move forward until any non ws reached */ + /* move forward until any non ws is reached */ while ( (c = getc (fp)) != EOF && isspace (c) ) ; ungetc (c, fp); /* push back the last char */ @@ -223,7 +285,7 @@ static int inc_soa_serial (FILE *fp, int use_unixtime) fseek (fp, pos, SEEK_SET); /* go back to the beginning */ fprintf (fp, "%-*lu", digits, serial); /* write as many chars as before */ - return 1; /* yep! */ + return 0; /* yep! */ } /***************************************************************** @@ -256,9 +318,10 @@ main (int argc, char *argv[]) now = serialtime (now); printf ("now = %lu\n", now); - if ( (err = inc_serial (argv[1], 0)) <= 0 ) + if ( (err = inc_serial (argv[1], 0)) < 0 ) { - error ("can't change serial errno=%d\n", err); + fprintf (stderr, "can't change serial no: errno=%d %s\n", + err, inc_errstr (err)); exit (1); } diff --git a/contrib/zkt/soaserial.h b/contrib/zkt-1.1.2/soaserial.h similarity index 100% rename from contrib/zkt/soaserial.h rename to contrib/zkt-1.1.2/soaserial.h diff --git a/contrib/zkt/strlist.c b/contrib/zkt-1.1.2/strlist.c similarity index 100% rename from contrib/zkt/strlist.c rename to contrib/zkt-1.1.2/strlist.c diff --git a/contrib/zkt/strlist.h b/contrib/zkt-1.1.2/strlist.h similarity index 100% rename from contrib/zkt/strlist.h rename to contrib/zkt-1.1.2/strlist.h diff --git a/contrib/zkt/tags b/contrib/zkt-1.1.2/tags similarity index 94% rename from contrib/zkt/tags rename to contrib/zkt-1.1.2/tags index fa2d67aecf..f676c06ea3 100644 --- a/contrib/zkt/tags +++ b/contrib/zkt-1.1.2/tags @@ -21,10 +21,10 @@ ISDELIM zconf.c 70;" d file: ISTRUE zconf.c 66;" d file: KEYGEN_COMPMODE dki.c 231;" d file: KEYGEN_COMPMODE dki.c 233;" d file: -KEYSET_FILE_PFX zkt-signer.c 747;" d file: +KEYSET_FILE_PFX zkt-signer.c 748;" d file: KeyWords ncparse.c /^static struct KeyWords {$/;" s file: MAXFNAME log.c 98;" d file: -STRCONFIG_DELIMITER zconf.c 632;" d file: +STRCONFIG_DELIMITER zconf.c 677;" d file: TAINTEDCHARS misc.c 60;" d file: TOK_DELEGATION ncparse.c 59;" d file: TOK_DIR ncparse.c 49;" d file: @@ -70,6 +70,7 @@ create_parent_file zkt-keyman.c /^static int create_parent_file (const char *fna createkey zkt-keyman.c /^static void createkey (const char *keyname, const dki_t *list, const zconf_t *conf)$/;" f file: ctype_t zconf.c /^} ctype_t;$/;" t typeref:enum:__anon2 file: def zconf.c /^static zconf_t def = {$/;" v file: +desc zconf.c /^ const char *desc;$/;" m struct:__anon3 file: dirflag zkt-keyman.c /^static int dirflag = 0;$/;" v file: dirflag zkt-ls.c /^static int dirflag = 0;$/;" v file: dirname zkt-signer.c /^static const char *dirname = NULL;$/;" v file: @@ -105,6 +106,7 @@ dki_prt_comment dki.c /^int dki_prt_comment (const dki_t *dkp, FILE *fp)$/;" f dki_prt_dnskey dki.c /^int dki_prt_dnskey (const dki_t *dkp, FILE *fp)$/;" f dki_prt_dnskey_raw dki.c /^int dki_prt_dnskey_raw (const dki_t *dkp, FILE *fp)$/;" f dki_prt_dnskeyttl dki.c /^int dki_prt_dnskeyttl (const dki_t *dkp, FILE *fp, int ttl)$/;" f +dki_prt_managedkey dki.c /^int dki_prt_managedkey (const dki_t *dkp, FILE *fp)$/;" f dki_prt_trustedkey dki.c /^int dki_prt_trustedkey (const dki_t *dkp, FILE *fp)$/;" f dki_read dki.c /^dki_t *dki_read (const char *dirname, const char *filename)$/;" f dki_readdir dki.c /^int dki_readdir (const char *dir, dki_t **listp, int recursive)$/;" f @@ -159,8 +161,8 @@ extern tcap.c 31;" d file: extern tcap.c 33;" d file: extern zconf.c 61;" d file: extern zconf.c 63;" d file: -extern zfparse.c 58;" d file: -extern zfparse.c 60;" d file: +extern zfparse.c 51;" d file: +extern zfparse.c 53;" d file: extern zkt.c 49;" d file: extern zkt.c 51;" d file: extern zone.c 53;" d file: @@ -173,8 +175,9 @@ filesize misc.c /^size_t filesize (const char *name)$/;" f first zconf.c 74;" d file: force zkt-signer.c /^static int force = 0;$/;" v file: freeconfig zconf.c /^zconf_t *freeconfig (zconf_t *conf)$/;" f -genkey rollover.c /^static dki_t *genkey (dki_t **listp, const char *dir, const char *domain, int ksk, const zconf_t *conf, int status)$/;" f file: -genkey2 rollover.c /^static dki_t *genkey2 (dki_t **listp, const char *dir, const char *domain, int ksk, const zconf_t *conf, int status)$/;" f file: +genaddkey rollover.c /^static dki_t *genaddkey (dki_t **listp, const char *dir, const char *domain, int ksk, const zconf_t *conf, int status)$/;" f file: +genfirstkey rollover.c /^static dki_t *genfirstkey (dki_t **listp, const char *dir, const char *domain, int ksk, const zconf_t *conf, int status)$/;" f file: +genkey rollover.c /^static dki_t *genkey (int addkey, dki_t **listp, const char *dir, const char *domain, int ksk, const zconf_t *conf, int status)$/;" f file: gensalt misc.c /^int gensalt (char *salt, size_t saltsize, int saltbits, unsigned int seed)$/;" f get_exptime rollover.c /^static time_t get_exptime (dki_t *key, const zconf_t *z)$/;" f file: get_parent_phase rollover.c /^static int get_parent_phase (const char *file)$/;" f file: @@ -216,7 +219,7 @@ kskflag zkt-ls.c /^int kskflag = 1;$/;" v kskrollover rollover.c /^static int kskrollover (dki_t *ksk, zone_t *zonelist, zone_t *zp)$/;" f file: kskstatus rollover.c /^int kskstatus (zone_t *zonelist, zone_t *zp)$/;" f kw ncparse.c /^} kw[] = {$/;" v typeref:struct:KeyWords file: -label zconf.c /^ char *label; \/* the name of the paramter *\/$/;" m struct:__anon3 file: +label zconf.c /^ char *label; \/* the name of the parameter *\/$/;" m struct:__anon3 file: labellist zkt-keyman.c /^char *labellist = NULL;$/;" v labellist zkt-ls.c /^char *labellist = NULL;$/;" v last zconf.c 75;" d file: @@ -250,6 +253,7 @@ lifetimeflag zkt-ls.c /^int lifetimeflag = 0;$/;" v linkfile misc.c /^int linkfile (const char *fromfile, const char *tofile)$/;" f list_dnskey zkt.c /^static void list_dnskey (const dki_t **nodep, const VISIT which, int depth)$/;" f file: list_key zkt.c /^static void list_key (const dki_t **nodep, const VISIT which, int depth)$/;" f file: +list_managedkey zkt.c /^static void list_managedkey (const dki_t **nodep, const VISIT which, int depth)$/;" f file: list_trustedkey zkt.c /^static void list_trustedkey (const dki_t **nodep, const VISIT which, int depth)$/;" f file: ljustflag zkt-keyman.c /^int ljustflag = 0;$/;" v ljustflag zkt-ls.c /^int ljustflag = 0;$/;" v @@ -262,22 +266,22 @@ long_options zkt-conf.c /^static struct option long_options[] = {$/;" v typeref: long_options zkt-keyman.c /^static struct option long_options[] = {$/;" v typeref:struct:option file: long_options zkt-ls.c /^static struct option long_options[] = {$/;" v typeref:struct:option file: long_options zkt-signer.c /^static struct option long_options[] = {$/;" v typeref:struct:option file: -lopt_usage zkt-conf.c 306;" d file: -lopt_usage zkt-conf.c 309;" d file: +lopt_usage zkt-conf.c 319;" d file: +lopt_usage zkt-conf.c 322;" d file: lopt_usage zkt-keyman.c 334;" d file: lopt_usage zkt-keyman.c 337;" d file: -lopt_usage zkt-ls.c 314;" d file: -lopt_usage zkt-ls.c 317;" d file: -lopt_usage zkt-signer.c 341;" d file: -lopt_usage zkt-signer.c 344;" d file: -loptstr zkt-conf.c 307;" d file: -loptstr zkt-conf.c 310;" d file: +lopt_usage zkt-ls.c 325;" d file: +lopt_usage zkt-ls.c 328;" d file: +lopt_usage zkt-signer.c 342;" d file: +lopt_usage zkt-signer.c 345;" d file: +loptstr zkt-conf.c 320;" d file: +loptstr zkt-conf.c 323;" d file: loptstr zkt-keyman.c 335;" d file: loptstr zkt-keyman.c 338;" d file: -loptstr zkt-ls.c 315;" d file: -loptstr zkt-ls.c 318;" d file: -loptstr zkt-signer.c 342;" d file: -loptstr zkt-signer.c 345;" d file: +loptstr zkt-ls.c 326;" d file: +loptstr zkt-ls.c 329;" d file: +loptstr zkt-signer.c 343;" d file: +loptstr zkt-signer.c 346;" d file: main domaincmp.c /^main (int argc, char *argv[])$/;" f main log.c /^int main (int argc, char *argv[])$/;" f main misc.c /^main (int argc, char *argv[])$/;" f @@ -292,6 +296,7 @@ main zkt-keyman.c /^int main (int argc, char *argv[])$/;" f main zkt-ls.c /^int main (int argc, char *argv[])$/;" f main zkt-signer.c /^int main (int argc, char *const argv[])$/;" f main zkt-soaserial.c /^int main (int argc, char *argv[])$/;" f +managedkeyflag zkt-ls.c /^static int managedkeyflag = 0;$/;" v file: maxcolor tcap.c /^static int maxcolor;$/;" v file: name ncparse.c /^ char *name;$/;" m struct:KeyWords file: namedconf zkt-signer.c /^static const char *namedconf = NULL;$/;" v file: @@ -358,17 +363,17 @@ setglobalflags zkt-ls.c /^static void setglobalflags (zconf_t *config)$/;" f fil setminmax zfparse.c /^static void setminmax (long *pmin, long val, long *pmax)$/;" f file: short_options zkt-conf.c 73;" d file: short_options zkt-keyman.c 88;" d file: -short_options zkt-ls.c 92;" d file: -short_options zkt-ls.c 94;" d file: +short_options zkt-ls.c 93;" d file: +short_options zkt-ls.c 95;" d file: short_options zkt-signer.c 68;" d file: short_options zkt-signer.c 70;" d file: sign_zone zkt-signer.c /^static int sign_zone (const zone_t *zp)$/;" f file: skiplabel zfparse.c /^static const char *skiplabel (const char *s)$/;" f file: skipws zfparse.c /^static const char *skipws (const char *s)$/;" f file: -sopt_usage zkt-conf.c 304;" d file: +sopt_usage zkt-conf.c 317;" d file: sopt_usage zkt-keyman.c 332;" d file: -sopt_usage zkt-ls.c 312;" d file: -sopt_usage zkt-signer.c 339;" d file: +sopt_usage zkt-ls.c 323;" d file: +sopt_usage zkt-signer.c 340;" d file: splitpath misc.c /^const char *splitpath (char *path, size_t psize, const char *filename)$/;" f start_timer misc.c /^time_t start_timer ()$/;" f stop_timer misc.c /^time_t stop_timer (time_t start)$/;" f @@ -422,6 +427,7 @@ writekeyfile zkt-signer.c /^static int writekeyfile (const char *fname, const dk zconf_para_t zconf.c /^} zconf_para_t;$/;" t typeref:struct:__anon3 file: zkt_list_dnskeys zkt.c /^void zkt_list_dnskeys (const dki_t *data)$/;" f zkt_list_keys zkt.c /^void zkt_list_keys (const dki_t *data)$/;" f +zkt_list_managedkeys zkt.c /^void zkt_list_managedkeys (const dki_t *data)$/;" f zkt_list_trustedkeys zkt.c /^void zkt_list_trustedkeys (const dki_t *data)$/;" f zkt_search zkt.c /^const dki_t *zkt_search (const dki_t *data, int searchtag, const char *keyname)$/;" f zkt_setkeylifetime zkt.c /^void zkt_setkeylifetime (dki_t *data)$/;" f diff --git a/contrib/zkt/tcap.c b/contrib/zkt-1.1.2/tcap.c similarity index 100% rename from contrib/zkt/tcap.c rename to contrib/zkt-1.1.2/tcap.c diff --git a/contrib/zkt/tcap.h b/contrib/zkt-1.1.2/tcap.h similarity index 100% rename from contrib/zkt/tcap.h rename to contrib/zkt-1.1.2/tcap.h diff --git a/contrib/zkt/zconf.c b/contrib/zkt-1.1.2/zconf.c similarity index 85% rename from contrib/zkt/zconf.c rename to contrib/zkt-1.1.2/zconf.c index 25cdb18ddc..08d82dbd14 100644 --- a/contrib/zkt/zconf.c +++ b/contrib/zkt-1.1.2/zconf.c @@ -2,13 +2,13 @@ ** ** @(#) zconf.c -- configuration file parser for dnssec.conf ** -** Most of the code is from the SixXS Heartbeat Client +** The initial code of this module is from the SixXS Heartbeat Client ** written by Jeroen Massar ** ** New config types and many code changes by Holger Zuleger ** ** Copyright (c) Aug 2005, Jeroen Massar. -** Copyright (c) Aug 2005 - Apr 2010, Holger Zuleger. +** Copyright (c) Aug 2005 - Nov 2010, Holger Zuleger. ** All rights reserved. ** ** This software is open source. @@ -105,7 +105,7 @@ static zconf_t def = { RESIGN_INT, KEY_ALGO, ADDITIONAL_KEY_ALGO, KSK_LIFETIME, KSK_BITS, KSK_RANDOM, - ZSK_LIFETIME, ZSK_BITS, ZSK_RANDOM, + ZSK_LIFETIME, ZSK_BITS, ZSK_ALWAYS, ZSK_RANDOM, NSEC3_OFF, SALTLEN, NULL, /* viewname cmdline parameter */ 0, /* noexec cmdline parameter */ @@ -118,11 +118,12 @@ static zconf_t def = { }; typedef struct { - char *label; /* the name of the paramter */ + char *label; /* the name of the parameter */ short used_since; /* compability (from version; 0 == command line) */ short used_till; /* compability (to version) */ ctype_t type; /* the parameter type */ void *var; /* pointer to the parameter variable */ + const char *desc; const void *var2; /* pointer to a second parameter variable */ /* this is a ugly hack needed by cmpconfig () */ } zconf_para_t; @@ -136,12 +137,12 @@ static zconf_para_t confpara[] = { { "", first, 99, CONF_COMMENT, "dnssec-zkt options" }, { "", 100, last, CONF_COMMENT, "zkt-ls options" }, - { "ZoneDir", first, last, CONF_STRING, &def.zonedir }, - { "Recursive", first, last, CONF_BOOL, &def.recursive }, - { "PrintTime", first, last, CONF_BOOL, &def.printtime }, - { "PrintAge", first, last, CONF_BOOL, &def.printage }, - { "LeftJustify", first, last, CONF_BOOL, &def.ljust }, - { "lsColor", 100, last, CONF_STRING, &def.colorterm }, + { "ZoneDir", first, last, CONF_STRING, &def.zonedir, "default zone file directory (also used by zkt-signer)"}, + { "Recursive", first, last, CONF_BOOL, &def.recursive, "looking for keys down the directory tree?" }, + { "PrintTime", first, last, CONF_BOOL, &def.printtime, "print absolute key generation time?" }, + { "PrintAge", first, last, CONF_BOOL, &def.printage, "print relative key age?" }, + { "LeftJustify", first, last, CONF_BOOL, &def.ljust, "zone name is printed left justified?" }, + { "lsColor", 100, last, CONF_STRING, &def.colorterm, "terminal name (for coloring)" }, { "", first, last, CONF_COMMENT, NULL }, { "", first, last, CONF_COMMENT, "zone specific values" }, @@ -159,8 +160,8 @@ static zconf_para_t confpara[] = { { "", first, last, CONF_COMMENT, NULL }, { "", first, last, CONF_COMMENT, "signing key parameters"}, - { "Key_Algo", 99, 100, CONF_ALGO, &def.k_algo }, /* now used as general KEY algoritjm (KSK & ZSK) */ - { "KeyAlgo", 101, last, CONF_ALGO, &def.k_algo }, /* now used as general KEY algoritjm (KSK & ZSK) */ + { "Key_Algo", 99, 100, CONF_ALGO, &def.k_algo }, /* now used as general KEY algorithm (KSK & ZSK) */ + { "KeyAlgo", 101, last, CONF_ALGO, &def.k_algo }, /* now used as general KEY algorithm (KSK & ZSK) */ { "AddKey_Algo", 99, 100, CONF_ALGO, &def.k2_algo }, /* second key algorithm added (v0.99) */ { "AddKeyAlgo", 101, last, CONF_ALGO, &def.k2_algo }, /* second key algorithm added (v0.99) */ { "KSK_lifetime", first, 100, CONF_TIMEINT, &def.k_life }, @@ -176,10 +177,13 @@ static zconf_para_t confpara[] = { { "ZSK_algo", first, 98, CONF_ALGO, &def.k2_algo }, /* if someone using it already, map the algo to the additional key algorithm */ { "ZSK_bits", first, 100, CONF_INT, &def.z_bits }, { "ZSKbits", 101, last, CONF_INT, &def.z_bits }, +#if defined(ALLOW_ALWAYS_PREPUBLISH_ZSK) && ALLOW_ALWAYS_PREPUBLISH_ZSK + { "ZSKpermanent", 102, last, CONF_BOOL, &def.z_always, "Always add a pre-publish zone signing key?" }, +#endif { "ZSK_randfile", first, 100, CONF_STRING, &def.z_random }, { "ZSKrandfile", 101, last, CONF_STRING, &def.z_random }, { "NSEC3", 100, last, CONF_NSEC3, &def.nsec3 }, - { "SaltBits", 98, last, CONF_INT, &def.saltbits }, + { "SaltBits", 98, last, CONF_INT, &def.saltbits, }, { "", first, last, CONF_COMMENT, NULL }, { "", first, 99, CONF_COMMENT, "dnssec-signer options"}, @@ -199,15 +203,15 @@ static zconf_para_t confpara[] = { { "DLV_Domain", first, 100, CONF_STRING, &def.lookaside }, { "DLVdomain", 101, last, CONF_STRING, &def.lookaside }, { "Sig_Randfile", first, 100, CONF_STRING, &def.sig_random }, - { "SigRandfile", 101, last, CONF_STRING, &def.sig_random }, + { "SigRandfile", 101, last, CONF_STRING, &def.sig_random, "a file containing random data" }, { "Sig_Pseudorand", first, 100, CONF_BOOL, &def.sig_pseudo }, - { "SigPseudorand", 101, last, CONF_BOOL, &def.sig_pseudo }, + { "SigPseudorand", 101, last, CONF_BOOL, &def.sig_pseudo, "use pseudorandom data (faster but less secure)?" }, { "Sig_GenerateDS", first, 100, CONF_BOOL, &def.sig_gends }, - { "SigGenerateDS", 101, last, CONF_BOOL, &def.sig_gends }, + { "SigGenerateDS", 101, last, CONF_BOOL, &def.sig_gends, "update DS records based on child zone\' dsset-* files?" }, { "Sig_DnsKeyKSK", 99, 100, CONF_BOOL, &def.sig_dnskeyksk }, - { "SigDnsKeyKSK", 101, last, CONF_BOOL, &def.sig_dnskeyksk }, + { "SigDnsKeyKSK", 101, last, CONF_BOOL, &def.sig_dnskeyksk, "sign dns keyset with ksk only?" }, { "Sig_Parameter", first, 100, CONF_STRING, &def.sig_param }, - { "SigParameter", 101, last, CONF_STRING, &def.sig_param }, + { "SigParameter", 101, last, CONF_STRING, &def.sig_param, "additional dnssec-signzone parameter (if any)" }, { "Distribute_Cmd", 97, 100, CONF_STRING, &def.dist_cmd }, { "DistributeCmd", 101, last, CONF_STRING, &def.dist_cmd }, { "NamedChrootDir", 99, last, CONF_STRING, &def.chroot_dir }, @@ -249,7 +253,9 @@ static void set_all_varptr (zconf_t *cp, const zconf_t *cp2) set_varptr ("resigninterval", &cp->resign, cp2 ? &cp2->resign: NULL); set_varptr ("sigvalidity", &cp->sigvalidity, cp2 ? &cp2->sigvalidity: NULL); set_varptr ("max_ttl", &cp->max_ttl, cp2 ? &cp2->max_ttl: NULL); + set_varptr ("maximumttl", &cp->max_ttl, cp2 ? &cp2->max_ttl: NULL); set_varptr ("key_ttl", &cp->key_ttl, cp2 ? &cp2->key_ttl: NULL); + set_varptr ("dnskeyttl", &cp->key_ttl, cp2 ? &cp2->key_ttl: NULL); set_varptr ("propagation", &cp->proptime, cp2 ? &cp2->proptime: NULL); #if defined (DEF_TTL) set_varptr ("def_ttl", &cp->def_ttl, cp2 ? &cp2->def_ttl: NULLl); @@ -257,17 +263,28 @@ static void set_all_varptr (zconf_t *cp, const zconf_t *cp2) set_varptr ("serialformat", &cp->serialform, cp2 ? &cp2->serialform: NULL); set_varptr ("key_algo", &cp->k_algo, cp2 ? &cp2->k_algo: NULL); + set_varptr ("keyalgo", &cp->k_algo, cp2 ? &cp2->k_algo: NULL); set_varptr ("addkey_algo", &cp->k2_algo, cp2 ? &cp2->k2_algo: NULL); + set_varptr ("addkeyalgo", &cp->k2_algo, cp2 ? &cp2->k2_algo: NULL); set_varptr ("ksk_lifetime", &cp->k_life, cp2 ? &cp2->k_life: NULL); + set_varptr ("ksklifetime", &cp->k_life, cp2 ? &cp2->k_life: NULL); set_varptr ("ksk_algo", &cp->k_algo, cp2 ? &cp2->k_algo: NULL); /* used only in compability mode */ set_varptr ("ksk_bits", &cp->k_bits, cp2 ? &cp2->k_bits: NULL); + set_varptr ("kskbits", &cp->k_bits, cp2 ? &cp2->k_bits: NULL); set_varptr ("ksk_randfile", &cp->k_random, cp2 ? &cp2->k_random: NULL); + set_varptr ("kskrandfile", &cp->k_random, cp2 ? &cp2->k_random: NULL); set_varptr ("zsk_lifetime", &cp->z_life, cp2 ? &cp2->z_life: NULL); + set_varptr ("zsklifetime", &cp->z_life, cp2 ? &cp2->z_life: NULL); // set_varptr ("zsk_algo", &cp->z_algo, cp2 ? &cp2->z_algo: NULL); set_varptr ("zsk_algo", &cp->k2_algo, cp2 ? &cp2->k2_algo: NULL); set_varptr ("zsk_bits", &cp->z_bits, cp2 ? &cp2->z_bits: NULL); + set_varptr ("zskbits", &cp->z_bits, cp2 ? &cp2->z_bits: NULL); +#if defined(ALLOW_ALWAYS_PREPUBLISH_ZSK) && ALLOW_ALWAYS_PREPUBLISH_ZSK + set_varptr ("zskpermanent", &cp->z_always, cp2 ? &cp2->z_always: NULL); +#endif set_varptr ("zsk_randfile", &cp->z_random, cp2 ? &cp2->z_random: NULL); + set_varptr ("zskrandfile", &cp->z_random, cp2 ? &cp2->z_random: NULL); set_varptr ("nsec3", &cp->nsec3, cp2 ? &cp2->nsec3: NULL); set_varptr ("saltbits", &cp->saltbits, cp2 ? &cp2->saltbits: NULL); @@ -284,12 +301,19 @@ static void set_all_varptr (zconf_t *cp, const zconf_t *cp2) set_varptr ("zonefile", &cp->zonefile, cp2 ? &cp2->zonefile: NULL); set_varptr ("keysetdir", &cp->keysetdir, cp2 ? &cp2->keysetdir: NULL); set_varptr ("dlv_domain", &cp->lookaside, cp2 ? &cp2->lookaside: NULL); + set_varptr ("dlvdomain", &cp->lookaside, cp2 ? &cp2->lookaside: NULL); set_varptr ("sig_randfile", &cp->sig_random, cp2 ? &cp2->sig_random: NULL); + set_varptr ("sigrandfile", &cp->sig_random, cp2 ? &cp2->sig_random: NULL); set_varptr ("sig_pseudorand", &cp->sig_pseudo, cp2 ? &cp2->sig_pseudo: NULL); + set_varptr ("sigpseudorand", &cp->sig_pseudo, cp2 ? &cp2->sig_pseudo: NULL); set_varptr ("sig_generateds", &cp->sig_gends, cp2 ? &cp2->sig_gends: NULL); + set_varptr ("siggenerateds", &cp->sig_gends, cp2 ? &cp2->sig_gends: NULL); set_varptr ("sig_dnskeyksk", &cp->sig_dnskeyksk, cp2 ? &cp2->sig_dnskeyksk: NULL); + set_varptr ("sigdnskeyksk", &cp->sig_dnskeyksk, cp2 ? &cp2->sig_dnskeyksk: NULL); set_varptr ("sig_parameter", &cp->sig_param, cp2 ? &cp2->sig_param: NULL); + set_varptr ("sigparameter", &cp->sig_param, cp2 ? &cp2->sig_param: NULL); set_varptr ("distribute_cmd", &cp->dist_cmd, cp2 ? &cp2->dist_cmd: NULL); + set_varptr ("distributecmd", &cp->dist_cmd, cp2 ? &cp2->dist_cmd: NULL); set_varptr ("namedchrootdir", &cp->chroot_dir, cp2 ? &cp2->chroot_dir: NULL); } @@ -422,7 +446,7 @@ static void parseconfigline (char *buf, unsigned int line, zconf_t *z) *((int *)c->var) = DK_ALGO_RSASHA256; else if ( strcmp (val, "10") == 0 || strcasecmp (val, "rsasha5") == 0 || - strcasecmp (val, "rsasha212") == 0 || + strcasecmp (val, "rsasha512") == 0 || strcasecmp (val, "nsec3rsasha5") == 0 || strcasecmp (val, "n3rsasha5") == 0 || strcasecmp (val, "nsec3rsasha512") == 0 || @@ -471,21 +495,24 @@ static void printconfigline (FILE *fp, zconf_para_t *cp) { int i; long lval; + int printnl; assert (fp != NULL); assert (cp != NULL); + printnl = 0; switch ( cp->type ) { case CONF_VERSION: - fprintf (fp, "#\tZKT config file for version %d.%02d\n", - compversion / 100, compversion % 100); + fprintf (fp, "#\tZKT config file for version %d.%d.%d\n", + compversion / 100, + (compversion / 10 ) % 10, + compversion % 10); break; case CONF_COMMENT: if ( cp->var ) - fprintf (fp, "# %s\n", (char *)cp->var); - else - fprintf (fp, "\n"); + fprintf (fp, "# %s", (char *)cp->var); + printnl = 1; break; case CONF_LEVEL: case CONF_FACILITY: @@ -498,25 +525,30 @@ static void printconfigline (FILE *fp, zconf_para_t *cp) fprintf (fp, "%s:\t", cp->label); for ( p = *(char **)cp->var; *p; p++ ) putc (toupper (*p), fp); - fprintf (fp, "\n"); + // fprintf (fp, "\n"); } else fprintf (fp, "%s:\tNONE", cp->label); } + if ( cp->type == CONF_LEVEL ) + fprintf (fp, "\t\t# (NONE|DEBUG|INFO|NOTICE|WARNING|ERROR|FATAL)\n"); + else + fprintf (fp, "\t\t# (NONE|USER|DAEMON|LOCAL[0-7])\n"); break; case CONF_STRING: if ( *(char **)cp->var ) - fprintf (fp, "%s:\t\"%s\"\n", cp->label, *(char **)cp->var); + printnl = fprintf (fp, "%s:\t\"%s\"", cp->label, *(char **)cp->var); break; case CONF_BOOL: - fprintf (fp, "%s:\t%s\n", cp->label, bool2str ( *(int*)cp->var )); + fprintf (fp, "%s:\t%s", cp->label, bool2str ( *(int*)cp->var )); + printnl = 1; break; case CONF_TIMEINT: lval = *(ulong*)cp->var; /* in that case it should be of type ulong */ fprintf (fp, "%s:\t%s", cp->label, timeint2str (lval)); if ( lval ) fprintf (fp, "\t\t# (%ld seconds)", lval); - putc ('\n', fp); + printnl = 1; break; case CONF_ALGO: i = *(int*)cp->var; @@ -545,12 +577,25 @@ static void printconfigline (FILE *fp, zconf_para_t *cp) fprintf (fp, "\t\t# (On|Off|OptOut)\n"); break; case CONF_INT: - fprintf (fp, "%s:\t%d\n", cp->label, *(int *)cp->var); + fprintf (fp, "%s:\t%d", cp->label, *(int *)cp->var); + printnl = 1; break; case CONF_END: /* NOTREACHED */ break; } + if ( printnl ) + { + if ( cp->desc ) + { + if ( printnl < 20 ) + putc ('\t', fp); + fprintf (fp, "\t# %s\n", cp->desc); + } + else + putc ('\n', fp); + + } } /***************************************************************** @@ -826,6 +871,16 @@ int printconfigdiff (const char *fname, const zconf_t *ref, const zconf_t *z) if ( iscmdline (cp) ) /* skip command line parameter */ continue; + if ( !iscompatible (cp) ) /* is parameter compatible to current version? */ + continue; + + if ( cp->type == CONF_VERSION || cp->type == CONF_END || cp->type == CONF_COMMENT ) + continue; + + dbg_val5 ("printconfigdiff: %d: %s %d %d %d\n", cp->type, cp->label, + compversion, cp->used_since, cp->used_till); + assert ( cp->var2 != NULL ); + switch ( cp->type ) { case CONF_VERSION: @@ -884,11 +939,17 @@ int checkconfig (const zconf_t *z) max_ttl = z->sigvalidity; ret = 0; - if ( strcmp (z->k_random, "/dev/urandom") == 0 ) + if ( z->k_random && strcmp (z->k_random, "/dev/urandom") == 0 ) ret = fprintf (stderr, "random device without enough entropie used for KSK generation \n"); - if ( strcmp (z->z_random, "/dev/urandom") == 0 ) + if ( z->z_random && strcmp (z->z_random, "/dev/urandom") == 0 ) ret = fprintf (stderr, "random device without enough entropie used for ZSK generation\n"); + if ( z->k_bits < 512 || z->z_bits < 512 ) + ret = fprintf (stderr, "Algorithm requires a bit size of at least 512 \n"); + + if ( z->k_algo == DK_ALGO_RSASHA512 && ( z->k_bits < 1024 || z->z_bits < 1024 ) ) + ret = fprintf (stderr, "Algorithm RSASHA 512 requires a bit size of at least 1024 \n"); + if ( z->saltbits < 4 ) ret = fprintf (stderr, "Saltlength must be at least 4 bits\n"); if ( z->saltbits > 128 ) @@ -910,7 +971,7 @@ int checkconfig (const zconf_t *z) } else if ( max_ttl > z->sigvalidity/2 ) - ret = fprintf (stderr, "Max TTL (%ld) should be less or equal signature validity (%ld)\n", + ret = fprintf (stderr, "Max TTL (%ld) should be a few times smaller than the signature validity (%ld)\n", max_ttl, z->sigvalidity); // if ( z->resign > (z->sigvalidity*5/6) - (max_ttl + z->proptime) ) @@ -927,7 +988,7 @@ int checkconfig (const zconf_t *z) ret = fprintf (stderr, "signature lifetime (%ld) (%s)\n", z->sigvalidity, timeint2str(z->sigvalidity - max_ttl)); } - if ( z->z_life > (12 * WEEKSEC) * (z->z_bits / 512.) ) + if ( z->z_life > (24 * WEEKSEC) * (z->z_bits / 512.) ) { fprintf (stderr, "Lifetime of zone signing key (%s) ", timeint2str (z->z_life)); fprintf (stderr, "seems a little bit high "); @@ -939,7 +1000,7 @@ int checkconfig (const zconf_t *z) fprintf (stderr, "Lifetime of key signing key (%s) ", timeint2str (z->k_life)); ret = fprintf (stderr, "should be greater than lifetime of zsk\n"); } - if ( z->k_life > 0 && z->k_life > (26 * WEEKSEC) * (z->k_bits / 512.) ) + if ( z->k_life > 0 && z->k_life > (52 * WEEKSEC) * (z->k_bits / 512.) ) { fprintf (stderr, "Lifetime of key signing key (%s) ", timeint2str (z->k_life)); fprintf (stderr, "seems a little bit high "); diff --git a/contrib/zkt/zconf.h b/contrib/zkt-1.1.2/zconf.h similarity index 94% rename from contrib/zkt/zconf.h rename to contrib/zkt-1.1.2/zconf.h index f35d8f7543..09ed0abce9 100644 --- a/contrib/zkt/zconf.h +++ b/contrib/zkt-1.1.2/zconf.h @@ -49,7 +49,7 @@ # define MONTH (DAY * 30) # define YEAR (DAY * 365) -# define SIG_VALID_DAYS (10) /* or 3 Weeks ? */ +# define SIG_VALID_DAYS (21) /* 3 Weeks */ # define SIG_VALIDITY (SIG_VALID_DAYS * DAYSEC) # define MAX_TTL ( 8 * HOURSEC) /* default value of maximum ttl time */ # define KEY_TTL ( 4 * HOURSEC) /* default value of KEY TTL */ @@ -60,35 +60,36 @@ #endif # define RESIGN_INT ((SIG_VALID_DAYS - (SIG_VALID_DAYS / 3)) * DAYSEC) -# define KSK_LIFETIME (1 * YEARSEC) -#if 0 +# define KSK_LIFETIME (2 * YEARSEC) +#if 1 # define ZSK_LIFETIME ((SIG_VALID_DAYS * 3) * DAYSEC) /* set to three times the sig validity */ #else -# if 0 -# define ZSK_LIFETIME ((MONTH * 3) * DAYSEC) /* set fixed to 3 month */ -# else -# define ZSK_LIFETIME (12 * WEEKSEC) /* set fixed to 3 month */ -# endif +# define ZSK_LIFETIME (12 * WEEKSEC) /* set fixed to 3 month */ #endif /* # define KSK_ALGO (DK_ALGO_RSASHA1) KSK_ALGO renamed to KEY_ALGO (v0.99) */ # define KEY_ALGO (DK_ALGO_RSASHA1) /* general KEY_ALGO used for both ksk and zsk */ # define ADDITIONAL_KEY_ALGO 0 # define KSK_BITS (1300) -# define KSK_RANDOM "/dev/urandom" /* was NULL before v0.94 */ +# define KSK_RANDOM NULL /* # define ZSK_ALGO (DK_ALGO_RSASHA1) ZSK_ALGO has to be the same as KSK, so this is no longer used (v0.99) */ # define ZSK_BITS (512) +# define ZSK_ALWAYS 0 # define ZSK_RANDOM "/dev/urandom" # define NSEC3 0 /* by default nsec3 is off */ # define SALTLEN 24 /* salt length in bits (resolution is 4 bits)*/ +#if 0 # define ZONEDIR "." +#else +# define ZONEDIR CONFIG_PATH +#endif # define RECURSIVE 0 # define PRINTTIME 1 # define PRINTAGE 0 # define LJUST 0 # define LSCOLORTERM NULL /* or "" */ -# define KEYSETDIR NULL /* keysets */ +# define KEYSETDIR ".." /* keysets */ # define LOGFILE "" # define LOGLEVEL "error" # define LOGDOMAINDIR "" @@ -162,6 +163,7 @@ typedef struct zconf { long z_life; /* int z_algo; no longer used; renamed to k2_algo (v0.99) */ int z_bits; + int z_always; /* always pre-publish zsk ? */ char *z_random; nsec3_t nsec3; /* 0 == off; 1 == on; 2 == on with optout */ int saltbits; diff --git a/contrib/zkt/zfparse.c b/contrib/zkt-1.1.2/zfparse.c similarity index 96% rename from contrib/zkt/zfparse.c rename to contrib/zkt-1.1.2/zfparse.c index 07d966ff80..2905691f33 100644 --- a/contrib/zkt/zfparse.c +++ b/contrib/zkt-1.1.2/zfparse.c @@ -40,19 +40,12 @@ # include /* for link(), unlink() */ # include # include -#if 0 -# include -# include -# include -# include -# include -# include -#endif #ifdef HAVE_CONFIG_H # include #endif # include "config_zkt.h" # include "zconf.h" +# include "misc.h" # include "log.h" # include "debug.h" #define extern @@ -184,7 +177,10 @@ int parsezonefile (const char *file, long *pminttl, long *pmaxttl, const char *k dbg_val4 ("parsezonefile (\"%s\", %ld, %ld, \"%s\")\n", file, *pminttl, *pmaxttl, keydbfile); if ( (infp = fopen (file, "r")) == NULL ) + { + error ("parsezonefile: couldn't open file \"%s\" for input\n", file); return -1; + } lnr = 0; keydbfilefound = 0; @@ -220,7 +216,11 @@ int parsezonefile (const char *file, long *pminttl, long *pmaxttl, const char *k if ( keydbfile && strcmp (fname, keydbfile) == 0 ) keydbfilefound = 1; else - keydbfilefound = parsezonefile (fname, pminttl, pmaxttl, keydbfile); + { + int ret = parsezonefile (fname, pminttl, pmaxttl, keydbfile); + if ( ret ) /* keydb found or read error ? */ + keydbfilefound = ret; + } } } else if ( !isspace (*p) ) /* label ? */ diff --git a/contrib/zkt/zfparse.h b/contrib/zkt-1.1.2/zfparse.h similarity index 100% rename from contrib/zkt/zfparse.h rename to contrib/zkt-1.1.2/zfparse.h diff --git a/contrib/zkt/zkt-conf.c b/contrib/zkt-1.1.2/zkt-conf.c similarity index 91% rename from contrib/zkt/zkt-conf.c rename to contrib/zkt-1.1.2/zkt-conf.c index 82a1c33e25..cc03201750 100644 --- a/contrib/zkt/zkt-conf.c +++ b/contrib/zkt-1.1.2/zkt-conf.c @@ -99,8 +99,9 @@ int main (int argc, char *argv[]) int c; int opt_index; int action; - int major; - int minor; + int major = 0; + int minor = 0; + int revision = 0; const char *file; const char *defconfname = NULL; const char *confname = NULL; @@ -115,7 +116,7 @@ int main (int argc, char *argv[]) view = getnameappendix (progname, "zkt-conf"); defconfname = getdefconfname (view); - dbg_val0 ("Load built in config \"%s\"\n"); + dbg_val0 ("Load built in config\n"); config = loadconfig ("", (zconf_t *)NULL); /* load built in config */ if ( fileexist (defconfname) ) /* load default config file */ @@ -130,7 +131,18 @@ int main (int argc, char *argv[]) opterr = 0; opt_index = 0; action = 0; - setconfigversion (100); + + /* set current config version based on ZKT version */ + switch ( sscanf (ZKT_VERSION, "%d.%d.%d", &major, &minor, &revision) ) + { + case 3: major = (major * 100) + (minor * 10) + revision; break; + case 2: major = (major * 100) + (minor * 10); break; + case 1: major = major * 100; break; + default: + usage ("illegal release number"); + } + setconfigversion (major); + #if defined(HAVE_GETOPT_LONG) && HAVE_GETOPT_LONG while ( (c = getopt_long (argc, argv, short_options, long_options, &opt_index)) != -1 ) #else @@ -152,10 +164,11 @@ int main (int argc, char *argv[]) config = loadconfig_fromstr (optarg, config); break; case 'C': - switch ( sscanf (optarg, "%d.%d", &major, &minor) ) + switch ( sscanf (optarg, "%d.%d.%d", &major, &minor, &revision) ) { - case 2: major = major * 100 + minor; - case 1: break; + case 3: major = (major * 100) + (minor * 10) + revision; break; + case 2: major = (major * 100) + (minor * 10); break; + case 1: major = major * 100; break; default: usage ("illegal release number"); } @@ -277,11 +290,11 @@ int main (int argc, char *argv[]) } if ( minttl < (10 * MINSEC) ) - fprintf (stderr, "Min_TTL of %s (%ld seconds) is too low to use it in a signed zone (see RFC4641)\n", + fprintf (stderr, "MinimumTTL of %s (%ld seconds) is too low to use it in a signed zone (see RFC4641)\n", timeint2str (minttl), minttl); else - fprintf (stderr, "Min_TTL:\t%s\t# (%ld seconds)\n", timeint2str (minttl), minttl); - fprintf (stdout, "Max_TTL:\t%s\t# (%ld seconds)\n", timeint2str (maxttl), maxttl); + fprintf (stderr, "MinimumTTL:\t%s\t# (%ld seconds)\n", timeint2str (minttl), minttl); + fprintf (stdout, "MaximumTTL:\t%s\t# (%ld seconds)\n", timeint2str (maxttl), maxttl); if ( writeflag ) { @@ -292,7 +305,7 @@ int main (int argc, char *argv[]) dbg_val ("Load local config file \"%s\"\n", LOCALCONF_FILE); config = loadconfig (LOCALCONF_FILE, config); } - setconfigpar (config, "Max_TTL", &maxttl); + setconfigpar (config, "MaximumTTL", &maxttl); printconfigdiff (confname, refconfig, config); } } diff --git a/contrib/zkt/zkt-keyman.c b/contrib/zkt-1.1.2/zkt-keyman.c similarity index 100% rename from contrib/zkt/zkt-keyman.c rename to contrib/zkt-1.1.2/zkt-keyman.c diff --git a/contrib/zkt/zkt-ls.c b/contrib/zkt-1.1.2/zkt-ls.c similarity index 94% rename from contrib/zkt/zkt-ls.c rename to contrib/zkt-1.1.2/zkt-ls.c index 67e2ce4873..e9ac692bdb 100644 --- a/contrib/zkt/zkt-ls.c +++ b/contrib/zkt-1.1.2/zkt-ls.c @@ -85,18 +85,20 @@ int subdomain_before_parent = 1; static int dirflag = 0; static int recflag = RECURSIVE; static int trustedkeyflag = 0; +static int managedkeyflag = 0; static const char *view = ""; static const char *term = NULL; #if defined(COLOR_MODE) && COLOR_MODE -# define short_options ":HKTV:afC::c:O:dhkLl:prstez" +# define short_options ":HKTMV:afC::c:O:dhkLl:prstez" #else -# define short_options ":HKTV:af:c:O:dhkLl:prstez" +# define short_options ":HKTMV:af:c:O:dhkLl:prstez" #endif #if defined(HAVE_GETOPT_LONG) && HAVE_GETOPT_LONG static struct option long_options[] = { {"list-dnskeys", no_argument, NULL, 'K'}, {"list-trustedkeys", no_argument, NULL, 'T'}, + {"list-managedkeys", no_argument, NULL, 'M'}, {"ksk", no_argument, NULL, 'k'}, {"zsk", no_argument, NULL, 'z'}, {"age", no_argument, NULL, 'a'}, @@ -182,6 +184,12 @@ int main (int argc, char *argv[]) term = getenv ("TERM"); break; #endif + case 'M': + managedkeyflag = 1; + subdomain_before_parent = 0; + zskflag = pathflag = 0; + action = c; + break; case 'T': trustedkeyflag = 1; subdomain_before_parent = 0; @@ -300,6 +308,9 @@ int main (int argc, char *argv[]) case 'T': zkt_list_trustedkeys (data); break; + case 'M': + zkt_list_managedkeys (data); + break; default: zkt_list_keys (data); } @@ -333,13 +344,17 @@ static void usage (char *mesg, zconf_t *cp) sopt_usage ("\tusage: %s -T [-dhrz] [-c config] [file|dir ...]\n", progname); lopt_usage ("\tusage: %s --list-trustedkeys [-dhzr] [-c config] [file|dir ...]\n", progname); fprintf (stderr, "\n"); + fprintf (stderr, "List managed keys (output is suitable for managed-keys section)\n"); + sopt_usage ("\tusage: %s -M [-dhrz] [-c config] [file|dir ...]\n", progname); + lopt_usage ("\tusage: %s --list-managedkeys [-dhzr] [-c config] [file|dir ...]\n", progname); + fprintf (stderr, "\n"); fprintf (stderr, "General options \n"); fprintf (stderr, "\t-c file%s", loptstr (", --config=file\n", "")); fprintf (stderr, "\t\t read config from instead of %s\n", CONFIG_FILE); fprintf (stderr, "\t-O optstr%s", loptstr (", --config-option=\"optstr\"\n", "")); fprintf (stderr, "\t\t read config options from commandline\n"); - fprintf (stderr, "\t-h%s\t no headline or trusted-key section header/trailer in -T mode\n", loptstr (", --nohead", "\t")); + fprintf (stderr, "\t-h%s\t no headline or trusted/managed-key section header/trailer in -T/-M mode\n", loptstr (", --nohead", "\t")); fprintf (stderr, "\t-d%s\t skip directory arguments\n", loptstr (", --directory", "\t")); fprintf (stderr, "\t-L%s\t print the domain name left justified (default: %s)\n", loptstr (", --leftjust", "\t"), ljustflag ? "on": "off"); fprintf (stderr, "\t-l list%s", loptstr (", --label=\"list\"\n\t", "")); diff --git a/contrib/zkt/zkt-signer.c b/contrib/zkt-1.1.2/zkt-signer.c similarity index 99% rename from contrib/zkt/zkt-signer.c rename to contrib/zkt-1.1.2/zkt-signer.c index 7a20ae3469..5a2a285b34 100644 --- a/contrib/zkt/zkt-signer.c +++ b/contrib/zkt-1.1.2/zkt-signer.c @@ -254,13 +254,10 @@ int main (int argc, char *const argv[]) if ( lg_open (progname, config->syslogfacility, config->sysloglevel, config->zonedir, logfile, config->loglevel) < -1 ) fatal ("Couldn't open logfile %s in dir %s\n", logfile, config->zonedir); -#if defined(DBG) && DBG - for ( zp = zonelist; zp; zp = zp->next ) - zone_print ("in main: ", zp); -#endif lg_args (LG_NOTICE, argc, argv); - /* 1.0rc1: If the ttl for dynamic zones is not known or if it is 0, use sig valid time for this */ + /* 1.0rc1: If the ttl is 0 or not known because of dynamic zone signing, ... */ + /* ... use sig valid time for this */ if ( config->max_ttl <= 0 || dynamic_zone ) { // config = dupconfig (config); @@ -316,10 +313,14 @@ int main (int argc, char *const argv[]) free (dir); } - /* none of the above: read current directory tree */ + /* none of the above: read default directory tree */ if ( zonelist == NULL ) parsedir (config->zonedir, &zonelist, config); +#if defined(DBG) && DBG + for ( zp = zonelist; zp; zp = zp->next ) + zone_print ("in main: ", zp); +#endif for ( zp = zonelist; zp; zp = zp->next ) if ( in_strarr (zp->zone, &argv[optind], argc - optind) ) { @@ -550,7 +551,7 @@ static int dosigning (zone_t *zonelist, zone_t *zp) if ( force ) snprintf (mesg, sizeof(mesg), "Option -f"); else if ( newkey ) - snprintf (mesg, sizeof(mesg), "Modfied zone key set"); + snprintf (mesg, sizeof(mesg), "Modified zone key set"); else if ( newkeysetfile ) snprintf (mesg, sizeof(mesg), "Modified KSK in delegated domain"); else if ( file_mtime (path) > zfilesig_time ) @@ -626,7 +627,7 @@ static int dosigning (zone_t *zonelist, zone_t *zp) } /* at last, sign the zone file */ - if ( err > 0 ) + if ( err >= 0 ) { time_t timer; diff --git a/contrib/zkt/zkt-soaserial.c b/contrib/zkt-1.1.2/zkt-soaserial.c similarity index 100% rename from contrib/zkt/zkt-soaserial.c rename to contrib/zkt-1.1.2/zkt-soaserial.c diff --git a/contrib/zkt/zkt.c b/contrib/zkt-1.1.2/zkt.c similarity index 87% rename from contrib/zkt/zkt.c rename to contrib/zkt-1.1.2/zkt.c index 511c08c535..6b6ce69e73 100644 --- a/contrib/zkt/zkt.c +++ b/contrib/zkt-1.1.2/zkt.c @@ -244,6 +244,43 @@ static void list_trustedkey (const dki_t **nodep, const VISIT which, int depth) } } } +static void list_managedkey (const dki_t **nodep, const VISIT which, int depth) +{ + const dki_t *dkp; + + if ( nodep == NULL ) + return; + + dkp = *nodep; + if ( which == INORDER || which == LEAF ) + { +// fprintf (stderr, "list_trustedkey order=%d(pre=0,in=1,post=2,leaf=3) depth=%d %s\n", which, depth, dkp->name); + if ( labellist && !isinlist (dkp->name, labellist) ) + return; + + if ( parent == NULL || !issubdomain (dkp->name, parent->name) ) + { + const dki_t *dkp_head = NULL; + const dki_t *standby = NULL; + + parent = dkp; + + dkp_head = dkp; + /* look for a standby key */ + for ( dkp = dkp_head; dkp; dkp = dkp->next ) + if ( dki_isksk (dkp) && dki_ispublished (dkp) ) + standby = dkp; + + if ( !standby ) /* no standby key found ? */ + return; + + /* print all non-standby ksk */ + for ( dkp = dkp_head; dkp; dkp = dkp->next ) + if ( dki_isksk (dkp) && dkp != standby ) + dki_prt_managedkey (dkp, stdout); + } + } +} # endif #endif @@ -268,6 +305,27 @@ void zkt_list_trustedkeys (const dki_t *data) printf ("};\n"); } +void zkt_list_managedkeys (const dki_t *data) +{ + + /* print headline if list is not empty */ + if ( data && headerflag ) + printf ("managed-keys {\n"); + +#if defined(USE_TREE) && USE_TREE + twalk (data, list_managedkey); +#else + for ( dkp = data; dkp; dkp = dkp->next ) /* loop through list */ + if ( (dki_isksk (dkp) || zskflag) && + (labellist == NULL || isinlist (dkp->name, labellist)) ) + dki_prt_managedkey (dkp, stdout); +#endif + + /* print end of trusted-key section */ + if ( data && headerflag ) + printf ("};\n"); +} + #if defined(USE_TREE) && USE_TREE static void list_dnskey (const dki_t **nodep, const VISIT which, int depth) { diff --git a/contrib/zkt/zkt.h b/contrib/zkt-1.1.2/zkt.h similarity index 97% rename from contrib/zkt/zkt.h rename to contrib/zkt-1.1.2/zkt.h index 2f3398d5fb..01460527ee 100644 --- a/contrib/zkt/zkt.h +++ b/contrib/zkt-1.1.2/zkt.h @@ -40,6 +40,7 @@ extern const dki_t *zkt_search (const dki_t *data, int searchtag, const char *keyname); extern void zkt_list_keys (const dki_t *data); extern void zkt_list_trustedkeys (const dki_t *data); +extern void zkt_list_managedkeys (const dki_t *data); extern void zkt_list_dnskeys (const dki_t *data); extern void zkt_setkeylifetime (dki_t *data); diff --git a/contrib/zkt/zone.c b/contrib/zkt-1.1.2/zone.c similarity index 100% rename from contrib/zkt/zone.c rename to contrib/zkt-1.1.2/zone.c diff --git a/contrib/zkt/zone.h b/contrib/zkt-1.1.2/zone.h similarity index 100% rename from contrib/zkt/zone.h rename to contrib/zkt-1.1.2/zone.h diff --git a/contrib/zkt/dnssec-zkt.c b/contrib/zkt/dnssec-zkt.c deleted file mode 100644 index 744a6f865f..0000000000 --- a/contrib/zkt/dnssec-zkt.c +++ /dev/null @@ -1,816 +0,0 @@ -/***************************************************************** -** -** @(#) dnssec-zkt.c (c) Jan 2005 Holger Zuleger hznet.de -** -** Secure DNS zone key tool -** A wrapper command around the BIND dnssec-keygen utility -** -** Copyright (c) 2005 - 2008, Holger Zuleger HZnet. 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 Holger Zuleger HZnet 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. -** -*****************************************************************/ - -# include -# include /* abort(), exit(), ... */ -# include -# include -# include -# include -# include - -#ifdef HAVE_CONFIG_H -# include -#endif -# include "config_zkt.h" -#if defined(HAVE_GETOPT_LONG) && HAVE_GETOPT_LONG -# include -#endif - -# include "debug.h" -# include "misc.h" -# include "strlist.h" -# include "zconf.h" -# include "dki.h" -# include "zkt.h" - -extern int optopt; -extern int opterr; -extern int optind; -extern char *optarg; -const char *progname; - -char *labellist = NULL; - -int headerflag = 1; -int ageflag = 0; -int lifetime = 0; -int lifetimeflag = 0; -int timeflag = 1; -int exptimeflag = 0; -int pathflag = 0; -int kskflag = 1; -int zskflag = 1; -int ljustflag = 0; - -static int dirflag = 0; -static int recflag = RECURSIVE; -static int trustedkeyflag = 0; -static char *kskdomain = ""; -static const char *view = ""; - -# define short_options ":0:1:2:3:9A:C:D:P:S:R:HKTs:ZV:afF:c:O:dhkLl:prtez" -#if defined(HAVE_GETOPT_LONG) && HAVE_GETOPT_LONG -static struct option long_options[] = { - {"ksk-rollover", no_argument, NULL, '9'}, - {"ksk-status", required_argument, NULL, '0'}, - {"ksk-roll-status", required_argument, NULL, '0'}, - {"ksk-newkey", required_argument, NULL, '1'}, - {"ksk-publish", required_argument, NULL, '2'}, - {"ksk-delkey", required_argument, NULL, '3'}, - {"ksk-roll-phase1", required_argument, NULL, '1'}, - {"ksk-roll-phase2", required_argument, NULL, '2'}, - {"ksk-roll-phase3", required_argument, NULL, '3'}, - {"list-dnskeys", no_argument, NULL, 'K'}, - {"list-trustedkeys", no_argument, NULL, 'T'}, - {"ksk", no_argument, NULL, 'k'}, - {"zsk", no_argument, NULL, 'z'}, - {"age", no_argument, NULL, 'a'}, - {"lifetime", no_argument, NULL, 'f'}, - {"time", no_argument, NULL, 't'}, - {"expire", no_argument, NULL, 'e'}, - {"recursive", no_argument, NULL, 'r'}, - {"zone-config", no_argument, NULL, 'Z'}, - {"leftjust", no_argument, NULL, 'L'}, - {"path", no_argument, NULL, 'p'}, - {"nohead", no_argument, NULL, 'h'}, - {"directory", no_argument, NULL, 'd'}, - {"config", required_argument, NULL, 'c'}, - {"option", required_argument, NULL, 'O'}, - {"config-option", required_argument, NULL, 'O'}, - {"published", required_argument, NULL, 'P'}, - {"standby", required_argument, NULL, 'S'}, - {"active", required_argument, NULL, 'A'}, - {"depreciated", required_argument, NULL, 'D'}, - {"create", required_argument, NULL, 'C'}, - {"revoke", required_argument, NULL, 'R'}, - {"remove", required_argument, NULL, 19 }, - {"destroy", required_argument, NULL, 20 }, - {"setlifetime", required_argument, NULL, 'F' }, - {"view", required_argument, NULL, 'V' }, - {"help", no_argument, NULL, 'H'}, - {0, 0, 0, 0} -}; -#endif - -static int parsedirectory (const char *dir, dki_t **listp); -static void parsefile (const char *file, dki_t **listp); -static void createkey (const char *keyname, const dki_t *list, const zconf_t *conf); -static void ksk_roll (const char *keyname, int phase, const dki_t *list, const zconf_t *conf); -static int create_parent_file (const char *fname, int phase, int ttl, const dki_t *dkp); -static void usage (char *mesg, zconf_t *cp); -static const char *parsetag (const char *str, int *tagp); - -static void setglobalflags (zconf_t *config) -{ - recflag = config->recursive; - ageflag = config->printage; - timeflag = config->printtime; - ljustflag = config->ljust; -} - -int main (int argc, char *argv[]) -{ - dki_t *data = NULL; - dki_t *dkp; - int c; - int opt_index; - int action; - const char *file; - const char *defconfname = NULL; - char *p; - char str[254+1]; - const char *keyname = NULL; - int searchtag; - zconf_t *config; - - progname = *argv; - if ( (p = strrchr (progname, '/')) ) - progname = ++p; - view = getnameappendix (progname, "dnssec-zkt"); - - defconfname = getdefconfname (view); - config = loadconfig ("", (zconf_t *)NULL); /* load built in config */ - if ( fileexist (defconfname) ) /* load default config file */ - config = loadconfig (defconfname, config); - if ( config == NULL ) - fatal ("Out of memory\n"); - setglobalflags (config); - - opterr = 0; - opt_index = 0; - action = 0; -#if defined(HAVE_GETOPT_LONG) && HAVE_GETOPT_LONG - while ( (c = getopt_long (argc, argv, short_options, long_options, &opt_index)) != -1 ) -#else - while ( (c = getopt (argc, argv, short_options)) != -1 ) -#endif - { - switch ( c ) - { - case '9': /* ksk rollover help */ - ksk_roll ("help", c - '0', NULL, NULL); - exit (1); - case '1': /* ksk rollover: create new key */ - case '2': /* ksk rollover: publish DS */ - case '3': /* ksk rollover: delete old key */ - case '0': /* ksk rollover: show current status */ - action = c; - if ( !optarg ) - usage ("ksk rollover requires an domain argument", config); - kskdomain = domain_canonicdup (optarg); - break; - case 'T': - trustedkeyflag = 1; - zskflag = pathflag = 0; - /* fall through */ - case 'H': - case 'K': - case 'Z': - action = c; - break; - case 'C': - pathflag = !pathflag; - /* fall through */ - case 'P': - case 'S': - case 'A': - case 'D': - case 'R': - case 's': - case 19: - case 20: - if ( (keyname = parsetag (optarg, &searchtag)) != NULL ) - keyname = domain_canonicdup (keyname); - action = c; - break; - case 'a': /* age */ - ageflag = !ageflag; - break; - case 'f': /* key lifetime */ - lifetimeflag = !lifetimeflag; - break; - case 'F': /* set key lifetime */ - lifetime = atoi (optarg); - lifetimeflag = 1; /* set some flags for more informative output */ - exptimeflag = 1; - timeflag = 1; - action = c; - break; - case 'V': /* view name */ - view = optarg; - defconfname = getdefconfname (view); - if ( fileexist (defconfname) ) /* load default config file */ - config = loadconfig (defconfname, config); - if ( config == NULL ) - fatal ("Out of memory\n"); - setglobalflags (config); - break; - case 'c': - config = loadconfig (optarg, config); - setglobalflags (config); - checkconfig (config); - break; - case 'O': /* read option from commandline */ - config = loadconfig_fromstr (optarg, config); - setglobalflags (config); - checkconfig (config); - break; - case 'd': /* ignore directory arg */ - dirflag = 1; - break; - case 'h': /* print no headline */ - headerflag = 0; - break; - case 'k': /* ksk only */ - zskflag = 0; - break; - case 'L': /* ljust */ - ljustflag = !ljustflag; - break; - case 'l': /* label list */ - labellist = prepstrlist (optarg, LISTDELIM); - if ( labellist == NULL ) - fatal ("Out of memory\n"); - break; - case 'p': /* print path */ - pathflag = 1; - break; - case 'r': /* switch recursive flag */ - recflag = !recflag; - break; - case 't': /* time */ - timeflag = !timeflag; - break; - case 'e': /* expire time */ - exptimeflag = !exptimeflag; - break; - case 'z': /* zsk only */ - kskflag = 0; - break; - case ':': - snprintf (str, sizeof(str), "option \"-%c\" requires an argument.\n", - optopt); - usage (str, config); - break; - case '?': - if ( isprint (optopt) ) - snprintf (str, sizeof(str), "Unknown option \"-%c\".\n", - optopt); - else - snprintf (str, sizeof (str), "Unknown option char \\x%x.\n", - optopt); - usage (str, config); - break; - default: - abort(); - } - } - - /* it's better to do this before we read the whole directory tree */ - if ( action == 'Z' ) - { - fprintf (stderr, "The use of -Z is deprecated. Please use zkt-conf instead\n"); - printconfig ("stdout", config); - return 0; - } - - if ( kskflag == 0 && zskflag == 0 ) - kskflag = zskflag = 1; - - c = optind; - do { - if ( c >= argc ) /* no args left */ - file = config->zonedir; /* use default directory */ - else - file = argv[c++]; - - if ( is_directory (file) ) - parsedirectory (file, &data); - else - parsefile (file, &data); - - } while ( c < argc ); /* for all arguments */ - - switch ( action ) - { - case 'H': - usage ("", config); - case 'C': - createkey (keyname, data, config); - break; - case 'P': - case 'S': - case 'A': - case 'D': - if ( (dkp = (dki_t*)zkt_search (data, searchtag, keyname)) == NULL ) - fatal ("Key with tag %u not found\n", searchtag); - else if ( dkp == (void *) 01 ) - fatal ("Key with tag %u found multiple times\n", searchtag); - if ( (c = dki_setstatus_preservetime (dkp, action)) != 0 ) - fatal ("Couldn't change status of key %u: %d\n", searchtag, c); - break; - case 19: /* remove (rename) key file */ - if ( (dkp = (dki_t *)zkt_search (data, searchtag, keyname)) == NULL ) - fatal ("Key with tag %u not found\n", searchtag); - else if ( dkp == (void *) 01 ) - fatal ("Key with tag %u found multiple times\n", searchtag); - dki_remove (dkp); - break; - case 20: /* destroy the key (remove the files!) */ - if ( (dkp = (dki_t *)zkt_search (data, searchtag, keyname)) == NULL ) - fatal ("Key with tag %u not found\n", searchtag); - else if ( dkp == (void *) 01 ) - fatal ("Key with tag %u found multiple times\n", searchtag); - dki_destroy (dkp); - break; - case 'R': - if ( (dkp = (dki_t *)zkt_search (data, searchtag, keyname)) == NULL ) - fatal ("Key with tag %u not found\n", searchtag); - else if ( dkp == (void *) 01 ) - fatal ("Key with tag %u found multiple times\n", searchtag); - if ( (c = dki_setstatus (dkp, action)) != 0 ) - fatal ("Couldn't change status of key %u: %d\n", searchtag, c); - break; - case 's': - if ( (dkp = (dki_t *)zkt_search (data, searchtag, keyname)) == NULL ) - fatal ("Key with tag %u not found\n", searchtag); - else if ( dkp == (void *) 01 ) - fatal ("Key with tag %u found multiple times\n", searchtag); - dki_prt_dnskey (dkp, stdout); - break; - case 'K': - zkt_list_dnskeys (data); - break; - case 'T': - zkt_list_trustedkeys (data); - break; - case '1': /* ksk rollover new key */ - case '2': /* ksk rollover publish DS */ - case '3': /* ksk rollover delete old key */ - case '0': /* ksk rollover status */ - ksk_roll (kskdomain, action - '0', data, config); - break; - case 'F': - zkt_setkeylifetime (data); - /* fall through */ - default: - zkt_list_keys (data); - } - - return 0; -} - -# define sopt_usage(mesg, value) fprintf (stderr, mesg, value) -#if defined(HAVE_GETOPT_LONG) && HAVE_GETOPT_LONG -# define lopt_usage(mesg, value) fprintf (stderr, mesg, value) -# define loptstr(lstr, sstr) lstr -#else -# define lopt_usage(mesg, value) -# define loptstr(lstr, sstr) sstr -#endif -static void usage (char *mesg, zconf_t *cp) -{ - fprintf (stderr, "Secure DNS Zone Key Tool %s\n", ZKT_VERSION); - fprintf (stderr, "\n"); - fprintf (stderr, "Show zone config parameter as %s file\n", LOCALCONF_FILE); - sopt_usage ("\tusage: %s -Z\n", progname); - lopt_usage ("\tusage: %s --zone-config\n", progname); - fprintf (stderr, "\n"); - fprintf (stderr, "List keys in current or given directory (-r for recursive mode)\n"); - sopt_usage ("\tusage: %s [-dhatkzpr] [-c config] [file|dir ...]\n", progname); - fprintf (stderr, "\n"); - fprintf (stderr, "List public part of keys in DNSKEY RR format\n"); - sopt_usage ("\tusage: %s -K [-dhkzr] [-c config] [file|dir ...]\n", progname); - lopt_usage ("\tusage: %s --list-dnskeys [-dhkzr] [-c config] [file|dir ...]\n", progname); - fprintf (stderr, "\n"); - fprintf (stderr, "List keys (output is suitable for trusted-keys section)\n"); - sopt_usage ("\tusage: %s -T [-dhzr] [-c config] [file|dir ...]\n", progname); - lopt_usage ("\tusage: %s --list-trustedkeys [-dhzr] [-c config] [file|dir ...]\n", progname); - fprintf (stderr, "\n"); - fprintf (stderr, "Create a new key \n"); - sopt_usage ("\tusage: %s -C [-k] [-dpr] [-c config] [dir ...]\n", progname); - lopt_usage ("\tusage: %s --create= [-k] [-dpr] [-c config] [dir ...]\n", progname); - fprintf (stderr, "\t\tKSK (use -k): %s %d bits\n", dki_algo2str (cp->k_algo), cp->k_bits); - fprintf (stderr, "\t\tZSK (default): %s %d bits\n", dki_algo2str (cp->k_algo), cp->z_bits); - fprintf (stderr, "\n"); - fprintf (stderr, "Change key status of specified key to published, active or depreciated\n"); - fprintf (stderr, "\t( := tag | tag:name) \n"); - sopt_usage ("\tusage: %s -P|-A|-D [-dr] [-c config] [dir ...]\n", progname); - lopt_usage ("\tusage: %s --published= [-dr] [-c config] [dir ...]\n", progname); - lopt_usage ("\tusage: %s --active= [-dr] [-c config] [dir ...]\n", progname); - lopt_usage ("\tusage: %s --depreciated= [-dr] [-c config] [dir ...]\n", progname); - fprintf (stderr, "\n"); - fprintf (stderr, "Revoke specified key ( := tag | tag:name) \n"); - sopt_usage ("\tusage: %s -R [-dr] [-c config] [dir ...]\n", progname); - lopt_usage ("\tusage: %s --revoke= [-dr] [-c config] [dir ...]\n", progname); - fprintf (stderr, "\n"); - fprintf (stderr, "Remove (rename) or destroy (delete) specified key ( := tag | tag:name) \n"); - lopt_usage ("\tusage: %s --remove= [-dr] [-c config] [dir ...]\n", progname); - lopt_usage ("\tusage: %s --destroy= [-dr] [-c config] [dir ...]\n", progname); - fprintf (stderr, "\n"); - fprintf (stderr, "Initiate a semi-automated KSK rollover"); - fprintf (stderr, "('%s -9%s' prints out a short description)\n", progname, loptstr ("|--ksk-rollover", "")); - sopt_usage ("\tusage: %s {-1} do.ma.in.\n", progname); - lopt_usage ("\tusage: %s {--ksk-roll-phase1|--ksk-newkey} do.ma.in.\n", progname); - sopt_usage ("\tusage: %s {-2} do.ma.in.\n", progname); - lopt_usage ("\tusage: %s {--ksk-roll-phase2|--ksk-publish} do.ma.in.\n", progname); - sopt_usage ("\tusage: %s {-3} do.ma.in.\n", progname); - lopt_usage ("\tusage: %s {--ksk-roll-phase3|--ksk-delkey} do.ma.in.\n", progname); - sopt_usage ("\tusage: %s {-0} do.ma.in.\n", progname); - lopt_usage ("\tusage: %s {--ksk-roll-status|--ksk-status} do.ma.in.\n", progname); - fprintf (stderr, "\n"); - - fprintf (stderr, "\n"); - fprintf (stderr, "General options \n"); - fprintf (stderr, "\t-c file%s", loptstr (", --config=file\n", "")); - fprintf (stderr, "\t\t read config from instead of %s\n", CONFIG_FILE); - fprintf (stderr, "\t-O optstr%s", loptstr (", --config-option=\"optstr\"\n", "")); - fprintf (stderr, "\t\t read config options from commandline\n"); - fprintf (stderr, "\t-h%s\t no headline or trusted-key section header/trailer in -T mode\n", loptstr (", --nohead", "\t")); - fprintf (stderr, "\t-d%s\t skip directory arguments\n", loptstr (", --directory", "\t")); - fprintf (stderr, "\t-L%s\t print the domain name left justified (default: %s)\n", loptstr (", --leftjust", "\t"), ljustflag ? "on": "off"); - fprintf (stderr, "\t-l list\t\t print out only zone keys out of the given domain list\n"); - fprintf (stderr, "\t-p%s\t show path of keyfile / create key in current directory\n", loptstr (", --path", "\t")); - fprintf (stderr, "\t-r%s\t recursive mode on/off (default: %s)\n", loptstr(", --recursive", "\t"), recflag ? "on": "off"); - fprintf (stderr, "\t-a%s\t print age of key (default: %s)\n", loptstr (", --age", "\t"), ageflag ? "on": "off"); - fprintf (stderr, "\t-t%s\t print key generation time (default: %s)\n", loptstr (", --time", "\t"), - timeflag ? "on": "off"); - fprintf (stderr, "\t-e%s\t print key expiration time\n", loptstr (", --expire", "\t")); - fprintf (stderr, "\t-f%s\t print key lifetime\n", loptstr (", --lifetime", "\t")); - fprintf (stderr, "\t-F days%s=days\t set key lifetime\n", loptstr (", --setlifetime", "\t")); - fprintf (stderr, "\t-k%s\t key signing keys only\n", loptstr (", --ksk", "\t")); - fprintf (stderr, "\t-z%s\t zone signing keys only\n", loptstr (", --zsk", "\t")); - if ( mesg && *mesg ) - fprintf (stderr, "%s\n", mesg); - exit (1); -} - -static void createkey (const char *keyname, const dki_t *list, const zconf_t *conf) -{ - const char *dir = ""; - dki_t *dkp; - - if ( keyname == NULL || *keyname == '\0' ) - fatal ("Create key: no keyname!"); - - dbg_val2 ("createkey: keyname %s, pathflag = %d\n", keyname, pathflag); - /* search for already existent key to get the directory name */ - if ( pathflag && (dkp = (dki_t *)zkt_search (list, 0, keyname)) != NULL ) - { - char path[MAX_PATHSIZE+1]; - zconf_t localconf; - - dir = dkp->dname; - pathname (path, sizeof (path), dir, LOCALCONF_FILE, NULL); - if ( fileexist (path) ) /* load local config file */ - { - dbg_val ("Load local config file \"%s\"\n", path); - memcpy (&localconf, conf, sizeof (zconf_t)); - conf = loadconfig (path, &localconf); - } - } - - if ( zskflag ) - dkp = dki_new (dir, keyname, DKI_ZSK, conf->k_algo, conf->z_bits, conf->z_random, conf->z_life / DAYSEC); - else - dkp = dki_new (dir, keyname, DKI_KSK, conf->k_algo, conf->k_bits, conf->k_random, conf->k_life / DAYSEC); - if ( dkp == NULL ) - fatal ("Can't create key %s: %s!\n", keyname, dki_geterrstr ()); - - /* create a new key always in state published, which means "standby" for ksk */ - dki_setstatus (dkp, DKI_PUB); -} - -static int get_parent_phase (const char *file) -{ - FILE *fp; - int phase; - - if ( (fp = fopen (file, "r")) == NULL ) - return -1; - - phase = 0; - if ( fscanf (fp, "; KSK rollover phase%d", &phase) != 1 ) - phase = 0; - - fclose (fp); - return phase; -} - -static void ksk_roll (const char *keyname, int phase, const dki_t *list, const zconf_t *conf) -{ - char path[MAX_PATHSIZE+1]; - zconf_t localconf; - const char *dir; - dki_t *keylist; - dki_t *dkp; - dki_t *standby; - int parent_exist; - int parent_age; - int parent_phase; - int parent_propagation; - int key_ttl; - int ksk; - - if ( phase == 9 ) /* usage */ - { - fprintf (stderr, "A KSK rollover requires three consecutive steps:\n"); - fprintf (stderr, "\n"); - fprintf (stderr, "-1%s", loptstr ("|--ksk-roll-phase1 (--ksk-newkey)\n", "")); - fprintf (stderr, "\t Create a new KSK.\n"); - fprintf (stderr, "\t This step also creates a parent- file which contains only\n"); - fprintf (stderr, "\t the _old_ key. This file will be copied in hierarchical mode\n"); - fprintf (stderr, "\t by dnssec-signer to the parent directory as keyset- file.\n"); - fprintf (stderr, "\t Wait until the new keyset is propagated, before going to the next step.\n"); - fprintf (stderr, "\n"); - fprintf (stderr, "-2%s", loptstr ("|--ksk-roll-phase2 (--ksk-publish)\n", "")); - fprintf (stderr, "\t This step creates a parent- file with the _new_ key only.\n"); - fprintf (stderr, "\t Please send this file immediately to the parent (In hierarchical\n"); - fprintf (stderr, "\t mode this will be done automatically by the dnssec-signer command).\n"); - fprintf (stderr, "\t Then wait until the new DS is generated by the parent and propagated\n"); - fprintf (stderr, "\t to all the parent name server, plus the old DS TTL before going to step three.\n"); - fprintf (stderr, "\n"); - fprintf (stderr, "-3%s", loptstr ("|--ksk-roll-phase3 (--ksk-delkey)\n", "")); - fprintf (stderr, "\t Remove (rename) the old KSK and the parent- file.\n"); - fprintf (stderr, "\t You have to manually delete the old KSK (look at file names beginning\n"); - fprintf (stderr, "\t with an lower 'k').\n"); - fprintf (stderr, "\n"); - fprintf (stderr, "-0%s", loptstr ("|--ksk-roll-stat (--ksk-status)\n", "")); - fprintf (stderr, "\t Show the current KSK rollover state of a domain.\n"); - - fprintf (stderr, "\n"); - - return; - } - - if ( keyname == NULL || *keyname == '\0' ) - fatal ("ksk rollover: no domain!"); - - dbg_val2 ("ksk_roll: keyname %s, phase = %d\n", keyname, phase); - - /* search for already existent key to get the directory name */ - if ( (keylist = (dki_t *)zkt_search (list, 0, keyname)) == NULL ) - fatal ("ksk rollover: domain %s not found!\n", keyname); - dkp = keylist; - - /* try to read local config file */ - dir = dkp->dname; - pathname (path, sizeof (path), dir, LOCALCONF_FILE, NULL); - if ( fileexist (path) ) /* load local config file */ - { - dbg_val ("Load local config file \"%s\"\n", path); - memcpy (&localconf, conf, sizeof (zconf_t)); - conf = loadconfig (path, &localconf); - } - key_ttl = conf->key_ttl; - - /* check if parent-file already exist */ - pathname (path, sizeof (path), dir, "parent-", keyname); - parent_phase = parent_age = 0; - if ( (parent_exist = fileexist (path)) != 0 ) - { - parent_phase = get_parent_phase (path); - parent_age = file_age (path); - } - // parent_propagation = 2 * DAYSEC; - parent_propagation = 5 * MINSEC; - - ksk = 0; /* count active(!) key signing keys */ - standby = NULL; /* find standby key if available */ - for ( dkp = keylist; dkp; dkp = dkp->next ) - if ( dki_isksk (dkp) ) - { - if ( dki_status (dkp) == DKI_ACT ) - ksk++; - else if ( dki_status (dkp) == DKI_PUB ) - standby = dkp; - } - - switch ( phase ) - { - case 0: /* print status (debug) */ - fprintf (stdout, "ksk_rollover:\n"); - fprintf (stdout, "\t domain = %s\n", keyname); - fprintf (stdout, "\t phase = %d\n", parent_phase); - fprintf (stdout, "\t parent_file %s %s\n", path, parent_exist ? "exist": "not exist"); - if ( parent_exist ) - fprintf (stdout, "\t age of parent_file %d %s\n", parent_age, str_delspace (age2str (parent_age))); - fprintf (stdout, "\t # of active key signing keys %d\n", ksk); - fprintf (stdout, "\t parent_propagation %d %s\n", parent_propagation, str_delspace (age2str (parent_propagation))); - fprintf (stdout, "\t keys ttl %d %s\n", key_ttl, age2str (key_ttl)); - - for ( dkp = keylist; dkp; dkp = dkp->next ) - { - /* TODO: Nur zum testen */ - dki_prt_dnskey (dkp, stdout); - } - break; - case 1: - if ( parent_exist || ksk > 1 ) - fatal ("Can\'t create new ksk because there is already an ksk rollover in progress\n"); - - fprintf (stdout, "create new ksk \n"); - dkp = dki_new (dir, keyname, DKI_KSK, conf->k_algo, conf->k_bits, conf->k_random, conf->k_life / DAYSEC); - if ( dkp == NULL ) - fatal ("Can't create key %s: %s!\n", keyname, dki_geterrstr ()); - if ( standby ) - { - dki_setstatus (standby, DKI_ACT); /* activate standby key */ - dki_setstatus (dkp, DKI_PUB); /* new key will be the new standby */ - } - - // dkp = keylist; /* use old key to create the parent file */ - if ( (dkp = (dki_t *)dki_findalgo (keylist, 1, conf->k_algo, 'a', 1)) == NULL ) /* find the oldest active ksk to create the parent file */ - fatal ("ksk_rollover phase1: Couldn't find the old active key\n"); - if ( !create_parent_file (path, phase, key_ttl, dkp) ) - fatal ("Couldn't create parentfile %s\n", path); - break; - - case 2: - if ( ksk < 2 ) - fatal ("Can\'t publish new key because no one exist\n"); - if ( !parent_exist ) - fatal ("More than one KSK but no parent file found!\n"); - if ( parent_phase != 1 ) - fatal ("Parent file exists but is in wrong state (phase = %d)\n", parent_phase); - if ( parent_age < conf->proptime + key_ttl ) - fatal ("ksk_rollover (phase2): you have to wait for the propagation of the new KSK (at least %dsec or %s)\n", - conf->proptime + key_ttl - parent_age, - str_delspace (age2str (conf->proptime + key_ttl - parent_age))); - - fprintf (stdout, "save new ksk in parent file\n"); - dkp = keylist->next; /* set dkp to new ksk */ - if ( !create_parent_file (path, phase, key_ttl, dkp) ) - fatal ("Couldn't create parentfile %s\n", path); - break; - case 3: - if ( !parent_exist || ksk < 2 ) - fatal ("ksk-delkey only allowed after ksk-publish\n"); - if ( parent_phase != 2 ) - fatal ("Parent file exists but is in wrong state (phase = %d)\n", parent_phase); - if ( parent_age < parent_propagation + key_ttl ) - fatal ("ksk_rollover (phase3): you have to wait for DS propagation (at least %dsec or %s)\n", - parent_propagation + key_ttl - parent_age, - str_delspace (age2str (parent_propagation + key_ttl - parent_age))); - /* remove the parentfile */ - fprintf (stdout, "remove parentfile \n"); - unlink (path); - /* remove or rename the old key */ - fprintf (stdout, "old ksk renamed \n"); - dkp = keylist; /* set dkp to old ksk */ - dki_remove (dkp); - break; - default: assert (phase == 1 || phase == 2 || phase == 3); - } -} - -/***************************************************************** -** create_parent_file () -*****************************************************************/ -static int create_parent_file (const char *fname, int phase, int ttl, const dki_t *dkp) -{ - FILE *fp; - - assert ( fname != NULL ); - - if ( dkp == NULL || (phase != 1 && phase != 2) ) - return 0; - - if ( (fp = fopen (fname, "w")) == NULL ) - fatal ("can\'t create new parentfile \"%s\"\n", fname); - - if ( phase == 1 ) - fprintf (fp, "; KSK rollover phase1 (old key)\n"); - else - fprintf (fp, "; KSK rollover phase2 (new key)\n"); - - dki_prt_dnskeyttl (dkp, fp, ttl); - fclose (fp); - - return phase; -} - -static int parsedirectory (const char *dir, dki_t **listp) -{ - dki_t *dkp; - DIR *dirp; - struct dirent *dentp; - char path[MAX_PATHSIZE+1]; - - if ( dirflag ) - return 0; - - dbg_val ("directory: opendir(%s)\n", dir); - if ( (dirp = opendir (dir)) == NULL ) - return 0; - - while ( (dentp = readdir (dirp)) != NULL ) - { - if ( is_dotfilename (dentp->d_name) ) - continue; - - dbg_val ("directory: check %s\n", dentp->d_name); - pathname (path, sizeof (path), dir, dentp->d_name, NULL); - if ( is_directory (path) && recflag ) - { - dbg_val ("directory: recursive %s\n", path); - parsedirectory (path, listp); - } - else if ( is_keyfilename (dentp->d_name) ) - if ( (dkp = dki_read (dir, dentp->d_name)) ) - { - // fprintf (stderr, "parsedir: tssearch (%d %s)\n", dkp, dkp->name); -#if defined (USE_TREE) && USE_TREE - dki_tadd (listp, dkp, 1); -#else - dki_add (listp, dkp); -#endif - } - } - closedir (dirp); - return 1; -} - -static void parsefile (const char *file, dki_t **listp) -{ - char path[MAX_PATHSIZE+1]; - dki_t *dkp; - - /* file arg contains path ? ... */ - file = splitpath (path, sizeof (path), file); /* ... then split of */ - - if ( is_keyfilename (file) ) /* plain file name looks like DNS key file ? */ - { - if ( (dkp = dki_read (path, file)) ) /* read DNS key file ... */ -#if defined (USE_TREE) && USE_TREE - dki_tadd (listp, dkp, 1); /* ... and add to tree */ -#else - dki_add (listp, dkp); /* ... and add to list */ -#endif - else - error ("error parsing %s: (%s)\n", file, dki_geterrstr()); - } -} - -static const char *parsetag (const char *str, int *tagp) -{ - const char *p; - - *tagp = 0; - while ( isspace (*str) ) /* skip leading ws */ - str++; - - p = str; - if ( isdigit (*p) ) /* keytag starts with digit */ - { - sscanf (p, "%u", tagp); /* read keytag as number */ - do /* eat up to the end of the number */ - p++; - while ( isdigit (*p) ); - - if ( *p == ':' ) /* label follows ? */ - return p+1; /* return that */ - if ( *p == '\0' ) - return NULL; /* no label */ - } - return str; /* return as label string if not a numeric keytag */ -} - diff --git a/contrib/zkt/examples/flat/example.net/Kexample.net.+008+08406.key b/contrib/zkt/examples/flat/example.net/Kexample.net.+008+08406.key deleted file mode 100644 index fa33d5a6a0..0000000000 --- a/contrib/zkt/examples/flat/example.net/Kexample.net.+008+08406.key +++ /dev/null @@ -1,3 +0,0 @@ -;% generationtime=20100311225233 -;% lifetime=60d -example.net. IN DNSKEY 257 3 8 BQEAAAABDUkWE4dtbBTfkAnlOJSbnYSikE7cyHPg6qFItoYObenlTGkG TECQb1flWaKLDhQZ54CdnYN3FdlRVHKmkkxZOwH0HvW+fGXTGv35adGJ JBDqlJWJC0bxHsrlUZTdczt2B6g9AHUUg2WSXTa5KZHJGjFiACFzfln9 SQlVj/UzWGv2sDwQb+XiOIHkZ2VmMPx3SvFOOIG4nmTla76XYTNfUJPY BQ== diff --git a/contrib/zkt/examples/flat/example.net/Kexample.net.+008+08406.private b/contrib/zkt/examples/flat/example.net/Kexample.net.+008+08406.private deleted file mode 100644 index b2832b23a6..0000000000 --- a/contrib/zkt/examples/flat/example.net/Kexample.net.+008+08406.private +++ /dev/null @@ -1,10 +0,0 @@ -Private-key-format: v1.2 -Algorithm: 8 (RSASHA256) -Modulus: DUkWE4dtbBTfkAnlOJSbnYSikE7cyHPg6qFItoYObenlTGkGTECQb1flWaKLDhQZ54CdnYN3FdlRVHKmkkxZOwH0HvW+fGXTGv35adGJJBDqlJWJC0bxHsrlUZTdczt2B6g9AHUUg2WSXTa5KZHJGjFiACFzfln9SQlVj/UzWGv2sDwQb+XiOIHkZ2VmMPx3SvFOOIG4nmTla76XYTNfUJPYBQ== -PublicExponent: AQAAAAE= -PrivateExponent: AeHyClC8SYdKB3mQtwWx/z08pCjHEs18KF9HbWddQnQrrJKP1lh1r6DGmJ5oigg3i2x/NEBUXw345FYQ7ynaVewt4KoQ2c6vT1ZyOXuoCmJknMxXKaVma5L3+hrGwdaS7tbJXGQrq6FHaYOO/2un8G7qRU5zoods+iR8qCRktkYVk2PS7wrdeQu9XaGUl5pPwh7fmNmjpfe16kyk3M2xoThEUQ== -Prime1: A9GgY74jQxKOqTEMivti0zJIuxjlN7k1+MlTDQliH8EiFy8b/6HqRqddgdeuPDt8s0jv1cGxnMig4761JszH7CQeHbefeoLw95OXu7v6hpw3Uw== -Prime2: A3qansKrFaIwWJw7n0//qO52mEKCxoljeMzbeXx4f+pgADmyMcv8ysHMUPP6BEwVxlxHVyv9a3lxQRa8ZdPtFV+QK3Zy3PfAV8SoahbYgi2ARw== -Exponent1: v6z/wlryoSYkgnlkxM6uC6AEc7ZQQdla7cG+iaeEJq8pfzPClkU+WiBP9MJroO8ExM1mj/bjIfw3/Vel5NuLD9uU+BIV1qzcWKbPwo7xZnqh -Exponent2: OPEA/pb22DU0GDyS1UmOmJGjyp2Irxe1LJL6J16bK/lCqPNenT8qIYbLY2EKUoRhAirvurd4/fXqnzNVYdw369C/DBtfZ6AeAfs4no/+Fnfx -Coefficient: /pte3nUM+M1VmAs7z3bhTdbPWIJZk7z0RkcBhFvUn4ZGgImUSFF8/psPzvQFy9pyGzinviE16aI0UVEBxL7NkFfSs9cMX0jpItFDyJTcxvjA diff --git a/contrib/zkt/examples/flat/example.net/Kexample.net.+008+36257.key b/contrib/zkt/examples/flat/example.net/Kexample.net.+008+36257.key deleted file mode 100644 index 3ded31f8fe..0000000000 --- a/contrib/zkt/examples/flat/example.net/Kexample.net.+008+36257.key +++ /dev/null @@ -1,3 +0,0 @@ -;% generationtime=20100311225233 -;% lifetime=14d -example.net. IN DNSKEY 256 3 8 BQEAAAABy5vGV4emguE++EM1DlDEro5fPi7oHyQ4N95DZE//Wtr+/twH y339QiyRFhYcZrb8Wt6ZgT3qXbL2RUVQ9X8ZCQ== diff --git a/contrib/zkt/examples/flat/example.net/Kexample.net.+008+36257.private b/contrib/zkt/examples/flat/example.net/Kexample.net.+008+36257.private deleted file mode 100644 index d13ba75f20..0000000000 --- a/contrib/zkt/examples/flat/example.net/Kexample.net.+008+36257.private +++ /dev/null @@ -1,10 +0,0 @@ -Private-key-format: v1.2 -Algorithm: 8 (RSASHA256) -Modulus: y5vGV4emguE++EM1DlDEro5fPi7oHyQ4N95DZE//Wtr+/twHy339QiyRFhYcZrb8Wt6ZgT3qXbL2RUVQ9X8ZCQ== -PublicExponent: AQAAAAE= -PrivateExponent: uHA+A2dABi4t2afEHHud8MajxjMLqxw/+t0yzsRgye6eiAkJVuhYSdxxqmlqMmSayrBNSX2jYHdKmY49W6kmUQ== -Prime1: 6pzzNfud8Hzw9UdeitwJwVzFaAfV/RmRmTCm4OLBGD0= -Prime2: 3itJLwoOTYkb2rOQNjZ/4hMNov3plClxo5e9iPSARL0= -Exponent1: w/gumsQA0FOkuuMBp5PcTsbHbebL9SAVDURQgLo2ZMU= -Exponent2: ILYpsGsfTcHDSAmGbQBRSsFQEKw7Ghx/mIcWoUIN250= -Coefficient: cwmz0VwEQ4Jjc3+T0tDgH9fhUiyISbuV/0Bz25E5bYA= diff --git a/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+02048.key b/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+02048.key deleted file mode 100644 index 92cea13a34..0000000000 --- a/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+02048.key +++ /dev/null @@ -1,3 +0,0 @@ -;% generationtime=20100311224635 -;% lifetime=3d -sub.example.net. IN DNSKEY 256 3 7 AwEAAZeWiMSfoNTQkZhKHK2+OXmKRSXgBjad7VBC9tZ40aIr5pPtDWCg 8iELYF4M6ybq0M1ffUO+GHZt89A624SkWps= diff --git a/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+02048.published b/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+02048.published deleted file mode 100644 index da71bf9c49..0000000000 --- a/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+02048.published +++ /dev/null @@ -1,10 +0,0 @@ -Private-key-format: v1.2 -Algorithm: 7 (NSEC3RSASHA1) -Modulus: l5aIxJ+g1NCRmEocrb45eYpFJeAGNp3tUEL21njRoivmk+0NYKDyIQtgXgzrJurQzV99Q74Ydm3z0DrbhKRamw== -PublicExponent: AQAB -PrivateExponent: ItWA0E4uUzkqe+hr9rED3B4eDboRM3PPGOaKenaBFdbONA8X6GbCTCAE6oF7DGSebfi6I9HTjLs24ZItD7bHwQ== -Prime1: yLZLkD+0SqDwPDKXlK6qHMRKwGDcNw5MxELfv3ftyRM= -Prime2: wVginHuVgdmvAxTX51WmK922+KTwk/w+Od+/W2N6IVk= -Exponent1: XE5aGhDyHZA+a7DovVxGp8wuhKMHI9rTuz72H9xL4zk= -Exponent2: XemKfknFGBp9WNjR+kru+RWrn2C2fpsiOohE8YYDN5k= -Coefficient: ZmS8ZDDLz6CtwYEvGJgTsNTw/bj6JMaZ8cFh3x1Zd4Y= diff --git a/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+41747.key b/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+41747.key deleted file mode 100644 index d91daac257..0000000000 --- a/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+41747.key +++ /dev/null @@ -1,3 +0,0 @@ -;% generationtime=20100308221149 -;% lifetime=3d -sub.example.net. IN DNSKEY 256 3 7 AwEAAcIDTNHrG9ssCz/VueiPUQaw4IAM5GvECljWsX+SfXSCkhHg5loq +FXNRa80EJCyh5b0sicbdVOhJ9DVNaRKYxU= diff --git a/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+41747.private b/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+41747.private deleted file mode 100644 index 749ba93907..0000000000 --- a/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+41747.private +++ /dev/null @@ -1,10 +0,0 @@ -Private-key-format: v1.2 -Algorithm: 7 (NSEC3RSASHA1) -Modulus: wgNM0esb2ywLP9W56I9RBrDggAzka8QKWNaxf5J9dIKSEeDmWir4Vc1FrzQQkLKHlvSyJxt1U6En0NU1pEpjFQ== -PublicExponent: AQAB -PrivateExponent: fYBY/ynROTQCiuacfh3HUka00uCEGloUP2eSJm4CjYyQyy/he5haU0hcJw5JvxhI0pGj+eDEzaE+5oq1pKntOQ== -Prime1: 4YRNB1cSh3F9+pQglY5/H4STx2pIADAO0mRFO2Lu+Mc= -Prime2: 3DzZhCWENMYZvx9ovZTtIUIUpXEPtN4p7FqYC0OFgUM= -Exponent1: Dk7UjEir9kfvFDzdrF90FU3WCmrl0o06A4M1GUV3n/U= -Exponent2: ppnBUZ2vrNxOja2M5hzKZOZACAbHAuMsg4bkjWC+lVE= -Coefficient: LA7G4rCRiDP8P+Cg+JQUKBUgZ8F+dpGA3E/aVOYhaWw= diff --git a/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+42834.key b/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+42834.key deleted file mode 100644 index 984cbbe6ed..0000000000 --- a/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+42834.key +++ /dev/null @@ -1,3 +0,0 @@ -;% generationtime=20100124184339 -;% lifetime=7d -sub.example.net. IN DNSKEY 257 3 7 AwEAAfTQL8DTr3eYpPziT+cnKnzMewbEBtRxfkb697qoRK4pKkGYGVWu jIEyjts/aluYd+Nw85rvRFPNVJwmM63jvJapql1pKfyFPSl4YVJMxaCv OMhd1JATDnrTq70evQQmOHyxVKe8k9zk0GKeRgX8sl228AvdiGOfxWmT BoOxYowx diff --git a/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+42834.private b/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+42834.private deleted file mode 100644 index a0f44d7982..0000000000 --- a/contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+42834.private +++ /dev/null @@ -1,10 +0,0 @@ -Private-key-format: v1.2 -Algorithm: 7 (NSEC3RSASHA1) -Modulus: 9NAvwNOvd5ik/OJP5ycqfMx7BsQG1HF+Rvr3uqhErikqQZgZVa6MgTKO2z9qW5h343Dzmu9EU81UnCYzreO8lqmqXWkp/IU9KXhhUkzFoK84yF3UkBMOetOrvR69BCY4fLFUp7yT3OTQYp5GBfyyXbbwC92IY5/FaZMGg7FijDE= -PublicExponent: AQAB -PrivateExponent: nn1ZLQDejBKqXX02NXPJsdm/m/W0ZjzDf7hiQNlG/WlxDd4mKK5EEDBnA9HeTUY792bcjuVv2sEHkb+5nU3efHdZypvY8wsvKKNUtxWJl9O5ip7GXh4/7YQeNKW/zgE1Xz+Yu6ht3e8XuxaIXHuQ5mBC0E5AUUYPhVBCTR08CkE= -Prime1: /MeAn2UCjXS8VIoi5Zp90w2qB6ub0wqeLCI0zpXCxWlLTrDSpFORdGuPEctE5cNlDX7y9gq6a5vxnN/b+DnNdQ== -Prime2: 9+6zb1zEpyJzcscrSVVjacjNbyI9OwfrA7XjU5PppCyFLRvP3+L/pjqgDhyoZmCo3VMqnOjxpIeffvmDsUjATQ== -Exponent1: ddE+4AwifnAUf4rK7R1u2/oYb+7KeDkQtB1VY5xl5cFH+mtsIm9Y8lxXmMGXYUgLR5kOASPK8/EBUk78pdu7KQ== -Exponent2: OIT16sEfI2q7HsNAnusUSp04F8maY8aeUK46MGdbr81mXq4kaUl6Ng7PRehKi2wlkq7O3A5OZ89zEKMY3mVTUQ== -Coefficient: ZO4OrBf5SCcbAccN63xHAlm/Pelu4wWw3yo/BaWPYE3Sf+FJt0O3TJQsmm5B+KbrruLsX6lWWHf4ZerizKFhKQ== diff --git a/contrib/zkt/examples/flat/sub.example.net/zktlog-sub.example.net. b/contrib/zkt/examples/flat/sub.example.net/zktlog-sub.example.net. deleted file mode 100644 index 01111fd312..0000000000 --- a/contrib/zkt/examples/flat/sub.example.net/zktlog-sub.example.net. +++ /dev/null @@ -1,321 +0,0 @@ -2010-02-06 00:26:54.532: debug: Check RFC5011 status -2010-02-06 00:26:54.532: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-06 00:26:54.533: debug: Check KSK status -2010-02-06 00:26:54.533: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 5d4h43m15s -2010-02-06 00:26:54.533: debug: Check ZSK status -2010-02-06 00:26:54.533: debug: Re-signing not necessary! -2010-02-06 00:26:54.533: debug: Check if there is a parent file to copy -2010-02-06 00:29:31.290: debug: Check RFC5011 status -2010-02-06 00:29:31.290: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-06 00:29:31.290: debug: Check KSK status -2010-02-06 00:29:31.290: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 5d4h45m52s -2010-02-06 00:29:31.290: debug: Check ZSK status -2010-02-06 00:29:31.290: debug: Re-signing not necessary! -2010-02-06 00:29:31.290: debug: Check if there is a parent file to copy -2010-02-06 00:40:35.043: debug: Check RFC5011 status -2010-02-06 00:40:35.043: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-06 00:40:35.043: debug: Check KSK status -2010-02-06 00:40:35.043: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 5d4h56m56s -2010-02-06 00:40:35.043: debug: Check ZSK status -2010-02-06 00:40:35.043: debug: Re-signing not necessary! -2010-02-06 00:40:35.043: debug: Check if there is a parent file to copy -2010-02-06 00:52:55.402: debug: Check RFC5011 status -2010-02-06 00:52:55.402: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-06 00:52:55.402: debug: Check KSK status -2010-02-06 00:52:55.403: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 5d5h9m16s -2010-02-06 00:52:55.403: debug: Check ZSK status -2010-02-06 00:52:55.403: debug: Re-signing not necessary! -2010-02-06 00:52:55.403: debug: Check if there is a parent file to copy -2010-02-07 13:53:47.883: debug: Check RFC5011 status -2010-02-07 13:53:47.883: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-07 13:53:47.883: debug: Check KSK status -2010-02-07 13:53:47.883: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 6d18h10m8s -2010-02-07 13:53:47.883: debug: Check ZSK status -2010-02-07 13:53:47.883: debug: Re-signing necessary: re-signing interval (1d) reached -2010-02-07 13:53:47.884: notice: "sub.example.net.": re-signing triggered: re-signing interval (1d) reached -2010-02-07 13:53:47.884: debug: Writing key file "./sub.example.net/dnskey.db" -2010-02-07 13:53:47.884: debug: Signing zone "sub.example.net." -2010-02-07 13:53:47.884: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -3 880820 -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-02-07 13:53:48.303: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-02-07 13:53:48.304: debug: Signing completed after 1s. -2010-02-07 13:54:03.465: debug: Check RFC5011 status -2010-02-07 13:54:03.465: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-07 13:54:03.465: debug: Check KSK status -2010-02-07 13:54:03.466: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 6d18h10m24s -2010-02-07 13:54:03.466: debug: Check ZSK status -2010-02-07 13:54:03.466: debug: Re-signing not necessary! -2010-02-07 13:54:03.466: debug: Check if there is a parent file to copy -2010-02-07 13:54:07.955: debug: Check RFC5011 status -2010-02-07 13:54:07.955: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-07 13:54:07.955: debug: Check KSK status -2010-02-07 13:54:07.955: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 6d18h10m28s -2010-02-07 13:54:07.955: debug: Check ZSK status -2010-02-07 13:54:07.956: debug: Re-signing necessary: Option -f -2010-02-07 13:54:07.956: notice: "sub.example.net.": re-signing triggered: Option -f -2010-02-07 13:54:07.956: debug: Writing key file "./sub.example.net/dnskey.db" -2010-02-07 13:54:07.956: debug: Signing zone "sub.example.net." -2010-02-07 13:54:07.956: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -3 325964 -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-02-07 13:54:08.003: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-02-07 13:54:08.003: debug: Signing completed after 1s. -2010-02-07 13:54:08.003: notice: "sub.example.net.": distribution triggered -2010-02-07 13:54:08.003: debug: Distribute zone "sub.example.net." -2010-02-07 13:54:08.003: debug: Run cmd "./dist.sh distribute sub.example.net. ./sub.example.net/zone.db.signed " -2010-02-07 13:54:08.013: debug: ./dist.sh distribute return: "scp ./sub.example.net/zone.db.signed localhost:/var/named/sub.example.net./" -2010-02-07 13:54:08.013: notice: "sub.example.net.": reload triggered -2010-02-07 13:54:08.013: debug: Reload zone "sub.example.net." -2010-02-07 13:54:08.013: debug: Run cmd "./dist.sh reload sub.example.net. ./sub.example.net/zone.db.signed " -2010-02-07 13:54:08.019: debug: ./dist.sh reload return: "rndc reload sub.example.net. " -2010-02-07 14:06:27.669: debug: Check RFC5011 status -2010-02-07 14:06:27.669: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-07 14:06:27.669: debug: Check KSK status -2010-02-07 14:06:27.669: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 6d18h22m48s -2010-02-07 14:06:27.669: debug: Check ZSK status -2010-02-07 14:06:27.669: debug: Re-signing not necessary! -2010-02-07 14:06:27.670: debug: Check if there is a parent file to copy -2010-02-07 14:06:33.713: debug: Check RFC5011 status -2010-02-07 14:06:33.713: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-07 14:06:33.713: debug: Check KSK status -2010-02-07 14:06:33.713: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 6d18h22m54s -2010-02-07 14:06:33.713: debug: Check ZSK status -2010-02-07 14:06:33.714: debug: Re-signing necessary: Option -f -2010-02-07 14:06:33.714: notice: "sub.example.net.": re-signing triggered: Option -f -2010-02-07 14:06:33.714: debug: Writing key file "./sub.example.net/dnskey.db" -2010-02-07 14:06:33.714: debug: Signing zone "sub.example.net." -2010-02-07 14:06:33.714: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -3 4A3DFB -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-02-07 14:06:33.745: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-02-07 14:06:33.745: debug: Signing completed after 0s. -2010-02-07 14:06:33.745: notice: "sub.example.net.": distribution triggered -2010-02-07 14:06:33.745: debug: Distribute zone "sub.example.net." -2010-02-07 14:06:33.745: debug: Run cmd "./dist.sh distribute sub.example.net. ./sub.example.net/zone.db.signed " -2010-02-07 14:06:33.749: debug: ./dist.sh distribute return: "scp ./sub.example.net/zone.db.signed localhost:/var/named/sub.example.net./" -2010-02-07 14:06:33.749: notice: "sub.example.net.": reload triggered -2010-02-07 14:06:33.749: debug: Reload zone "sub.example.net." -2010-02-07 14:06:33.749: debug: Run cmd "./dist.sh reload sub.example.net. ./sub.example.net/zone.db.signed " -2010-02-07 14:06:33.753: debug: ./dist.sh reload return: "rndc reload sub.example.net. " -2010-02-21 12:50:43.176: debug: Check RFC5011 status -2010-02-21 12:50:43.176: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-21 12:50:43.176: debug: Check KSK status -2010-02-21 12:50:43.176: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 2w6d17h7m4s -2010-02-21 12:50:43.176: debug: Check ZSK status -2010-02-21 12:50:43.176: debug: Lifetime(259200 +/-150 sec) of active key 7505 exceeded (1345179 sec) -2010-02-21 12:50:43.176: debug: ->depreciate it -2010-02-21 12:50:43.176: debug: ->activate published key 57167 -2010-02-21 12:50:43.176: notice: "sub.example.net.": lifetime of zone signing key 7505 exceeded: ZSK rollover done -2010-02-21 12:50:43.176: debug: New key for publishing needed -2010-02-21 12:50:43.445: debug: ->creating new key 49712 -2010-02-21 12:50:43.445: info: "sub.example.net.": new key 49712 generated for publishing -2010-02-21 12:50:43.445: debug: Re-signing necessary: Modfied zone key set -2010-02-21 12:50:43.445: notice: "sub.example.net.": re-signing triggered: Modfied zone key set -2010-02-21 12:50:43.445: debug: Writing key file "./sub.example.net/dnskey.db" -2010-02-21 12:50:43.445: debug: Signing zone "sub.example.net." -2010-02-21 12:50:43.445: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -3 2E31B5 -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-02-21 12:50:43.580: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-02-21 12:50:43.580: debug: Signing completed after 0s. -2010-02-21 12:50:51.158: debug: Check RFC5011 status -2010-02-21 12:50:51.158: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-21 12:50:51.158: debug: Check KSK status -2010-02-21 12:50:51.159: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 2w6d17h7m12s -2010-02-21 12:50:51.159: debug: Check ZSK status -2010-02-21 12:50:51.159: debug: Re-signing necessary: Modfied zone key set -2010-02-21 12:50:51.159: notice: "sub.example.net.": re-signing triggered: Modfied zone key set -2010-02-21 12:50:51.159: debug: Writing key file "./sub.example.net/dnskey.db" -2010-02-21 12:50:51.159: debug: Signing zone "sub.example.net." -2010-02-21 12:50:51.159: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -3 41F65A -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-02-21 12:50:51.205: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-02-21 12:50:51.205: debug: Signing completed after 0s. -2010-02-21 12:51:23.497: debug: Check RFC5011 status -2010-02-21 12:51:23.497: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-21 12:51:23.497: debug: Check KSK status -2010-02-21 12:51:23.497: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 2w6d17h7m44s -2010-02-21 12:51:23.497: debug: Check ZSK status -2010-02-21 12:51:23.497: debug: Re-signing not necessary! -2010-02-21 12:51:23.497: debug: Check if there is a parent file to copy -2010-02-21 19:16:18.384: debug: Check RFC5011 status -2010-02-21 19:16:18.384: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-21 19:16:18.384: debug: Check KSK status -2010-02-21 19:16:18.385: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 2w6d23h32m39s -2010-02-21 19:16:18.385: debug: Check ZSK status -2010-02-21 19:16:18.385: debug: Lifetime(390 sec) of depreciated key 7505 exceeded (23135 sec) -2010-02-21 19:16:18.385: info: "sub.example.net.": old ZSK 7505 removed -2010-02-21 19:16:18.401: debug: ->remove it -2010-02-21 19:16:18.401: debug: Re-signing necessary: Modfied zone key set -2010-02-21 19:16:18.401: notice: "sub.example.net.": re-signing triggered: Modfied zone key set -2010-02-21 19:16:18.401: debug: Writing key file "./sub.example.net/dnskey.db" -2010-02-21 19:16:18.401: debug: Signing zone "sub.example.net." -2010-02-21 19:16:18.401: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -3 3DADF2 -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-02-21 19:16:18.593: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-02-21 19:16:18.593: debug: Signing completed after 0s. -2010-02-21 19:32:11.378: debug: Check RFC5011 status -2010-02-21 19:32:11.378: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-21 19:32:11.378: debug: Check KSK status -2010-02-21 19:32:11.378: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 2w6d23h48m32s -2010-02-21 19:32:11.378: debug: Check ZSK status -2010-02-21 19:32:11.378: debug: Re-signing not necessary! -2010-02-21 19:32:11.378: debug: Check if there is a parent file to copy -2010-02-21 19:32:15.930: debug: Check RFC5011 status -2010-02-21 19:32:15.930: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-21 19:32:15.930: debug: Check KSK status -2010-02-21 19:32:15.930: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 2w6d23h48m36s -2010-02-21 19:32:15.930: debug: Check ZSK status -2010-02-21 19:32:15.930: debug: Re-signing necessary: Option -f -2010-02-21 19:32:15.930: notice: "sub.example.net.": re-signing triggered: Option -f -2010-02-21 19:32:15.930: debug: Writing key file "./sub.example.net/dnskey.db" -2010-02-21 19:32:15.931: debug: Signing zone "sub.example.net." -2010-02-21 19:32:15.931: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -3 623FD7 -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-02-21 19:32:15.982: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-02-21 19:32:15.982: debug: Signing completed after 0s. -2010-02-21 19:32:32.203: debug: Check RFC5011 status -2010-02-21 19:32:32.203: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-21 19:32:32.203: debug: Check KSK status -2010-02-21 19:32:32.203: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 2w6d23h48m53s -2010-02-21 19:32:32.203: debug: Check ZSK status -2010-02-21 19:32:32.203: debug: Re-signing necessary: Option -f -2010-02-21 19:32:32.203: notice: "sub.example.net.": re-signing triggered: Option -f -2010-02-21 19:32:32.203: debug: Writing key file "./sub.example.net/dnskey.db" -2010-02-21 19:32:32.203: debug: Signing zone "sub.example.net." -2010-02-21 19:32:32.203: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -3 C522CA -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-02-21 19:32:32.232: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-02-21 19:32:32.232: debug: Signing completed after 0s. -2010-02-25 00:12:26.443: debug: Check RFC5011 status -2010-02-25 00:12:26.443: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-25 00:12:26.443: debug: Check KSK status -2010-02-25 00:12:26.443: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 3w3d4h28m47s -2010-02-25 00:12:26.443: debug: Check ZSK status -2010-02-25 00:12:26.443: debug: Lifetime(259200 +/-150 sec) of active key 57167 exceeded (300103 sec) -2010-02-25 00:12:26.443: debug: ->depreciate it -2010-02-25 00:12:26.444: debug: ->activate published key 49712 -2010-02-25 00:12:26.444: notice: "sub.example.net.": lifetime of zone signing key 57167 exceeded: ZSK rollover done -2010-02-25 00:12:26.444: debug: New key for publishing needed -2010-02-25 00:12:26.902: debug: ->creating new key 65009 -2010-02-25 00:12:26.902: info: "sub.example.net.": new key 65009 generated for publishing -2010-02-25 00:12:26.902: debug: Re-signing necessary: Modfied zone key set -2010-02-25 00:12:26.902: notice: "sub.example.net.": re-signing triggered: Modfied zone key set -2010-02-25 00:12:26.902: debug: Writing key file "./sub.example.net/dnskey.db" -2010-02-25 00:12:26.902: debug: Signing zone "sub.example.net." -2010-02-25 00:12:26.902: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -3 9AA7CB -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-02-25 00:12:27.016: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-02-25 00:12:27.016: debug: Signing completed after 1s. -2010-02-25 23:42:20.653: debug: Check RFC5011 status -2010-02-25 23:42:20.653: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-02-25 23:42:20.653: debug: Check KSK status -2010-02-25 23:42:20.653: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 3w4d3h58m41s -2010-02-25 23:42:20.653: debug: Check ZSK status -2010-02-25 23:42:20.653: debug: Lifetime(390 sec) of depreciated key 57167 exceeded (84594 sec) -2010-02-25 23:42:20.653: info: "sub.example.net.": old ZSK 57167 removed -2010-02-25 23:42:20.661: debug: ->remove it -2010-02-25 23:42:20.661: debug: Re-signing necessary: Modfied zone key set -2010-02-25 23:42:20.661: notice: "sub.example.net.": re-signing triggered: Modfied zone key set -2010-02-25 23:42:20.661: debug: Writing key file "./sub.example.net/dnskey.db" -2010-02-25 23:42:20.662: debug: Signing zone "sub.example.net." -2010-02-25 23:42:20.662: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -3 2942EB -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-02-25 23:42:21.012: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-02-25 23:42:21.012: debug: Signing completed after 1s. -2010-03-02 10:59:11.845: debug: Check RFC5011 status -2010-03-02 10:59:11.845: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-03-02 10:59:11.845: debug: Check KSK status -2010-03-02 10:59:11.846: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 4w1d15h15m32s -2010-03-02 10:59:11.846: debug: Check ZSK status -2010-03-02 10:59:11.846: debug: Lifetime(259200 +/-150 sec) of active key 49712 exceeded (470805 sec) -2010-03-02 10:59:11.846: debug: ->depreciate it -2010-03-02 10:59:11.846: debug: ->activate published key 65009 -2010-03-02 10:59:11.846: notice: "sub.example.net.": lifetime of zone signing key 49712 exceeded: ZSK rollover done -2010-03-02 10:59:11.846: debug: New key for publishing needed -2010-03-02 10:59:12.256: debug: ->creating new key 27377 -2010-03-02 10:59:12.256: info: "sub.example.net.": new key 27377 generated for publishing -2010-03-02 10:59:12.256: debug: Re-signing necessary: Modfied zone key set -2010-03-02 10:59:12.256: notice: "sub.example.net.": re-signing triggered: Modfied zone key set -2010-03-02 10:59:12.256: debug: Writing key file "./sub.example.net/dnskey.db" -2010-03-02 10:59:12.256: debug: Signing zone "sub.example.net." -2010-03-02 10:59:12.256: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -3 F9A34F -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-03-02 10:59:12.415: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-03-02 10:59:12.416: debug: Signing completed after 0s. -2010-03-03 23:22:00.127: debug: Check RFC5011 status -2010-03-03 23:22:00.127: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-03-03 23:22:00.127: debug: Check KSK status -2010-03-03 23:22:00.127: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 4w3d3h38m21s -2010-03-03 23:22:00.127: debug: Check ZSK status -2010-03-03 23:22:00.127: debug: Lifetime(390 sec) of depreciated key 49712 exceeded (130969 sec) -2010-03-03 23:22:00.127: info: "sub.example.net.": old ZSK 49712 removed -2010-03-03 23:22:00.127: debug: ->remove it -2010-03-03 23:22:00.127: debug: Re-signing necessary: Modfied zone key set -2010-03-03 23:22:00.127: notice: "sub.example.net.": re-signing triggered: Modfied zone key set -2010-03-03 23:22:00.127: debug: Writing key file "./sub.example.net/dnskey.db" -2010-03-03 23:22:00.127: debug: Signing zone "sub.example.net." -2010-03-03 23:22:00.127: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -3 A3B721 -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-03-03 23:22:00.394: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-03-03 23:22:00.394: debug: Signing completed after 0s. -2010-03-08 23:11:49.663: debug: Check RFC5011 status -2010-03-08 23:11:49.663: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-03-08 23:11:49.663: debug: Check KSK status -2010-03-08 23:11:49.663: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 5w1d3h28m10s -2010-03-08 23:11:49.664: debug: Check ZSK status -2010-03-08 23:11:49.664: debug: Lifetime(259200 +/-150 sec) of active key 65009 exceeded (562358 sec) -2010-03-08 23:11:49.664: debug: ->depreciate it -2010-03-08 23:11:49.664: debug: ->activate published key 27377 -2010-03-08 23:11:49.664: notice: "sub.example.net.": lifetime of zone signing key 65009 exceeded: ZSK rollover done -2010-03-08 23:11:49.664: debug: New key for publishing needed -2010-03-08 23:11:50.060: debug: ->creating new key 41747 -2010-03-08 23:11:50.060: info: "sub.example.net.": new key 41747 generated for publishing -2010-03-08 23:11:50.060: debug: Re-signing necessary: Modfied zone key set -2010-03-08 23:11:50.061: notice: "sub.example.net.": re-signing triggered: Modfied zone key set -2010-03-08 23:11:50.061: debug: Writing key file "././sub.example.net/dnskey.db" -2010-03-08 23:11:50.061: debug: Signing zone "sub.example.net." -2010-03-08 23:11:50.061: debug: Run cmd "cd ././sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -3 71C04F -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-03-08 23:11:50.169: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-03-08 23:11:50.169: debug: Signing completed after 0s. -2010-03-08 23:18:52.243: debug: Check RFC5011 status -2010-03-08 23:18:52.243: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-03-08 23:18:52.243: debug: Check KSK status -2010-03-08 23:18:52.243: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 5w1d3h35m13s -2010-03-08 23:18:52.243: debug: Check ZSK status -2010-03-08 23:18:52.243: debug: Lifetime(390 sec) of depreciated key 65009 exceeded (423 sec) -2010-03-08 23:18:52.243: info: "sub.example.net.": old ZSK 65009 removed -2010-03-08 23:18:52.243: debug: ->remove it -2010-03-08 23:18:52.243: debug: Re-signing necessary: Modfied zone key set -2010-03-08 23:18:52.243: notice: "sub.example.net.": re-signing triggered: Modfied zone key set -2010-03-08 23:18:52.243: debug: Writing key file "././sub.example.net/dnskey.db" -2010-03-08 23:18:52.243: debug: Signing zone "sub.example.net." -2010-03-08 23:18:52.243: debug: Run cmd "cd ././sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -3 CF729B -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-03-08 23:18:52.287: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-03-08 23:18:52.287: debug: Signing completed after 0s. -2010-03-11 23:46:35.497: debug: Check RFC5011 status -2010-03-11 23:46:35.497: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-03-11 23:46:35.497: debug: Check KSK status -2010-03-11 23:46:35.497: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 5w4d4h2m56s -2010-03-11 23:46:35.498: debug: Check ZSK status -2010-03-11 23:46:35.498: debug: Lifetime(259200 +/-150 sec) of active key 27377 exceeded (261286 sec) -2010-03-11 23:46:35.498: debug: ->depreciate it -2010-03-11 23:46:35.498: debug: ->activate published key 41747 -2010-03-11 23:46:35.498: notice: "sub.example.net.": lifetime of zone signing key 27377 exceeded: ZSK rollover done -2010-03-11 23:46:35.498: debug: New key for publishing needed -2010-03-11 23:46:35.768: debug: ->creating new key 2048 -2010-03-11 23:46:35.768: info: "sub.example.net.": new key 2048 generated for publishing -2010-03-11 23:46:35.768: debug: Re-signing necessary: Modfied zone key set -2010-03-11 23:46:35.768: notice: "sub.example.net.": re-signing triggered: Modfied zone key set -2010-03-11 23:46:35.768: debug: Writing key file "./sub.example.net/dnskey.db" -2010-03-11 23:46:35.768: debug: Signing zone "sub.example.net." -2010-03-11 23:46:35.768: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -3 B86C9F -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-03-11 23:46:35.814: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-03-11 23:46:35.814: debug: Signing completed after 0s. -2010-03-11 23:52:33.132: debug: Check RFC5011 status -2010-03-11 23:52:33.132: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-03-11 23:52:33.132: debug: Check KSK status -2010-03-11 23:52:33.132: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 5w4d4h8m54s -2010-03-11 23:52:33.132: debug: Check ZSK status -2010-03-11 23:52:33.132: debug: Re-signing not necessary! -2010-03-11 23:52:33.132: debug: Check if there is a parent file to copy -2010-03-11 23:53:27.804: debug: Check RFC5011 status -2010-03-11 23:53:27.804: debug: ->not a rfc5011 zone, looking for a regular ksk rollover -2010-03-11 23:53:27.804: debug: Check KSK status -2010-03-11 23:53:27.804: warning: "sub.example.net.": lifetime of key signing key 42834 exceeded since 5w4d4h9m48s -2010-03-11 23:53:27.804: debug: Check ZSK status -2010-03-11 23:53:27.804: debug: Lifetime(390 sec) of depreciated key 27377 exceeded (412 sec) -2010-03-11 23:53:27.804: info: "sub.example.net.": old ZSK 27377 removed -2010-03-11 23:53:27.804: debug: ->remove it -2010-03-11 23:53:27.804: debug: Re-signing necessary: Modfied zone key set -2010-03-11 23:53:27.804: notice: "sub.example.net.": re-signing triggered: Modfied zone key set -2010-03-11 23:53:27.804: debug: Writing key file "./sub.example.net/dnskey.db" -2010-03-11 23:53:27.804: debug: Signing zone "sub.example.net." -2010-03-11 23:53:27.805: debug: Run cmd "cd ./sub.example.net; /usr/local/sbin/dnssec-signzone -n 1 -u -3 67AA7F -C -g -p -d ../keysets -o sub.example.net. -e +172800 -N unixtime zone.db K*.private 2>&1" -2010-03-11 23:53:27.856: debug: Cmd dnssec-signzone return: "zone.db.signed" -2010-03-11 23:53:27.856: debug: Signing completed after 0s. diff --git a/contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+09743.key b/contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+09743.key deleted file mode 100644 index e00ff0f004..0000000000 --- a/contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+09743.key +++ /dev/null @@ -1,3 +0,0 @@ -;% generationtime=20100331230548 -;% lifetime=28d -example.de. IN DNSKEY 256 3 5 BQEAAAABx4bzjHCRCraU9v/UP2O9dQ7YVF1vMhDWjWofWonrvX+T1Rb/ 2qIYq9kNPbQABLG5X/oe3dJIN4OGZAfL46sceQ== diff --git a/contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+09743.published b/contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+09743.published deleted file mode 100644 index 52e1797fa2..0000000000 --- a/contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+09743.published +++ /dev/null @@ -1,10 +0,0 @@ -Private-key-format: v1.2 -Algorithm: 5 (RSASHA1) -Modulus: x4bzjHCRCraU9v/UP2O9dQ7YVF1vMhDWjWofWonrvX+T1Rb/2qIYq9kNPbQABLG5X/oe3dJIN4OGZAfL46sceQ== -PublicExponent: AQAAAAE= -PrivateExponent: MWWd0AvKmimZrtVrPrTAK/UD0ZrJuL3Rcxw6qzxPWE5S3KcdJNtt5HzOPeGWIZVN8rBtPCSRhiksjugrMqkMRQ== -Prime1: 48VMTrU7heYjFQ5ou7rSOpqt2Eot+EBDjYUPKeOR268= -Prime2: 4EGLA3LuyNrDfBHTn0xmGHdO3DvHn6YUmJKh/98WzFc= -Exponent1: WhbPWcw2bisYr9cS59vOFmLxvbXUQgJZTZVYSDW3EF0= -Exponent2: BoCEx7RES9scWl7PFrUZzrzjDIZiBUICbw4BViSUVWs= -Coefficient: DmwngpeIb8+dzC9ETnQOojRJTv1MRpW4k0Jo1NfAC+c= diff --git a/contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+39599.key b/contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+39599.key deleted file mode 100644 index 316ed4061f..0000000000 --- a/contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+39599.key +++ /dev/null @@ -1,3 +0,0 @@ -;% generationtime=20100224232104 -;% lifetime=28d -example.de. IN DNSKEY 256 3 5 BQEAAAABsbG8YGFKUQkJl2jdfLpO6yhnttoFp8lmfzCQfbMdIG6riFes ZIO2aMevhBM/+RWN7lNSCu8+vA4Ph7Mzp8OMCQ== diff --git a/contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+39599.private b/contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+39599.private deleted file mode 100644 index da24c84685..0000000000 --- a/contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+39599.private +++ /dev/null @@ -1,10 +0,0 @@ -Private-key-format: v1.2 -Algorithm: 5 (RSASHA1) -Modulus: sbG8YGFKUQkJl2jdfLpO6yhnttoFp8lmfzCQfbMdIG6riFesZIO2aMevhBM/+RWN7lNSCu8+vA4Ph7Mzp8OMCQ== -PublicExponent: AQAAAAE= -PrivateExponent: PHPdKKwdgE+02a+6R+2xk7RfPUmjIW0dclILS0uQ2GL2lYJCaFKoMEZJb/30CkJLWBBGUS4XUPzplYQ8VLn6gQ== -Prime1: 5efr+OinaF8nLpI/N1EuTxuoSbILnPn5pSWVpwJPgTk= -Prime2: xdzEgtE9CEHT06oa0yM+lLMJp2K6RlBiByRo13Sd8VE= -Exponent1: dE2UZNfo/uln1Yq9lz3pImp5gWDjeT+sYIdBBk8qfOk= -Exponent2: TPXU6D9veGi9J41RR3KvLo4s3u/rQWHXyQrO6jQwX0E= -Coefficient: t1ysP5l5JUhi+d3GvFN0EyZAv1nW31lsL+4979deLsw= diff --git a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+07295.key b/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+07295.key deleted file mode 100644 index ac38acdc2e..0000000000 --- a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+07295.key +++ /dev/null @@ -1,3 +0,0 @@ -;% generationtime=20100311230027 -;% lifetime=3d -sub.example.de. IN DNSKEY 256 3 5 BQEAAAABxKxfV/mwTsnyVaZLWg8vyG5U97RMupLke5t50q2pJdHLzb2+ fqswgt/pBwAYbYWTBQr2UTnQ4TBRunBiRSuapQ== diff --git a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+07295.private b/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+07295.private deleted file mode 100644 index 3aec6098e3..0000000000 --- a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+07295.private +++ /dev/null @@ -1,10 +0,0 @@ -Private-key-format: v1.2 -Algorithm: 5 (RSASHA1) -Modulus: xKxfV/mwTsnyVaZLWg8vyG5U97RMupLke5t50q2pJdHLzb2+fqswgt/pBwAYbYWTBQr2UTnQ4TBRunBiRSuapQ== -PublicExponent: AQAAAAE= -PrivateExponent: LDta/Lx7ETLqQamSm9XAERno+ixf6Dl/cq10zcd8QNLuvleFqMvtRURxfhFhNlrvFTuckz1IzIX7ufecSrarYQ== -Prime1: 5x1rjqJnLrLUd+i4DUmSutQQrQZWg+vzwurpGkxBCTc= -Prime2: 2dmVy5A1h7avKD9Ez0rcg1G96wxVkdp+/8AvXEYe+QM= -Exponent1: Fx9QLrquictb9W74f5gmRs5wQcsyWjkNVXUE/eb84l0= -Exponent2: kexPooMJG2rfGbnWG0Mnav28EcV7q7xNnIHELjRCfWU= -Coefficient: Liq85Ma7Ki3tZePKv/v+he9UgH7J5tgDnmHof0370/M= diff --git a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+40559.key b/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+40559.key deleted file mode 100644 index 1cc8af8d35..0000000000 --- a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+40559.key +++ /dev/null @@ -1,3 +0,0 @@ -;% generationtime=20100331230548 -;% lifetime=3d -sub.example.de. IN DNSKEY 256 3 5 BQEAAAABwp1NkMWtDJ+B7uvjb4nejqCDAtmqfy0LRTq13tdgm33A04T2 uvdzfFpnd/t3giXCC588xP/ZT0pXekaZEyfhew== diff --git a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+40559.published b/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+40559.published deleted file mode 100644 index a6a00f8211..0000000000 --- a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+40559.published +++ /dev/null @@ -1,10 +0,0 @@ -Private-key-format: v1.2 -Algorithm: 5 (RSASHA1) -Modulus: wp1NkMWtDJ+B7uvjb4nejqCDAtmqfy0LRTq13tdgm33A04T2uvdzfFpnd/t3giXCC588xP/ZT0pXekaZEyfhew== -PublicExponent: AQAAAAE= -PrivateExponent: Xgmu9fyg1QoKridDOUywH7mZg92dEvGVIcz5QrpXMYZDhi/Z1NLB4UJwaO4Kmbg9EyAT+ms3fjjC8ncy+mVnEQ== -Prime1: 9wrDpiFEJkYGuCC0JriZgA+uaLBYtzudTzUByr8BGU0= -Prime2: yavdgu+a7BloewO3Fzg6JwxYvJYrfeAgYLVr4uXzwec= -Exponent1: Z8tEYnN2N5LxFjL9+mdfnOjNhVxAouZ/wyyokWf0C4U= -Exponent2: axnHnwpVRfb5Xt25+8oIVoVH4YdTXDCbr4nkcjru4As= -Coefficient: dvqfAzS1VFtC6dvzFTgh+GoFt3EwIxHDXcskNmbFDto= diff --git a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+63530.depreciated b/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+63530.depreciated deleted file mode 100644 index 6bfb3dcaec..0000000000 --- a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+63530.depreciated +++ /dev/null @@ -1,10 +0,0 @@ -Private-key-format: v1.2 -Algorithm: 5 (RSASHA1) -Modulus: wBxCT/MYqHr+xX1vViWWlt36h1dkkx+qtfeY3603p+J4QlglYkStawB4atu2je/RrEUQXco40iGnYuqqUWQsdw== -PublicExponent: AQAAAAE= -PrivateExponent: mcrUc9cypiq7j30rntMoCrIxE9SemJxzTJ/USNZPGqfa4MpfsfvIt6A+8JzgS0Sx+6piSk9d8QSdr55aVqgEYQ== -Prime1: 6dRm4EGvg7WN5LFAMv/8HzeyZbNu7FlQwf08QZOmgYc= -Prime2: 0lM7LrrOzTThb372TCC+7Wz0S6GuqfjhM33MWwNEeZE= -Exponent1: Q8jFuxbjffHEGZxuUdLkkmWka0hDlACozr31blXYgCc= -Exponent2: yqc1ijD9jaK8b5IUIqsx42nbJ6boeMyx77wfOUoXw7E= -Coefficient: R4QnEkjxtLd7bPChAqblYPb9A8lcsD7KGh5fTR9LcFM= diff --git a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+63530.key b/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+63530.key deleted file mode 100644 index 776c4a95e5..0000000000 --- a/contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+63530.key +++ /dev/null @@ -1,3 +0,0 @@ -;% generationtime=20100302100004 -;% lifetime=2d -sub.example.de. IN DNSKEY 256 3 5 BQEAAAABwBxCT/MYqHr+xX1vViWWlt36h1dkkx+qtfeY3603p+J4Qlgl YkStawB4atu2je/RrEUQXco40iGnYuqqUWQsdw== diff --git a/contrib/zkt/man/dnssec-zkt.8.pdf b/contrib/zkt/man/dnssec-zkt.8.pdf deleted file mode 100644 index 4e88297601..0000000000 Binary files a/contrib/zkt/man/dnssec-zkt.8.pdf and /dev/null differ diff --git a/contrib/zkt/man/zkt-ls.8.pdf b/contrib/zkt/man/zkt-ls.8.pdf deleted file mode 100644 index 8e0ac69e63..0000000000 Binary files a/contrib/zkt/man/zkt-ls.8.pdf and /dev/null differ diff --git a/contrib/zkt/man/zkt-signer.8.pdf b/contrib/zkt/man/zkt-signer.8.pdf deleted file mode 100644 index 6fbbb1d361..0000000000 Binary files a/contrib/zkt/man/zkt-signer.8.pdf and /dev/null differ diff --git a/util/copyrights b/util/copyrights index 8d3792349c..d257216482 100644 --- a/util/copyrights +++ b/util/copyrights @@ -1167,7 +1167,7 @@ ./bin/tests/system/ecdsa/ns1/root.db.in ZONE 2012 ./bin/tests/system/ecdsa/ns1/sign.sh SH 2012,2014 ./bin/tests/system/ecdsa/ns2/named.conf CONF-C 2012 -./bin/tests/system/ecdsa/prereq.sh SH 20122014,2014 +./bin/tests/system/ecdsa/prereq.sh SH 2012,2014 ./bin/tests/system/ecdsa/setup.sh SH 2012,2014 ./bin/tests/system/ecdsa/tests.sh SH 2012,2013 ./bin/tests/system/emptyzones/clean.sh SH 2014 @@ -2110,9 +2110,7 @@ ./conftools/perllib/dnsconf/Makefile.PL PERL 2000,2001,2004,2007,2012 ./conftools/perllib/dnsconf/named1.conf CONF-C 2000,2001,2004,2007 ./conftools/perllib/dnsconf/test.pl PERL 2000,2001,2004,2007,2012 -./contrib/.gitignore X 2012 -./contrib/check-secure-delegation.pl.in PERL 2010,2012 -./contrib/check5011.pl X 2013 +./contrib/README X 2014 ./contrib/dane/mkdane.sh X 2012 ./contrib/dane/tlsa6698.pem X 2012 ./contrib/dlz/bin/dlzbdb/Makefile.in X 2005,2007,2009,2011,2012 @@ -2379,34 +2377,25 @@ ./contrib/idn/idnkit-1.0-src/wsock/wsock20/dllstub.c X 2003 ./contrib/idn/idnkit-1.0-src/wsock/wsock20/make.wnt X 2003 ./contrib/idn/idnkit-1.0-src/wsock/wsock20/ws2_32.def X 2003 -./contrib/linux/coredump-patch X 2000,2001 -./contrib/named-bootconf/named-bootconf.sh SH.PORTION 1999,2000,2001,2004,2006,2007,2012,2014 -./contrib/nanny/nanny.pl PERL 2000,2001,2004,2007,2012 -./contrib/nslint-2.1a3/CHANGES X 2001 -./contrib/nslint-2.1a3/FILES X 2001 -./contrib/nslint-2.1a3/INSTALL X 2001 -./contrib/nslint-2.1a3/Makefile.in X 2001,2004 -./contrib/nslint-2.1a3/README X 2001 -./contrib/nslint-2.1a3/VERSION X 2001 -./contrib/nslint-2.1a3/aclocal.m4 X 2001 -./contrib/nslint-2.1a3/config.guess X 2001 -./contrib/nslint-2.1a3/config.sub X 2001 -./contrib/nslint-2.1a3/configure X 2001 -./contrib/nslint-2.1a3/configure.in X 2001 -./contrib/nslint-2.1a3/install-sh X 2001 -./contrib/nslint-2.1a3/lbl/gnuc.h X 2001 -./contrib/nslint-2.1a3/lbl/os-irix5.h X 2001 -./contrib/nslint-2.1a3/lbl/os-osf3.h X 2001 -./contrib/nslint-2.1a3/lbl/os-solaris2.h X 2001 -./contrib/nslint-2.1a3/lbl/os-sunos4.h X 2001 -./contrib/nslint-2.1a3/lbl/os-ultrix4.h X 2001 -./contrib/nslint-2.1a3/mkdep X 2001 -./contrib/nslint-2.1a3/nslint.8 X 2001 -./contrib/nslint-2.1a3/nslint.c X 2001,2011 -./contrib/nslint-2.1a3/savestr.c X 2001 -./contrib/nslint-2.1a3/savestr.h X 2001 -./contrib/nslint-2.1a3/strerror.c X 2001,2014 -./contrib/pkcs11-keygen/README X 2008,2009 +./contrib/nslint-3.0a2/CHANGES X 2001,2014 +./contrib/nslint-3.0a2/FILES X 2001,2014 +./contrib/nslint-3.0a2/INSTALL X 2001,2014 +./contrib/nslint-3.0a2/Makefile.in X 2001,2004,2014 +./contrib/nslint-3.0a2/README X 2001,2014 +./contrib/nslint-3.0a2/VERSION X 2001,2014 +./contrib/nslint-3.0a2/aclocal.m4 X 2001,2014 +./contrib/nslint-3.0a2/config.guess X 2001,2014 +./contrib/nslint-3.0a2/config.sub X 2001,2014 +./contrib/nslint-3.0a2/configure X 2001,2014 +./contrib/nslint-3.0a2/configure.in X 2001,2014 +./contrib/nslint-3.0a2/install-sh X 2001,2014 +./contrib/nslint-3.0a2/lbl/gnuc.h X 2001,2014 +./contrib/nslint-3.0a2/mkdep X 2001,2014 +./contrib/nslint-3.0a2/nslint.8 X 2001,2014 +./contrib/nslint-3.0a2/nslint.c X 2001,2011,2014 +./contrib/nslint-3.0a2/savestr.c X 2001,2014 +./contrib/nslint-3.0a2/savestr.h X 2001,2014 +./contrib/nslint-3.0a2/strerror.c X 2001,2014 ./contrib/query-loc-0.4.0/ADDRESSES X 2008 ./contrib/query-loc-0.4.0/ALGO X 2008 ./contrib/query-loc-0.4.0/INSTALL X 2008 @@ -2435,6 +2424,12 @@ ./contrib/queryperf/missing/getnameinfo.c X 2004 ./contrib/queryperf/queryperf.c X 2001,2002,2003,2004,2005,2007,2012,2013,2014 ./contrib/queryperf/utils/gen-data-queryperf.py X 2003,2008 +./contrib/scripts/.gitignore X 2012 +./contrib/scripts/check5011.pl X 2013 +./contrib/scripts/check-secure-delegation.pl.in PERL 2010,2012 +./contrib/scripts/named-bootconf.sh SH.PORTION 1999,2000,2001,2004,2006,2007,2012,2014 +./contrib/scripts/nanny.pl PERL 2000,2001,2004,2007,2012 +./contrib/scripts/zone-edit.sh.in SH 2010,2012 ./contrib/sdb/bdb/README X 2002 ./contrib/sdb/bdb/bdb.c X 2002,2011 ./contrib/sdb/bdb/bdb.h X 2002 @@ -2460,110 +2455,81 @@ ./contrib/sdb/tcl/tcldb.h C 2000,2001,2004,2007 ./contrib/sdb/time/timedb.c C 2000,2001,2004,2007,2011 ./contrib/sdb/time/timedb.h C 2000,2001,2004,2007 -./contrib/zkt/CHANGELOG X 2008,2009,2010 -./contrib/zkt/LICENSE X 2008 -./contrib/zkt/Makefile.in X 2008,2009,2010 -./contrib/zkt/README X 2008,2009,2010 -./contrib/zkt/README.logging X 2008,2009,2010 -./contrib/zkt/TODO X 2008,2009,2010 -./contrib/zkt/config.h.in X 2008,2009,2010 -./contrib/zkt/config_zkt.h X 2008,2009,2010 -./contrib/zkt/configure X 2008,2009,2010 -./contrib/zkt/configure.ac X 2009,2010 -./contrib/zkt/debug.h X 2008 -./contrib/zkt/dki.c X 2008,2009,2010,2013 -./contrib/zkt/dki.h X 2008,2009,2010 -./contrib/zkt/dnssec-zkt.c X 2008,2009,2010 -./contrib/zkt/doc/KeyRollover.ms X 2009 -./contrib/zkt/doc/rfc5011.txt X 2009 -./contrib/zkt/domaincmp.c X 2008,2010 -./contrib/zkt/domaincmp.h X 2008,2010 -./contrib/zkt/examples/dnssec.conf X 2010 -./contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+007+30323.key X 2010 -./contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+007+30323.private X 2010 -./contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+007+52935.key X 2010 -./contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+007+52935.private X 2010 -./contrib/zkt/examples/flat/dyn.example.net/zktlog-dyn.example.net. X 2010 -./contrib/zkt/examples/flat/example.net/Kexample.net.+008+08406.key X 2010 -./contrib/zkt/examples/flat/example.net/Kexample.net.+008+08406.private X 2010 -./contrib/zkt/examples/flat/example.net/Kexample.net.+008+36257.key X 2010 -./contrib/zkt/examples/flat/example.net/Kexample.net.+008+36257.private X 2010 -./contrib/zkt/examples/flat/example.net/dnssec.conf X 2010 -./contrib/zkt/examples/flat/example.net/z.db X 2010 -./contrib/zkt/examples/flat/example.net/zktlog-example.net. X 2010 -./contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+02048.key X 2010 -./contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+02048.published X 2010 -./contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+41747.key X 2010 -./contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+41747.private X 2010 -./contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+42834.key X 2010 -./contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+42834.private X 2010 -./contrib/zkt/examples/flat/sub.example.net/zktlog-sub.example.net. X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+09743.key X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+09743.published X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+39599.key X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+39599.private X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+07295.key X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+07295.private X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+08544.key X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+08544.private X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+27861.key X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+27861.private X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+40559.key X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+40559.published X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+42639.key X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+42639.private X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+63530.depreciated X 2010 -./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+63530.key X 2010 -./contrib/zkt/examples/hierarchical/log/zktlog-example.de. X 2010 -./contrib/zkt/examples/hierarchical/log/zktlog-sub.example.de. X 2010 -./contrib/zkt/examples/zkt-ls.sh X 2010 -./contrib/zkt/examples/zkt-signer.sh X 2010 -./contrib/zkt/log.c X 2008,2010 -./contrib/zkt/log.h X 2008,2010 -./contrib/zkt/man/dnssec-zkt.8 X 2009 -./contrib/zkt/man/dnssec-zkt.8.pdf X 2009 -./contrib/zkt/man/zkt-conf.8 X 2010 -./contrib/zkt/man/zkt-conf.8.html X 2010 -./contrib/zkt/man/zkt-conf.8.org X 2010 -./contrib/zkt/man/zkt-conf.8.pdf X 2010 -./contrib/zkt/man/zkt-keyman.8 X 2010 -./contrib/zkt/man/zkt-keyman.8.html X 2010 -./contrib/zkt/man/zkt-keyman.8.pdf X 2010 -./contrib/zkt/man/zkt-ls.8 X 2010 -./contrib/zkt/man/zkt-ls.8.html X 2010 -./contrib/zkt/man/zkt-ls.8.pdf X 2010 -./contrib/zkt/man/zkt-signer.8 X 2010 -./contrib/zkt/man/zkt-signer.8.html X 2010 -./contrib/zkt/man/zkt-signer.8.pdf X 2010 -./contrib/zkt/misc.c X 2008,2009,2010 -./contrib/zkt/misc.h X 2008,2009,2010 -./contrib/zkt/ncparse.c X 2008,2009,2010 -./contrib/zkt/ncparse.h X 2008,2009 -./contrib/zkt/nscomm.c X 2009,2010 -./contrib/zkt/nscomm.h X 2009,2010 -./contrib/zkt/rollover.c X 2008,2009,2010 -./contrib/zkt/rollover.h X 2008,2009 -./contrib/zkt/soaserial.c X 2009 -./contrib/zkt/soaserial.h X 2009 -./contrib/zkt/strlist.c X 2008,2009 -./contrib/zkt/strlist.h X 2008 -./contrib/zkt/tags X 2008,2009,2010 -./contrib/zkt/tcap.c X 2010 -./contrib/zkt/tcap.h X 2010 -./contrib/zkt/zconf.c X 2008,2009,2010 -./contrib/zkt/zconf.h X 2008,2009,2010 -./contrib/zkt/zfparse.c X 2010 -./contrib/zkt/zfparse.h X 2010 -./contrib/zkt/zkt-conf.c X 2010 -./contrib/zkt/zkt-keyman.c X 2010 -./contrib/zkt/zkt-ls.c X 2010 -./contrib/zkt/zkt-signer.c X 2010 -./contrib/zkt/zkt-soaserial.c X 2008,2013 -./contrib/zkt/zkt.c X 2008,2009,2010 -./contrib/zkt/zkt.h X 2008 -./contrib/zkt/zone.c X 2008,2009,2010 -./contrib/zkt/zone.h X 2008 -./contrib/zone-edit.sh.in SH 2010,2012 +./contrib/zkt-1.1.2/CHANGELOG X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/LICENSE X 2008,2014 +./contrib/zkt-1.1.2/Makefile.in X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/README X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/README.logging X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/TODO X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/config.h.in X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/config_zkt.h X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/configure X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/configure.ac X 2009,2010,2014 +./contrib/zkt-1.1.2/debug.h X 2008,2014 +./contrib/zkt-1.1.2/dki.c X 2008,2009,2010,2013,2014 +./contrib/zkt-1.1.2/dki.h X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/doc/KeyRollover.ms X 2009,2014 +./contrib/zkt-1.1.2/doc/rfc5011.txt X 2009,2014 +./contrib/zkt-1.1.2/domaincmp.c X 2008,2010,2014 +./contrib/zkt-1.1.2/domaincmp.h X 2008,2010,2014 +./contrib/zkt-1.1.2/examples/dnssec.conf X 2010,2014 +./contrib/zkt-1.1.2/examples/flat/dyn.example.net/Kdyn.example.net.+007+30323.key X 2010,2014 +./contrib/zkt-1.1.2/examples/flat/dyn.example.net/Kdyn.example.net.+007+30323.private X 2010,2014 +./contrib/zkt-1.1.2/examples/flat/dyn.example.net/Kdyn.example.net.+007+52935.key X 2010,2014 +./contrib/zkt-1.1.2/examples/flat/dyn.example.net/Kdyn.example.net.+007+52935.private X 2010,2014 +./contrib/zkt-1.1.2/examples/flat/dyn.example.net/zktlog-dyn.example.net. X 2010,2014 +./contrib/zkt-1.1.2/examples/flat/example.net/dnssec.conf X 2010,2014 +./contrib/zkt-1.1.2/examples/flat/example.net/z.db X 2010,2014 +./contrib/zkt-1.1.2/examples/flat/example.net/zktlog-example.net. X 2010,2014 +./contrib/zkt-1.1.2/examples/flat/sub.example.net/zktlog-sub.example.net. X 2010,2014 +./contrib/zkt-1.1.2/examples/hierarchical/log/zktlog-example.de. X 2010,2014 +./contrib/zkt-1.1.2/examples/hierarchical/log/zktlog-sub.example.de. X 2010,2014 +./contrib/zkt-1.1.2/examples/zkt-ls.sh X 2010,2014 +./contrib/zkt-1.1.2/examples/zkt-signer.sh X 2010,2014 +./contrib/zkt-1.1.2/log.c X 2008,2010,2014 +./contrib/zkt-1.1.2/log.h X 2008,2010,2014 +./contrib/zkt-1.1.2/man/dnssec-zkt.8 X 2009,2014 +./contrib/zkt-1.1.2/man/zkt-conf.8 X 2010,2014 +./contrib/zkt-1.1.2/man/zkt-conf.8.html X 2010,2014 +./contrib/zkt-1.1.2/man/zkt-conf.8.org X 2010,2014 +./contrib/zkt-1.1.2/man/zkt-conf.8.pdf X 2010,2014 +./contrib/zkt-1.1.2/man/zkt-keyman.8 X 2010,2014 +./contrib/zkt-1.1.2/man/zkt-keyman.8.html X 2010,2014 +./contrib/zkt-1.1.2/man/zkt-keyman.8.pdf X 2010,2014 +./contrib/zkt-1.1.2/man/zkt-ls.8 X 2010,2014 +./contrib/zkt-1.1.2/man/zkt-ls.8.html X 2010,2014 +./contrib/zkt-1.1.2/man/zkt-ls.8.pdf X 2010,2014 +./contrib/zkt-1.1.2/man/zkt-signer.8 X 2010,2014 +./contrib/zkt-1.1.2/man/zkt-signer.8.html X 2010,2014 +./contrib/zkt-1.1.2/man/zkt-signer.8.pdf X 2010,2014 +./contrib/zkt-1.1.2/misc.c X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/misc.h X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/ncparse.c X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/ncparse.h X 2008,2009,2014 +./contrib/zkt-1.1.2/nscomm.c X 2009,2010,2014 +./contrib/zkt-1.1.2/nscomm.h X 2009,2010,2014 +./contrib/zkt-1.1.2/rollover.c X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/rollover.h X 2008,2009,2014 +./contrib/zkt-1.1.2/soaserial.c X 2009,2014 +./contrib/zkt-1.1.2/soaserial.h X 2009,2014 +./contrib/zkt-1.1.2/strlist.c X 2008,2009,2014 +./contrib/zkt-1.1.2/strlist.h X 2008,2014 +./contrib/zkt-1.1.2/tags X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/tcap.c X 2010,2014 +./contrib/zkt-1.1.2/tcap.h X 2010,2014 +./contrib/zkt-1.1.2/zconf.c X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/zconf.h X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/zfparse.c X 2010,2014 +./contrib/zkt-1.1.2/zfparse.h X 2010,2014 +./contrib/zkt-1.1.2/zkt-conf.c X 2010,2014 +./contrib/zkt-1.1.2/zkt-keyman.c X 2010,2014 +./contrib/zkt-1.1.2/zkt-ls.c X 2010,2014 +./contrib/zkt-1.1.2/zkt-signer.c X 2010,2014 +./contrib/zkt-1.1.2/zkt-soaserial.c X 2008,2013,2014 +./contrib/zkt-1.1.2/zkt.c X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/zkt.h X 2008,2014 +./contrib/zkt-1.1.2/zone.c X 2008,2009,2010,2014 +./contrib/zkt-1.1.2/zone.h X 2008,2014 ./doc/Makefile.in MAKE 2000,2001,2004,2005,2006,2007,2012 ./doc/arm/Bv9ARM-book.xml SGML 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014 ./doc/arm/Bv9ARM.ch01.html X 2000,2001,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014