1994-09-22 19:46:15 +00:00
|
|
|
/*
|
|
|
|
* from ns.h 4.33 (Berkeley) 8/23/90
|
1995-08-20 21:19:18 +00:00
|
|
|
* $Id: ns_glob.h,v 1.2 1995/05/30 03:48:50 rgrimes Exp $
|
1994-09-22 19:46:15 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* ++Copyright++ 1986
|
|
|
|
* -
|
|
|
|
* Copyright (c) 1986
|
|
|
|
* The Regents of the University of California. All rights reserved.
|
1995-05-30 03:57:47 +00:00
|
|
|
*
|
1994-09-22 19:46:15 +00:00
|
|
|
* Redistribution and use in source and binary forms, with or without
|
|
|
|
* modification, are permitted provided that the following conditions
|
|
|
|
* are met:
|
|
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer.
|
|
|
|
* 2. 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.
|
|
|
|
* 3. All advertising materials mentioning features or use of this software
|
|
|
|
* must display the following acknowledgement:
|
|
|
|
* This product includes software developed by the University of
|
|
|
|
* California, Berkeley and its contributors.
|
|
|
|
* 4. 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.
|
1995-05-30 03:57:47 +00:00
|
|
|
*
|
1994-09-22 19:46:15 +00:00
|
|
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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.
|
|
|
|
* -
|
|
|
|
* Portions Copyright (c) 1993 by Digital Equipment Corporation.
|
1995-05-30 03:57:47 +00:00
|
|
|
*
|
1994-09-22 19:46:15 +00:00
|
|
|
* Permission to use, copy, modify, and distribute this software for any
|
|
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
|
|
* copyright notice and this permission notice appear in all copies, and that
|
|
|
|
* the name of Digital Equipment Corporation not be used in advertising or
|
|
|
|
* publicity pertaining to distribution of the document or software without
|
|
|
|
* specific, written prior permission.
|
1995-05-30 03:57:47 +00:00
|
|
|
*
|
1994-09-22 19:46:15 +00:00
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
|
|
|
|
* WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
|
|
|
|
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
|
|
|
|
* CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
|
|
|
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
|
|
|
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
|
|
|
|
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
|
|
|
* SOFTWARE.
|
|
|
|
* -
|
|
|
|
* --Copyright--
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Global variables for the name server.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
DECL int debug INIT(0);
|
|
|
|
DECL FILE *ddt INIT(NULL);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* list of open streams */
|
|
|
|
DECL struct qstream *streamq INIT(QSTREAM_NULL);
|
|
|
|
|
|
|
|
/* list of datagram interfaces */
|
|
|
|
DECL struct qdatagram *datagramq INIT(QDATAGRAM_NULL);
|
|
|
|
|
|
|
|
/* often set to the current time */
|
|
|
|
DECL struct timeval tt;
|
|
|
|
|
|
|
|
/* head of allocated queries */
|
1995-08-20 21:19:18 +00:00
|
|
|
DECL struct qinfo *nsqhead INIT(QINFO_NULL);
|
1994-09-22 19:46:15 +00:00
|
|
|
|
|
|
|
/* list of forwarding hosts */
|
|
|
|
DECL struct fwdinfo *fwdtab INIT(NULL);
|
|
|
|
|
|
|
|
/* datagram socket */
|
|
|
|
DECL int ds INIT(-1);
|
|
|
|
|
|
|
|
/* listening TCP socket */
|
|
|
|
DECL int vs INIT(-1);
|
|
|
|
|
|
|
|
/* received SIGHUP, need to reload db */
|
|
|
|
DECL int needreload INIT(0);
|
|
|
|
|
|
|
|
/* need to call ns_maint()*/
|
|
|
|
DECL int needmaint INIT(0);
|
|
|
|
|
|
|
|
/* how often does ns_maint() need to be called, in seconds? */
|
|
|
|
/* (beware: this is also the upper bound on named_xfer real time) */
|
|
|
|
DECL int maint_interval INIT(15*60);
|
|
|
|
|
1995-08-20 21:19:18 +00:00
|
|
|
#ifdef CLEANCACHE
|
|
|
|
/* What's the minimum interval between cache cleanings? */
|
|
|
|
DECL int cache_interval INIT(60*60);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef XSTATS
|
|
|
|
/* What's the minimum interval between stats output? */
|
|
|
|
DECL int stats_interval INIT(60*60);
|
|
|
|
#endif
|
|
|
|
|
1994-09-22 19:46:15 +00:00
|
|
|
/* need to reload secondary zone(s) */
|
|
|
|
DECL int needzoneload INIT(0);
|
|
|
|
|
|
|
|
/* need to dump database */
|
|
|
|
DECL int needToDoadump INIT(0);
|
|
|
|
|
|
|
|
/* need to checkpoint cache */
|
|
|
|
DECL int needToChkpt INIT(0);
|
|
|
|
|
|
|
|
/* need to dump statistics */
|
|
|
|
DECL int needStatsDump INIT(0);
|
|
|
|
|
|
|
|
#ifdef ALLOW_UPDATES
|
|
|
|
/* need to exit (may need to doadump
|
|
|
|
* first, if database has changed since
|
|
|
|
* it was last dumped/booted). Gets
|
|
|
|
* set by shutdown signal handler
|
|
|
|
* (onintr)
|
|
|
|
*/
|
|
|
|
DECL int needToExit INIT(0);
|
|
|
|
#endif /* ALLOW_UPDATES */
|
1995-08-20 21:19:18 +00:00
|
|
|
#ifdef XSTATS
|
|
|
|
/* need to exit
|
|
|
|
* set by shutdown signal handler
|
|
|
|
* (onintr)
|
|
|
|
*/
|
|
|
|
DECL int needToExit INIT(0);
|
|
|
|
#endif /* XSTATS */
|
1994-09-22 19:46:15 +00:00
|
|
|
|
|
|
|
#ifdef QRYLOG
|
|
|
|
/* is query logging turned on? */
|
|
|
|
DECL int qrylog INIT(0);
|
|
|
|
#endif /*QRYLOG*/
|
|
|
|
|
|
|
|
/* is this a root server that should therefore not recurse? */
|
|
|
|
DECL int NoRecurse INIT(0);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* We keep a list of favored networks headed by nettab.
|
|
|
|
* There are three (possibly empty) parts to this list, in this order:
|
|
|
|
* 1. directly attached (sub)nets.
|
|
|
|
* 2. logical networks for directly attached subnetted networks.
|
|
|
|
* 3. networks from the sort list.
|
|
|
|
* The value (*elocal) points at the first entry in the second part of the
|
|
|
|
* list, if any, while (*enettab) points at the first entry in the sort list.
|
|
|
|
*/
|
|
|
|
DECL struct netinfo *nettab INIT(NULL);
|
|
|
|
DECL struct netinfo **elocal INIT(&nettab);
|
|
|
|
DECL struct netinfo **enettab INIT(&nettab);
|
|
|
|
|
|
|
|
#ifdef XFRNETS
|
|
|
|
/* list of nets we're willing to zone transfer to */
|
|
|
|
DECL struct netinfo *xfrnets INIT(NULL);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef BOGUSNS
|
|
|
|
/* list of bogus nameservers */
|
|
|
|
DECL struct netinfo *boglist INIT(NULL);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* loopback net */
|
|
|
|
DECL struct netinfo netloop;
|
|
|
|
|
|
|
|
/* port to which we send queries */
|
|
|
|
DECL u_int16_t ns_port;
|
|
|
|
|
|
|
|
/* Source addr of last packet */
|
|
|
|
DECL struct sockaddr_in from_addr;
|
|
|
|
|
|
|
|
/* Source addr size of last packet */
|
|
|
|
DECL int from_len;
|
|
|
|
|
|
|
|
/* Used by ns_stats */
|
|
|
|
DECL time_t boottime,
|
|
|
|
resettime;
|
|
|
|
|
|
|
|
/* next query to retry */
|
|
|
|
DECL struct qinfo *retryqp INIT(NULL);
|
|
|
|
|
|
|
|
/* default boot file */
|
|
|
|
#ifdef BOOTFILE
|
|
|
|
DECL char *bootfile INIT(BOOTFILE);
|
|
|
|
#else
|
|
|
|
DECL char *bootfile INIT(_PATH_BOOT);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* default debug output file */
|
|
|
|
#ifdef DEBUGFILE
|
|
|
|
DECL char *debugfile INIT(DEBUGFILE);
|
|
|
|
#else
|
|
|
|
DECL char *debugfile INIT(_PATH_DEBUG);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef WANT_PIDFILE
|
|
|
|
/* file to store current named PID */
|
|
|
|
#ifdef PIDFILE
|
|
|
|
DECL char *PidFile INIT(PIDFILE);
|
|
|
|
#else
|
|
|
|
DECL char *PidFile INIT(_PATH_PIDFILE);
|
|
|
|
#endif
|
|
|
|
#endif /*WANT_PIDFILE*/
|
|
|
|
|
|
|
|
/* zone information */
|
|
|
|
DECL struct zoneinfo *zones INIT(NULL);
|
|
|
|
|
|
|
|
/* number of zones in use */
|
|
|
|
DECL int nzones INIT(0);
|
|
|
|
|
|
|
|
/* true on slave server */
|
|
|
|
DECL int forward_only INIT(0);
|
|
|
|
|
|
|
|
/* set if we need a priming */
|
|
|
|
DECL int needs_prime_cache INIT(0);
|
|
|
|
|
|
|
|
/* is cache being primed */
|
|
|
|
DECL int priming INIT(0);
|
|
|
|
|
|
|
|
/* ptrs to dnames in msg for dn_comp */
|
|
|
|
DECL u_char *dnptrs[40];
|
|
|
|
|
|
|
|
/* number of names in addinfo */
|
|
|
|
DECL int addcount;
|
|
|
|
|
|
|
|
/* name of cache file */
|
|
|
|
DECL char *cache_file;
|
|
|
|
|
|
|
|
#ifdef LOCALDOM
|
|
|
|
/* our local domain (deprecated in favor of resolv.conf) */
|
|
|
|
DECL char *localdomain;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef SLAVE_FORWARD
|
|
|
|
/* retry time when a slave */
|
|
|
|
DECL int slave_retry INIT(4);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef STATSFILE
|
1995-08-20 21:19:18 +00:00
|
|
|
DECL const char *statsfile INIT(STATSFILE);
|
1994-09-22 19:46:15 +00:00
|
|
|
#else
|
1995-08-20 21:19:18 +00:00
|
|
|
DECL const char *statsfile INIT(_PATH_STATS);
|
1994-09-22 19:46:15 +00:00
|
|
|
#endif
|
|
|
|
|
1995-08-20 21:19:18 +00:00
|
|
|
DECL const char sendtoStr[] INIT("sendto");
|
1994-09-22 19:46:15 +00:00
|
|
|
|
|
|
|
/* defined in version.c, can't use DECL/INIT */
|
|
|
|
extern char Version[];
|
|
|
|
|
|
|
|
/* max value of xfers_running */
|
1995-08-20 21:19:18 +00:00
|
|
|
DECL int max_xfers_running INIT(MAX_XFERS_RUNNING);
|
|
|
|
|
|
|
|
/* max number of transfers to any given name server */
|
|
|
|
DECL int max_xfers_per_ns INIT(MAX_XFERS_PER_NS);
|
|
|
|
|
|
|
|
#ifndef INVQ
|
|
|
|
/* should IQUERY be answered bogusly rather than with NOTIMPL? */
|
|
|
|
DECL int fake_iquery INIT(0);
|
|
|
|
#endif
|