/***************************************************************** ** ** @(#) zconf.h ** ** Copyright (c) Jan 2005, Jeroen Masar, Holger Zuleger. ** 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 Jeroen Masar and Holger Zuleger 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. ** *****************************************************************/ #ifndef ZCONF_H # define ZCONF_H # define MINSEC 60L # define HOURSEC (MINSEC * 60) # define DAYSEC (HOURSEC * 24) # define WEEKSEC (DAYSEC * 7) # define YEARSEC (DAYSEC * 365) # define DAY (1) # define WEEK (DAY * 7) # define MONTH (DAY * 30) # define YEAR (DAY * 365) # define SIG_VALID_DAYS (10) /* or 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 */ # define PROPTIME ( 5 * MINSEC) /* expected slave propagation time */ /* should be small if notify is used */ #if defined (DEF_TTL) # define DEF_TTL (MAX_TTL/2) /* currently not used */ #endif # define RESIGN_INT ((SIG_VALID_DAYS - (SIG_VALID_DAYS / 3)) * DAYSEC) # define KSK_LIFETIME (1 * YEARSEC) #if 0 # 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 #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 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_RANDOM "/dev/urandom" # define NSEC3 0 /* by default nsec3 is off */ # define SALTLEN 24 /* salt length in bits (resolution is 4 bits)*/ # define ZONEDIR "." # define RECURSIVE 0 # define PRINTTIME 1 # define PRINTAGE 0 # define LJUST 0 # define LSCOLORTERM NULL /* or "" */ # define KEYSETDIR NULL /* keysets */ # define LOGFILE "" # define LOGLEVEL "error" # define LOGDOMAINDIR "" # define SYSLOGFACILITY "none" # define SYSLOGLEVEL "notice" # define VERBOSELOG 0 # define ZONEFILE "zone.db" # define DNSKEYFILE "dnskey.db" # define LOOKASIDEDOMAIN "" /* "dlv.trusted-keys.de" */ # define SIG_RANDOM NULL /* "/dev/urandom" */ # define SIG_PSEUDO 0 # define SIG_GENDS 1 # define SIG_DNSKEY_KSK 0 /* Sign DNSKEY RR with KSK only */ # define SIG_PARAM "" # define DIST_CMD NULL /* default is to run "rndc reload" */ # define NAMED_CHROOT NULL /* default is none */ #ifndef CONFIG_PATH # define CONFIG_PATH "/var/named/" #endif # define CONFIG_FILE CONFIG_PATH "dnssec.conf" # define LOCALCONF_FILE "dnssec.conf" /* external command execution path (should be set via config.h) */ #ifndef BIND_UTIL_PATH # define BIND_UTIL_PATH "/usr/local/sbin/" /* beware of trailing '/' */ #endif # define SIGNCMD BIND_UTIL_PATH "dnssec-signzone" # define KEYGENCMD BIND_UTIL_PATH "dnssec-keygen" # define RELOADCMD BIND_UTIL_PATH "rndc" typedef enum { Unixtime = 1, Incremental } serial_form_t; typedef enum { NSEC3_OFF = 0, NSEC3_ON, NSEC3_OPTOUT } nsec3_t; typedef enum { none = 0, user, local0, local1, local2, local3, local4, local5, local6, local7 } syslog_facility_t; typedef struct zconf { char *zonedir; int recursive; int printtime; int printage; int ljust; char *colorterm; long sigvalidity; /* should be less than expire time */ long max_ttl; /* should be set to the maximum used ttl in the zone */ long key_ttl; long proptime; /* expected time offset for zone propagation */ #if defined (DEF_TTL) long def_ttl; /* default ttl set in soa record */ #endif serial_form_t serialform; /* format of serial no */ long resign; /* resign interval */ int k_algo; int k2_algo; long k_life; int k_bits; char *k_random; long z_life; /* int z_algo; no longer used; renamed to k2_algo (v0.99) */ int z_bits; char *z_random; nsec3_t nsec3; /* 0 == off; 1 == on; 2 == on with optout */ int saltbits; char *view; int noexec; // char *errlog; char *logfile; char *loglevel; char *logdomaindir; char *syslogfacility; char *sysloglevel; int verboselog; int verbosity; char *keyfile; char *zonefile; char *keysetdir; char *lookaside; char *sig_random; int sig_pseudo; int sig_gends; int sig_dnskeyksk; char *sig_param; char *dist_cmd; /* cmd to run instead of "rndc reload" */ char *chroot_dir; /* chroot directory of named */ } zconf_t; extern const char *timeint2str (unsigned long val); extern zconf_t *loadconfig (const char *filename, zconf_t *z); extern zconf_t *loadconfig_fromstr (const char *str, zconf_t *z); extern zconf_t *dupconfig (const zconf_t *conf); extern zconf_t *freeconfig (zconf_t *conf); extern int setconfigpar (zconf_t *conf, char *entry, const void *pval); extern int printconfig (const char *fname, const zconf_t *cp); extern int printconfigdiff (const char *fname, const zconf_t *ref, const zconf_t *z); extern int checkconfig (const zconf_t *z); extern void setconfigversion (int version); #endif