Import BIND-4.9.3-beta26, replacing the older beta24.
There are some important bugfixes here, but nothing earth-shattering. In particular, the Lame Delegation detection is massively sped up, meaning that a lame server can be given up on in a few seconds, rather than taking 75 seconds. This will be a big win for large mailing list machines, eg: freefall. Note: this is a remote cvs import... Backups have been made.. :-) Obtained from: Paul Vixie <paul@vix.com>
This commit is contained in:
parent
4f33dfabd5
commit
bb9011d0b7
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/vendor/bind4/dist/; revision=11710
@ -1,6 +1,6 @@
|
||||
#if !defined(lint) && !defined(SABER)
|
||||
static char sccsid[] = "@(#)db_glue.c 4.4 (Berkeley) 6/1/90";
|
||||
static char rcsid[] = "$Id: db_glue.c,v 8.7 1995/06/29 09:26:17 vixie Exp $";
|
||||
static char rcsid[] = "$Id: db_glue.c,v 1.1.1.3 1995/10/23 09:26:04 peter Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -1179,14 +1179,17 @@ ctimel(l)
|
||||
|
||||
/*
|
||||
* This is nec'y for systems that croak when deref'ing unaligned pointers.
|
||||
* SPARC is an example.
|
||||
* SPARC is an example. Note that in_addr.s_addr needn't be a 32-bit int,
|
||||
* so we want to avoid bcopy and let the compiler do the casting for us.
|
||||
*/
|
||||
struct in_addr
|
||||
data_inaddr(data)
|
||||
const u_char *data;
|
||||
{
|
||||
struct in_addr ret;
|
||||
u_int32_t tmp;
|
||||
|
||||
bcopy((char *)data, (char *)&ret, INADDRSZ);
|
||||
bcopy((char *)data, (char *)&tmp, INADDRSZ);
|
||||
ret.s_addr = tmp;
|
||||
return (ret);
|
||||
}
|
||||
|
@ -53,18 +53,18 @@
|
||||
.\"
|
||||
.\" @(#)named.8 6.6 (Berkeley) 2/14/89
|
||||
.\"
|
||||
.TH @INDOT_U@NAMED @SYS_OPS_EXT_U@ "April 17, 1993"
|
||||
.TH NAMED 8 "June 20, 1995"
|
||||
.UC 4
|
||||
.SH NAME
|
||||
@INDOT@named \- Internet domain name server
|
||||
named \- Internet domain name server
|
||||
.SH SYNOPSIS
|
||||
.B @INDOT@named
|
||||
.B named
|
||||
[
|
||||
.B \-d
|
||||
.I debuglevel
|
||||
] [
|
||||
.B \-p
|
||||
.I port#
|
||||
.IR port# [\fB/\fP\fIlocalport#\fP]
|
||||
] [{\-b}
|
||||
.I bootfile
|
||||
] [
|
||||
@ -90,8 +90,13 @@ A number after the ``d'' determines the level of
|
||||
messages printed.
|
||||
.TP
|
||||
.B \-p
|
||||
Use a different port number. The default is the standard port number
|
||||
as returned by getservbyname(@LIB_NETWORK_EXT@) for service ``domain''.
|
||||
Use nonstandard port numbers. The default is the standard port number
|
||||
as returned by getservbyname(3) for service ``domain''.
|
||||
The argument can specify two port numbers separated by a slash (``\fB/\fP'')
|
||||
in which case the first port is that used when contacting remote servers,
|
||||
and the second one is the service port bound by the local instance of
|
||||
.IR named .
|
||||
This is used mostly for debugging purposes.
|
||||
.TP
|
||||
.B \-b
|
||||
Use an alternate boot file. This is optional and allows you to
|
||||
@ -99,11 +104,14 @@ specify a file with a leading dash.
|
||||
.TP
|
||||
.B \-q
|
||||
Trace all incoming queries if \fInamed\fP has been compiled with
|
||||
\fIQRYLOG\fP defined.
|
||||
\fIQRYLOG\fP defined. \fINOTE:\fP this option is deprecated in favour
|
||||
of the boot file directive ``options query-log''.
|
||||
.TP
|
||||
.B \-r
|
||||
Turns recursion off in the server. Answers can come only from local
|
||||
(primary or secondary) zones. This can be used on root servers.
|
||||
\fINOTE:\fP this option is deprecated in favour
|
||||
of the boot file directive ``options no-recursion''.
|
||||
.PP
|
||||
Any additional argument is taken as the name of the boot file.
|
||||
If multiple boot files are specified, only the last is used.
|
||||
@ -130,7 +138,9 @@ secondary CC.Berkeley.EDU 128.32.137.8 128.32.137.3 cc.zone.bak
|
||||
secondary 6.32.128.IN-ADDR.ARPA 128.32.137.8 128.32.137.3 cc.rev.bak
|
||||
primary 0.0.127.IN-ADDR.ARPA localhost.rev
|
||||
forwarders 10.0.0.78 10.2.0.78
|
||||
; slave
|
||||
limit max-xfers 10
|
||||
limit datasize 64M
|
||||
options forward-only query-log fake-iquery
|
||||
|
||||
.DT
|
||||
.fi
|
||||
@ -151,7 +161,7 @@ root servers, and this list changes periodically.
|
||||
The first example ``primary'' line states that the file
|
||||
``berkeley.edu.zone'' contains authoritative data for the ``Berkeley.EDU''
|
||||
zone. The file ``berkeley.edu.zone'' contains data in the master file
|
||||
format described in RFC883. All domain names are relative to the origin, in
|
||||
format described in RFC 883. All domain names are relative to the origin, in
|
||||
this case, ``Berkeley.EDU'' (see below for a more detailed description).
|
||||
The second ``primary'' line states that the file ``ucbhosts.rev'' contains
|
||||
authoritative data for the domain ``32.128.IN-ADDR.ARPA,'' which is used to
|
||||
@ -180,29 +190,26 @@ specifies one or more forwarders, then the server will send all queries for
|
||||
data not in the cache to the forwarders first. Each forwarder will be asked
|
||||
in turn until an answer is returned or the list is exhausted. If no answer
|
||||
is forthcoming from a forwarder, the server will continue as it would have
|
||||
without the forwarders line unless it is in ``slave'' mode. The forwarding
|
||||
facility is useful to cause a large sitewide cache to be generated on a
|
||||
master, and to reduce traffic over links to outside servers. It can also be
|
||||
used to allow servers to run that do not have access directly to the
|
||||
Internet, but wish to act as though they do.
|
||||
without the forwarders line unless it is in ``forward-only'' mode. The
|
||||
forwarding facility is useful to cause a large sitewide cache to be
|
||||
generated on a master, and to reduce traffic over links to outside servers.
|
||||
It can also be used to allow servers to run that do not have direct access
|
||||
to the Internet, but wish to look up exterior names anyway.
|
||||
.LP
|
||||
The ``slave'' line (shown commented out) is used to put the server in slave
|
||||
mode. In this mode, the server will only make queries to forwarders. This
|
||||
option is normally used on machine that wish to run a server but for
|
||||
physical or administrative reasons cannot be given access to the Internet,
|
||||
but have access to a host that does have access.
|
||||
The ``slave'' line (deprecated) is allowed for backward compatibility. Its
|
||||
meaning is identical to ``options forward-only''.
|
||||
.LP
|
||||
The ``sortlist'' line can be used to indicate networks that are to be
|
||||
preferred over other networks Queries for host addresses from hosts on the
|
||||
preferred over other networks. Queries for host addresses from hosts on the
|
||||
same network as the server will receive responses with local network
|
||||
addresses listed first, then addresses on the sort list, then other
|
||||
addresses.
|
||||
.LP
|
||||
The ``xfrnets'' directive (not shown) can be used to implement primative
|
||||
The ``xfrnets'' directive (not shown) can be used to implement primitive
|
||||
access control. If this directive is given, then your name server will
|
||||
only answer zone transfer requests from hosts which are on networks listed
|
||||
in your ``xfrnets'' directives. This directive may also be given as
|
||||
``tcplist'' for compatibility with older, interrim servers.
|
||||
``tcplist'' for compatibility with older, interim servers.
|
||||
.LP
|
||||
The ``include'' directive (not shown) can be used to process the contents
|
||||
of some other file as though they appeared in place of the ``include''
|
||||
@ -218,9 +225,38 @@ as dotted quads, not as domain names). This is useful when you know that
|
||||
some popular server has bad data in a zone or cache, and you want to avoid
|
||||
contamination while the problem is being fixed.
|
||||
.LP
|
||||
The ``max-fetch'' directive (not shown) can be used to override the default
|
||||
limit (which is 10) to the number of named-xfer subprocesses which \s-1BIND\s+1
|
||||
can spawn at any one time.
|
||||
The ``limit'' directive can be used to change \s-1BIND\s+1's internal limits,
|
||||
some of which (\fBdatasize\fP, for example) are implemented by the system and
|
||||
others (like \fBtransfers-in\fP) by \s-1BIND\s+1 itself. The number following
|
||||
the limit name can be scaled by postfixing a ``k,'' ``m,'' or ``g'' for
|
||||
kilobytes, megabytes, and gigabytes respectively.
|
||||
\fBdatasize\fP's argument sets the process data size enforced by the kernel.
|
||||
\fINote:\fP not all systems provide a call to implement this -- on such
|
||||
systems, the use of the \fBdatasize\fP parameter of ``limit'' will result in
|
||||
a warning message.
|
||||
\fBtransfers-in\fP's argument is the number of \fInamed-xfer\fP subprocesses
|
||||
which \s-1BIND\s+1 will spawn at any one time.
|
||||
\fBtransfers-per-ns\fP's argument is the maximum number of zone transfers to
|
||||
be simultaneously initiated to any given remote name server.
|
||||
.LP
|
||||
The ``options'' directive introduces a boolean specifier that changes the
|
||||
behaviour of \s-1BIND\s+1. More than one option can be specified in a single
|
||||
directive. The currently defined options are as follows:
|
||||
\fBno-recursion\fP, which will cause \s-1BIND\s+1 to answer with a referral
|
||||
rather than actual data whenever it receives a query for a name it is not
|
||||
authoritative for -- don't set this on a server that is listed in any host's
|
||||
\fIresolv.conf\fP file;
|
||||
\fBquery-log\fP, which causes all queries to be logged via
|
||||
syslog(8) -- this is a lot of data, don't turn it on lightly;
|
||||
\fBforward-only\fP, which causes the server to query only its forwarders --
|
||||
this option is normally used on machine that wishes to run a server but for
|
||||
physical or administrative reasons cannot be given access to the Internet;
|
||||
and \fBfake-iquery\fP, which tells \s-1BIND\s+1 to send back a useless and
|
||||
bogus reply to ``inverse queries'' rather than responding with an error --
|
||||
this is helpful if you have a lot of microcomputers or SunOS hosts or both.
|
||||
.LP
|
||||
The ``max-fetch'' directive (not shown) is allowed for backward compatibility;
|
||||
its meaning is identical to ``limit transfers-in''.
|
||||
.PP
|
||||
The master file consists of control information and a list of resource
|
||||
records for objects in the zone of the forms:
|
||||
@ -278,7 +314,7 @@ the canonical name for an alias (domain)
|
||||
.IP SOA
|
||||
marks the start of a zone of authority (domain of originating host,
|
||||
domain address of maintainer, a serial number and the following
|
||||
parameters in seconds: refresh, retry, expire and minimum TTL (see RFC883)).
|
||||
parameters in seconds: refresh, retry, expire and minimum TTL (see RFC 883)).
|
||||
.IP NULL
|
||||
a null resource record (no format or data)
|
||||
.IP RP
|
||||
@ -334,18 +370,19 @@ nameserver did not have complete information.
|
||||
.sp
|
||||
The following signals have the specified effect when sent to the
|
||||
server process using the
|
||||
.IR kill (@CMD_EXT@)
|
||||
.IR kill (1)
|
||||
command.
|
||||
.IP SIGHUP
|
||||
Causes server to read named.boot and reload database. If the server
|
||||
Causes server to read named.boot and reload the database. If the server
|
||||
is built with the FORCED_RELOAD compile-time option, then SIGHUP will
|
||||
also cause the server to check the serial number on all secondary zones.
|
||||
Normally the serial numbers are only checked at the SOA-specified intervals.
|
||||
.IP SIGINT
|
||||
Dumps current data base and cache to /var/tmp/named_dump.db
|
||||
Dumps the current data base and cache to /var/tmp/named_dump.db
|
||||
.IP SIGIOT
|
||||
Dumps statistics data into /var/tmp/named.stats if the server is
|
||||
compiled -DSTATS. Statistics data is appended to the file.
|
||||
compiled with -DSTATS. Statistics data is appended to the file. Some
|
||||
systems use SIGABRT rather than SIGIOT for this.
|
||||
.IP SIGSYS
|
||||
Dumps the profiling data in /var/tmp if the server is compiled
|
||||
with profiling (server forks, chdirs and exits).
|
||||
@ -360,7 +397,7 @@ Turns on debugging; each SIGUSR1 increments debug level.
|
||||
Turns off debugging completely.
|
||||
(SIGFPE on older systems without SIGUSR2)
|
||||
.IP SIGWINCH
|
||||
Toggles logging of all incoming queries via syslog(@SYS_OPS_EXT@)
|
||||
Toggles logging of all incoming queries via syslog(8)
|
||||
(requires server to have been built with the QRYLOG option).
|
||||
.SH FILES
|
||||
.nf
|
||||
@ -372,7 +409,7 @@ Toggles logging of all incoming queries via syslog(@SYS_OPS_EXT@)
|
||||
/var/tmp/named.stats nameserver statistics data
|
||||
.fi
|
||||
.SH "SEE ALSO"
|
||||
kill(@CMD_EXT@), gethostbyname(@LIB_NETWORK_EXT@), signal(@SYSCALL_EXT@),
|
||||
resolver(@LIB_NETWORK_EXT@), resolver(@FORMAT_EXT@), hostname(@DESC_EXT@),
|
||||
kill(1), gethostbyname(3), signal(2),
|
||||
resolver(3), resolver(5), hostname(7),
|
||||
RFC 882, RFC 883, RFC 973, RFC 974, RFC 1033, RFC 1034, RFC 1035, RFC 1123,
|
||||
\fIName Server Operations Guide for \s-1BIND\s+1\fR
|
||||
|
@ -1,6 +1,6 @@
|
||||
#if !defined(lint) && !defined(SABER)
|
||||
static char sccsid[] = "@(#)ns_forw.c 4.32 (Berkeley) 3/3/91";
|
||||
static char rcsid[] = "$Id: ns_forw.c,v 8.5 1995/06/29 09:26:17 vixie Exp $";
|
||||
static char rcsid[] = "$Id: ns_forw.c,v 1.1.1.3 1995/10/23 09:26:14 peter Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -374,6 +374,29 @@ nslookup(nsp, qp, syslogdname, sysloginfo)
|
||||
dname);
|
||||
continue;
|
||||
}
|
||||
#ifdef INADDR_LOOPBACK
|
||||
if (ntohl(data_inaddr(dp->d_data).s_addr) ==
|
||||
INADDR_LOOPBACK) {
|
||||
syslog(LOG_INFO, "Bogus LOOPBACK A RR for %s",
|
||||
dname);
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
#ifdef INADDR_BROADCAST
|
||||
if (ntohl(data_inaddr(dp->d_data).s_addr) ==
|
||||
INADDR_BROADCAST) {
|
||||
syslog(LOG_INFO, "Bogus BROADCAST A RR for %s",
|
||||
dname);
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
#ifdef IN_MULTICAST
|
||||
if (IN_MULTICAST(ntohl(data_inaddr(dp->d_data).s_addr))) {
|
||||
syslog(LOG_INFO, "Bogus MULTICAST A RR for %s",
|
||||
dname);
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
* Don't use records that may become invalid to
|
||||
* reference later when we do the rtt computation.
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* from ns.h 4.33 (Berkeley) 8/23/90
|
||||
* $Id: ns_glob.h,v 8.3 1995/06/19 20:55:40 vixie Exp $
|
||||
* $Id: ns_glob.h,v 1.1.1.3 1995/10/23 09:26:16 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -177,9 +177,6 @@ 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;
|
||||
|
@ -1,6 +1,6 @@
|
||||
#if !defined(lint) && !defined(SABER)
|
||||
static char sccsid[] = "@(#)ns_init.c 4.38 (Berkeley) 3/21/91";
|
||||
static char rcsid[] = "$Id: ns_init.c,v 8.7 1995/06/29 09:26:17 vixie Exp $";
|
||||
static char rcsid[] = "$Id: ns_init.c,v 1.1.1.3 1995/10/23 09:26:17 peter Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -65,7 +65,6 @@ static char rcsid[] = "$Id: ns_init.c,v 8.7 1995/06/29 09:26:17 vixie Exp $";
|
||||
#include <arpa/nameser.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <syslog.h>
|
||||
#include <signal.h>
|
||||
#include <resolv.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
@ -80,7 +79,7 @@ enum limit { Datasize };
|
||||
|
||||
static void zoneinit __P((struct zoneinfo *)),
|
||||
get_forwarders __P((FILE *)),
|
||||
boot_read __P((char *)),
|
||||
boot_read __P((const char *filename, int includefile)),
|
||||
#ifdef DEBUG
|
||||
content_zone __P((int)),
|
||||
#endif
|
||||
@ -175,7 +174,7 @@ ns_init(bootfile)
|
||||
content_zone(nzones - 1);
|
||||
}
|
||||
#endif
|
||||
boot_read(bootfile);
|
||||
boot_read(bootfile, 0);
|
||||
|
||||
/* erase all old zones that were not found */
|
||||
for (zp = &zones[1]; zp < &zones[nzones]; zp++) {
|
||||
@ -217,8 +216,9 @@ ns_init(bootfile)
|
||||
* Set up to recurse.
|
||||
*/
|
||||
static void
|
||||
boot_read(bootfile)
|
||||
char *bootfile;
|
||||
boot_read(filename, includefile)
|
||||
const char *filename;
|
||||
int includefile;
|
||||
{
|
||||
register struct zoneinfo *zp;
|
||||
char buf[BUFSIZ], obuf[BUFSIZ], *source;
|
||||
@ -236,8 +236,8 @@ boot_read(bootfile)
|
||||
int slineno; /* Saved global line number. */
|
||||
int i;
|
||||
|
||||
if ((fp = fopen(bootfile, "r")) == NULL) {
|
||||
syslog(LOG_ERR, "%s: %m", bootfile);
|
||||
if ((fp = fopen(filename, "r")) == NULL) {
|
||||
syslog(LOG_ERR, "%s: %m", filename);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -265,11 +265,11 @@ boot_read(bootfile)
|
||||
get_netlist(fp, enettab, ALLOW_NETS, buf);
|
||||
continue;
|
||||
} else if (strcasecmp(buf, "max-fetch") == 0) {
|
||||
max_xfers_running = getnum(fp, bootfile, GETNUM_NONE);
|
||||
max_xfers_running = getnum(fp, filename, GETNUM_NONE);
|
||||
continue;
|
||||
} else if (strcasecmp(buf, "limit") == 0) {
|
||||
(void) getword(buf, sizeof(buf), fp);
|
||||
ns_limit(buf, getnum(fp, bootfile, GETNUM_SCALED));
|
||||
ns_limit(buf, getnum(fp, filename, GETNUM_SCALED));
|
||||
continue;
|
||||
} else if (strcasecmp(buf, "options") == 0) {
|
||||
while (getword(buf, sizeof(buf), fp))
|
||||
@ -300,7 +300,7 @@ boot_read(bootfile)
|
||||
#endif
|
||||
} else if (strcasecmp(buf, "include") == 0) {
|
||||
if (getword(buf, sizeof(buf), fp))
|
||||
boot_read(buf);
|
||||
boot_read(buf, 1);
|
||||
continue;
|
||||
} else if (strncasecmp(buf, "cache", 5) == 0) {
|
||||
type = Z_CACHE;
|
||||
@ -343,7 +343,7 @@ boot_read(bootfile)
|
||||
} else {
|
||||
syslog(LOG_NOTICE,
|
||||
"%s: line %d: unknown directive '%s'\n",
|
||||
bootfile, lineno, buf);
|
||||
filename, lineno, buf);
|
||||
endline(fp);
|
||||
continue;
|
||||
}
|
||||
@ -353,14 +353,14 @@ boot_read(bootfile)
|
||||
*/
|
||||
if (!getword(obuf, sizeof(obuf), fp)) {
|
||||
syslog(LOG_NOTICE, "%s: line %d: missing origin\n",
|
||||
bootfile, lineno);
|
||||
filename, lineno);
|
||||
continue;
|
||||
}
|
||||
i = strlen(obuf);
|
||||
if ((obuf[i-1] == '.') && (i != 1))
|
||||
syslog(LOG_INFO,
|
||||
"%s: line %d: zone \"%s\" has trailing dot\n",
|
||||
bootfile, lineno, obuf);
|
||||
filename, lineno, obuf);
|
||||
while ((--i >= 0) && (obuf[i] == '.'))
|
||||
obuf[i] = '\0';
|
||||
dprintf(1, (ddt, "zone origin %s", obuf[0]?obuf:"."));
|
||||
@ -369,7 +369,7 @@ boot_read(bootfile)
|
||||
*/
|
||||
if (!getword(buf, sizeof(buf), fp)) {
|
||||
syslog(LOG_NOTICE, "%s: line %d: missing %s\n",
|
||||
bootfile, lineno,
|
||||
filename, lineno,
|
||||
#ifdef STUBS
|
||||
(type == Z_SECONDARY || type == Z_STUB)
|
||||
#else
|
||||
@ -437,14 +437,14 @@ boot_read(bootfile)
|
||||
if (zp->z_refresh <= 0) {
|
||||
syslog(LOG_NOTICE,
|
||||
"%s: line %d: bad refresh time '%s', ignored\n",
|
||||
bootfile, lineno, buf);
|
||||
filename, lineno, buf);
|
||||
zp->z_refresh = 0;
|
||||
} else if (cache_file == NULL)
|
||||
cache_file = source;
|
||||
#else
|
||||
syslog(LOG_NOTICE,
|
||||
"%s: line %d: cache refresh ignored\n",
|
||||
bootfile, lineno);
|
||||
filename, lineno);
|
||||
#endif
|
||||
endline(fp);
|
||||
}
|
||||
@ -495,7 +495,7 @@ boot_read(bootfile)
|
||||
else {
|
||||
syslog(LOG_NOTICE,
|
||||
"%s: line %d: bad flag '%s'\n",
|
||||
bootfile, lineno, flag);
|
||||
filename, lineno, flag);
|
||||
}
|
||||
flag = cp;
|
||||
}
|
||||
@ -571,7 +571,7 @@ boot_read(bootfile)
|
||||
* We will always transfer this zone again
|
||||
* after a reload.
|
||||
*/
|
||||
sprintf(buf, "/%s/NsTmp%ld.%d", _PATH_TMPDIR,
|
||||
sprintf(buf, "%s/NsTmp%ld.%d", _PATH_TMPDIR,
|
||||
(long)getpid(), tmpnum++);
|
||||
source = savestr(buf);
|
||||
zp->z_flags |= Z_TMP_FILE;
|
||||
@ -930,8 +930,10 @@ ns_option(name)
|
||||
{
|
||||
if (!strcasecmp(name, "no-recursion")) {
|
||||
NoRecurse = 1;
|
||||
#ifdef QRYLOG
|
||||
} else if (!strcasecmp(name, "query-log")) {
|
||||
qrylog = 1;
|
||||
#endif
|
||||
} else if (!strcasecmp(name, "forward-only")) {
|
||||
forward_only = 1;
|
||||
#ifndef INVQ
|
||||
|
@ -1,6 +1,6 @@
|
||||
#if !defined(lint) && !defined(SABER)
|
||||
static char sccsid[] = "@(#)ns_main.c 4.55 (Berkeley) 7/1/91";
|
||||
static char rcsid[] = "$Id: ns_main.c,v 8.8 1995/06/29 09:26:17 vixie Exp $";
|
||||
static char rcsid[] = "$Id: ns_main.c,v 1.1.1.3 1995/10/23 09:26:19 peter Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -169,8 +169,7 @@ main(argc, argv, envp)
|
||||
struct qstream *nextsp;
|
||||
int nfds;
|
||||
const int on = 1;
|
||||
int len;
|
||||
int rfd, size;
|
||||
int rfd, size, len;
|
||||
time_t lasttime, maxctime;
|
||||
u_char buf[BUFSIZ];
|
||||
#ifdef POSIX_SIGNALS
|
||||
@ -179,6 +178,9 @@ main(argc, argv, envp)
|
||||
#ifndef SYSV
|
||||
struct sigvec vec;
|
||||
#endif
|
||||
#endif
|
||||
#ifdef NeXT
|
||||
int old_sigmask;
|
||||
#endif
|
||||
fd_set tmpmask;
|
||||
struct timeval t, *tp;
|
||||
@ -374,10 +376,10 @@ main(argc, argv, envp)
|
||||
}
|
||||
#endif /*WANT_PIDFILE && PID_FIX*/
|
||||
exit(1);
|
||||
} else { /* Retry opening the socket a few times */
|
||||
my_close(vs);
|
||||
sleep(1);
|
||||
}
|
||||
/* Retry opening the socket a few times */
|
||||
my_close(vs);
|
||||
sleep(3);
|
||||
}
|
||||
if (listen(vs, 5) != 0) {
|
||||
syslog(LOG_ERR, "listen(vs, 5): %m");
|
||||
@ -385,7 +387,7 @@ main(argc, argv, envp)
|
||||
}
|
||||
|
||||
/*
|
||||
* named would be terminated if one of these is sent and no handler
|
||||
* named would be terminated if one of these is sent and no handler.
|
||||
*/
|
||||
(void) signal(SIGINT, setdumpflg);
|
||||
(void) signal(SIGQUIT, setchkptflg);
|
||||
@ -405,6 +407,8 @@ main(argc, argv, envp)
|
||||
/*
|
||||
* Get list of local addresses and set up datagram sockets.
|
||||
*/
|
||||
FD_ZERO(&mask);
|
||||
FD_SET(vs, &mask);
|
||||
getnetconf();
|
||||
|
||||
/*
|
||||
@ -572,10 +576,9 @@ main(argc, argv, envp)
|
||||
nfds = FD_SETSIZE; /* Bulletproofing */
|
||||
syslog(LOG_NOTICE, "Return from getdtablesize() > FD_SETSIZE");
|
||||
}
|
||||
FD_ZERO(&mask);
|
||||
FD_SET(vs, &mask);
|
||||
for (dqp = datagramq; dqp != QDATAGRAM_NULL; dqp = dqp->dq_next)
|
||||
FD_SET(dqp->dq_dfd, &mask);
|
||||
#ifdef NeXT
|
||||
old_sigmask = sigblock(sigmask(SIGCHLD));
|
||||
#endif
|
||||
for (;;) {
|
||||
#ifdef DEBUG
|
||||
if (ddt && debug == 0) {
|
||||
@ -648,7 +651,13 @@ main(argc, argv, envp)
|
||||
} else
|
||||
tp = NULL;
|
||||
tmpmask = mask;
|
||||
#ifdef NeXT
|
||||
sigsetmask(old_sigmask); /* Let queued signals run. */
|
||||
#endif
|
||||
n = select(nfds, &tmpmask, (fd_set *)NULL, (fd_set *)NULL, tp);
|
||||
#ifdef NeXT
|
||||
old_sigmask = sigblock(sigmask(SIGCHLD));
|
||||
#endif
|
||||
if (n < 0 && errno != EINTR) {
|
||||
syslog(LOG_ERR, "select: %m");
|
||||
sleep(60);
|
||||
@ -661,7 +670,8 @@ main(argc, argv, envp)
|
||||
dqp = dqp->dq_next) {
|
||||
if (FD_ISSET(dqp->dq_dfd, &tmpmask))
|
||||
for (udpcnt = 0; udpcnt < 42; udpcnt++) { /*XXX*/
|
||||
from_len = sizeof(from_addr);
|
||||
int from_len = sizeof(from_addr);
|
||||
|
||||
if ((n = recvfrom(dqp->dq_dfd, (char *)buf, sizeof(buf), 0,
|
||||
(struct sockaddr *)&from_addr, &from_len)) < 0)
|
||||
{
|
||||
@ -702,7 +712,8 @@ main(argc, argv, envp)
|
||||
** which, if our accept() failed, will bring us back here.
|
||||
*/
|
||||
if (FD_ISSET(vs, &tmpmask)) {
|
||||
from_len = sizeof(from_addr);
|
||||
int from_len = sizeof(from_addr);
|
||||
|
||||
rfd = accept(vs,
|
||||
(struct sockaddr *)&from_addr,
|
||||
&from_len);
|
||||
@ -1173,7 +1184,7 @@ static void
|
||||
opensocket(dqp)
|
||||
register struct qdatagram *dqp;
|
||||
{
|
||||
int n, m;
|
||||
int m, n;
|
||||
int on = 1;
|
||||
|
||||
/*
|
||||
@ -1223,6 +1234,7 @@ opensocket(dqp)
|
||||
exit(1);
|
||||
#endif
|
||||
}
|
||||
FD_SET(dqp->dq_dfd, &mask);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1527,34 +1539,38 @@ sqflush(allbut)
|
||||
/* void
|
||||
* dqflush(gen)
|
||||
* close/deallocate all the udp sockets, unless `gen' != (time_t)0
|
||||
* in which case all those not matching this generation will
|
||||
* be deleted except the 0.0.0.0 element, and syslog() will
|
||||
* be called whenever something is deleted.
|
||||
* in which case all those not from this generation (except 0.0.0.0)
|
||||
* will be deleted, and syslog() will be called.
|
||||
* known bugs:
|
||||
* the above text is impenetrable.
|
||||
* side effects:
|
||||
* global list `datagramq' is modified
|
||||
* global list `datagramq' is modified.
|
||||
*/
|
||||
void
|
||||
dqflush(gen)
|
||||
register time_t gen;
|
||||
{
|
||||
register struct qdatagram *dqp, *pqp, *nqp;
|
||||
register struct qdatagram *this, *prev, *next;
|
||||
|
||||
for (pqp = NULL, dqp = datagramq;
|
||||
dqp != NULL;
|
||||
pqp = dqp, dqp = nqp) {
|
||||
nqp = dqp->dq_next;
|
||||
prev = NULL;
|
||||
for (this = datagramq; this != NULL; this = next) {
|
||||
next = this->dq_next;
|
||||
if (gen != (time_t)0) {
|
||||
if (dqp->dq_addr.s_addr == INADDR_ANY ||
|
||||
dqp->dq_gen == gen)
|
||||
if (this->dq_addr.s_addr == INADDR_ANY ||
|
||||
this->dq_gen == gen) {
|
||||
prev = this;
|
||||
continue;
|
||||
}
|
||||
syslog(LOG_NOTICE, "interface [%s] missing; deleting",
|
||||
inet_ntoa(dqp->dq_addr));
|
||||
inet_ntoa(this->dq_addr));
|
||||
}
|
||||
if (pqp != NULL)
|
||||
pqp->dq_next = dqp->dq_next;
|
||||
FD_CLR(this->dq_dfd, &mask);
|
||||
my_close(this->dq_dfd);
|
||||
free(this);
|
||||
if (prev == NULL)
|
||||
datagramq = next;
|
||||
else
|
||||
datagramq = dqp->dq_next;
|
||||
free(dqp);
|
||||
prev->dq_next = next;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
#if !defined(lint) && !defined(SABER)
|
||||
static char sccsid[] = "@(#)ns_maint.c 4.39 (Berkeley) 3/2/91";
|
||||
static char rcsid[] = "$Id: ns_maint.c,v 8.8 1995/06/29 09:26:17 vixie Exp $";
|
||||
static char rcsid[] = "$Id: ns_maint.c,v 1.1.1.3 1995/10/23 09:26:20 peter Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -362,6 +362,9 @@ startxfer(zp)
|
||||
#ifdef GEN_AXFR
|
||||
char class_str[10];
|
||||
#endif
|
||||
#ifdef POSIX_SIGNALS
|
||||
sigset_t sset;
|
||||
#endif
|
||||
|
||||
dprintf(1, (ddt, "startxfer() %s\n", zp->z_origin));
|
||||
|
||||
@ -441,12 +444,22 @@ startxfer(zp)
|
||||
|
||||
gettime(&tt);
|
||||
#ifndef SYSV
|
||||
#if defined(POSIX_SIGNALS)
|
||||
sigemptyset(&sset);
|
||||
sigaddset(&sset,SIGCHLD);
|
||||
sigprocmask(SIG_BLOCK,&sset,NULL);
|
||||
#else
|
||||
omask = sigblock(sigmask(SIGCHLD));
|
||||
#endif
|
||||
#endif
|
||||
if ((pid = vfork()) == -1) {
|
||||
syslog(LOG_ERR, "xfer vfork: %m");
|
||||
#ifndef SYSV
|
||||
#if defined(POSIX_SIGNALS)
|
||||
sigprocmask(SIG_UNBLOCK,&sset,NULL);
|
||||
#else
|
||||
(void) sigsetmask(omask);
|
||||
#endif
|
||||
#endif
|
||||
zp->z_time = tt.tv_sec + 10;
|
||||
return;
|
||||
@ -466,8 +479,12 @@ startxfer(zp)
|
||||
xfers_running++;
|
||||
zp->z_time = tt.tv_sec + MAX_XFER_TIME;
|
||||
#ifndef SYSV
|
||||
#if defined(POSIX_SIGNALS)
|
||||
sigprocmask(SIG_UNBLOCK,&sset,NULL);
|
||||
#else
|
||||
(void) sigsetmask(omask);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
const char *
|
||||
|
@ -1,6 +1,6 @@
|
||||
#if !defined(lint) && !defined(SABER)
|
||||
static char sccsid[] = "@(#)ns_req.c 4.47 (Berkeley) 7/1/91";
|
||||
static char rcsid[] = "$Id: ns_req.c,v 8.8 1995/06/29 09:26:17 vixie Exp $";
|
||||
static char rcsid[] = "$Id: ns_req.c,v 1.1.1.3 1995/10/23 09:26:22 peter Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -922,10 +922,32 @@ req_query(hp, cpp, eom, qsp, buflenp, msglenp, msg, dfd, from)
|
||||
*/
|
||||
delete_all(np, class, T_NS);
|
||||
#endif
|
||||
for (dp = np->n_data; dp ; dp = dp->d_next)
|
||||
if (dp->d_zone && match(dp, class, T_NS))
|
||||
break;
|
||||
if (dp) {
|
||||
/*
|
||||
* we know the child zone exists but are
|
||||
* missing glue.
|
||||
*
|
||||
* nslookup has called sysquery() to get the
|
||||
* missing glue.
|
||||
*
|
||||
* for UDP, drop the response and let the
|
||||
* client retry. for TCP, we should probably
|
||||
* (XXX) hold open the TCP connection for a
|
||||
* while in case the sysquery() comes back
|
||||
* soon. meanwhile we SERVFAIL.
|
||||
*/
|
||||
if (qsp)
|
||||
goto do_servfail;
|
||||
break;
|
||||
}
|
||||
np = np->n_parent;
|
||||
}
|
||||
goto fetchns; /* Try again. */
|
||||
case FW_SERVFAIL:
|
||||
do_servfail:
|
||||
hp->rcode = SERVFAIL;
|
||||
#ifdef DATUMREFCNT
|
||||
free_nsp(nsp);
|
||||
|
@ -1,6 +1,6 @@
|
||||
#if !defined(lint) && !defined(SABER)
|
||||
static char sccsid[] = "@(#)ns_resp.c 4.65 (Berkeley) 3/3/91";
|
||||
static char rcsid[] = "$Id: ns_resp.c,v 8.8 1995/07/07 07:33:52 vixie Exp $";
|
||||
static char rcsid[] = "$Id: ns_resp.c,v 1.1.1.3 1995/10/23 09:26:24 peter Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -270,10 +270,10 @@ ns_resp(msg, msglen)
|
||||
* Here we handle bad responses from servers.
|
||||
* Several possibilities come to mind:
|
||||
* The server is sick and returns SERVFAIL
|
||||
* The server returns some garbage opcode (its sick)
|
||||
* The server returns some garbage opcode (it's sick)
|
||||
* The server can't understand our query and return FORMERR
|
||||
* In all these cases, we simply drop the packet and force
|
||||
* a retry. This will make him look bad due to unresponsiveness.
|
||||
* In all these cases, we drop the packet, disable retries on
|
||||
* this server and immediately force a retry.
|
||||
*/
|
||||
if ((hp->rcode != NOERROR && hp->rcode != NXDOMAIN)
|
||||
#ifndef NCACHE
|
||||
@ -299,6 +299,19 @@ ns_resp(msg, msglen)
|
||||
nameserIncr(from_addr.sin_addr, nssRcvdErr);
|
||||
break;
|
||||
}
|
||||
/* mark server as bad */
|
||||
if (!qp->q_fwd)
|
||||
for (i = 0; i < (int)qp->q_naddr; i++)
|
||||
if (qp->q_addr[i].ns_addr.sin_addr.s_addr
|
||||
== from_addr.sin_addr.s_addr)
|
||||
qp->q_addr[i].nretry = MAXRETRY;
|
||||
/* XXX - doesn't handle responses sent from the wrong
|
||||
* interface on a multihomed server
|
||||
*/
|
||||
if (qp->q_fwd ||
|
||||
qp->q_addr[qp->q_curaddr].ns_addr.sin_addr.s_addr
|
||||
== from_addr.sin_addr.s_addr)
|
||||
retry(qp);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -357,9 +370,15 @@ ns_resp(msg, msglen)
|
||||
|
||||
if (type == T_NS && samedomain(qp->q_domain, name)) {
|
||||
nameserIncr(from_addr.sin_addr, nssRcvdLDel);
|
||||
/* mark server as bad */
|
||||
if (!qp->q_fwd)
|
||||
for (i = 0; i < (int)qp->q_naddr; i++)
|
||||
if (qp->q_addr[i].ns_addr.sin_addr.s_addr
|
||||
== from_addr.sin_addr.s_addr)
|
||||
qp->q_addr[i].nretry = MAXRETRY;
|
||||
#ifdef LAME_LOGGING
|
||||
if (class == C_IN &&
|
||||
!haveComplained((char*)nhash(name),
|
||||
!haveComplained((char*)nhash(inet_etoa(&from_addr)),
|
||||
(char*)nhash(qp->q_domain)))
|
||||
syslog(LAME_LOGGING,
|
||||
"Lame server on '%s' (in '%s'?): %s%s\n",
|
||||
@ -369,6 +388,13 @@ ns_resp(msg, msglen)
|
||||
);
|
||||
|
||||
#endif /* LAME_LOGGING */
|
||||
/* XXX - doesn't handle responses sent from the wrong
|
||||
* interface on a multihomed server
|
||||
*/
|
||||
if (qp->q_fwd ||
|
||||
qp->q_addr[qp->q_curaddr].ns_addr.sin_addr.s_addr
|
||||
== from_addr.sin_addr.s_addr)
|
||||
retry(qp);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -1002,16 +1028,16 @@ ns_resp(msg, msglen)
|
||||
const char *result;
|
||||
|
||||
if (qp->q_addr[i].ns != NULL) {
|
||||
dprintf(1, (ddt, "ns_resp: ns %s rcnt %d (%s)\n",
|
||||
qp->q_addr[i].ns->d_data,
|
||||
qp->q_addr[i].ns->d_rcnt,
|
||||
result));
|
||||
if ((--(qp->q_addr[i].ns->d_rcnt)))
|
||||
result = busy;
|
||||
else {
|
||||
free((char*)qp->q_addr[i].ns);
|
||||
result = freed;
|
||||
}
|
||||
dprintf(1, (ddt, "ns_resp: ns %s rcnt %d (%s)\n",
|
||||
qp->q_addr[i].ns->d_data,
|
||||
qp->q_addr[i].ns->d_rcnt,
|
||||
result));
|
||||
}
|
||||
if (qp->q_addr[i].nsdata != NULL) {
|
||||
if ((--(qp->q_addr[i].nsdata->d_rcnt)))
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* options.h - specify the conditionally-compiled features
|
||||
* vix 28mar92 [moved out of the Makefile because they were getting too big]
|
||||
*
|
||||
* $Id: options.h,v 4.9.1.16 1994/07/22 08:42:30 vixie Exp $
|
||||
* $Id: options.h,v 1.1.1.1 1995/10/23 09:26:10 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -70,11 +70,14 @@
|
||||
* mpa = Mark Andrews of CSIRO - DMS
|
||||
* rossc = Ross Cartlidge of The Univeritsy of Sydney
|
||||
* mtr = Marshall Rose of TPC.INT
|
||||
* bg = Benoit Grange of INRIA
|
||||
* ckd = Christopher Davis of Kapor Enterprises
|
||||
* gns = Greg Shapiro of WPI
|
||||
*/
|
||||
|
||||
#define DEBUG /* enable -d flag and SIGUSR[12] support (ucb) */
|
||||
/*#define ALLOW_T_UNSPEC /* enable the "unspec" RR type for old athena (ucb) */
|
||||
#define INVQ /* enable inverse queries (nslookup) (ucb/vix) */
|
||||
/*#define INVQ /* enable inverse queries (nslookup) (ucb/vix) */
|
||||
/*#define DSTORAGE /* debug malloc overruns using storage.o (ucb/vix) */
|
||||
/*#define DMALLOC /* trace malloc orphans using dmalloc.o (vix) */
|
||||
#define XFRNETS /* enable "xfrnets" command in named.boot (vix) */
|
||||
@ -92,13 +95,14 @@
|
||||
#define DOTTED_SERIAL /* if you want to be able to specify dotted serial#s */
|
||||
/*#define SENSIBLE_DOTS /* if you want dotted serial#s to make numeric sense */
|
||||
#define NCACHE /* negative caching (anant@isi.edu) */
|
||||
#define VALIDATE /* validation procedure (anant@isi.edu) */
|
||||
/*#define VALIDATE /* validation procedure (anant@isi.edu) (DO NOT USE!)*/
|
||||
/*#define SHORT_FNAMES /* file names used in named-xfer need to be short */
|
||||
#define RESOLVSORT /* allow sorting of addresses in gethostbyname (mpa) */
|
||||
#define STUBS /* allow transfers of NS only for a zone (mpa) (EXP) */
|
||||
/*#define SUNSECURITY /* obscure fix for sunos (see below) */
|
||||
#define STUBS /* allow transfers of NS only for a zone (mpa) */
|
||||
#ifndef LOGFAC
|
||||
#define LOGFAC LOG_DAEMON /* what syslog facility should named use? */
|
||||
/*#define SECURE_ZONES /* if you want to inhibit world access to zone(s) */
|
||||
#endif
|
||||
#define SECURE_ZONES /* if you want to inhibit world access to zones (gns)*/
|
||||
#define ROUND_ROBIN /* rotate databuf list after each access (mtr) */
|
||||
#define ADDAUTH /* return NS and glue w/ authorative answers (mpa) */
|
||||
#define RFC1535 /* use RFC 1535 default for "search" list (vix) */
|
||||
@ -109,8 +113,12 @@
|
||||
#define GETSER_LOGGING LOG_INFO /* log errors/timeouts getting serial number */
|
||||
/*#define RETURNSOA /* good code that the world isn't ready for yet */
|
||||
#define CLEANCACHE /* useful and necessary in the face of NCACHE */
|
||||
#define PURGE_ZONE /* remove all traces of a zone when reloading (mpa) */
|
||||
#define STATS /* keep nameserver statistics; uses more memory */
|
||||
/*#define RENICE /* named-xfer should run at normal priority */
|
||||
#define RENICE /* named-xfer should run at normal priority */
|
||||
#define XSTATS /* extended statistics, syslogged periodically (bg) */
|
||||
/*#define BIND_NOTIFY /* experimental - do not enable in customer products */
|
||||
/*#define LOC_RR /* support for (draft) LOC record parsing (ckd) */
|
||||
|
||||
/*--------------------------------------------*
|
||||
* no user-servicable parts beyond this point *
|
||||
@ -149,12 +157,10 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(SUNOS4) || (defined(sun) && defined(SYSV))
|
||||
# ifndef SUNSECURITY
|
||||
# define SUNSECURITY /* mandatory on suns and rlogin etc. depend on this */
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef LAME_LOGGING
|
||||
# define LAME_DELEGATION
|
||||
#endif
|
||||
|
||||
#if defined(XSTATS) && !defined(STATS)
|
||||
# define STATS
|
||||
#endif
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* defs.h - include or define things that aren't present on all systems
|
||||
/* portability.h - include or define things that aren't present on all systems
|
||||
* vixie@decwrl 26dec92 [new]
|
||||
*
|
||||
* $Id: portability.h,v 4.9.1.24 1994/07/22 08:42:30 vixie Exp $
|
||||
* $Id: portability.h,v 1.1.1.1 1995/10/23 09:26:09 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -69,6 +69,22 @@
|
||||
# define TIME_H_INCLUDED
|
||||
#endif
|
||||
|
||||
#ifdef ISC
|
||||
# ifndef _POSIX_SOURCE
|
||||
# define _POSIX_SOURCE
|
||||
# endif
|
||||
# define SYSV
|
||||
# define SVR3
|
||||
# define _SYSV3
|
||||
# define NEED_STRTOUL
|
||||
# define NEED_FTRUNCATE
|
||||
# define USE_POSIX
|
||||
# include <sys/bsdtypes.h>
|
||||
# include <sys/sioctl.h>
|
||||
# include <sys/stream.h>
|
||||
# include <net/errno.h>
|
||||
#endif
|
||||
|
||||
#if defined(__convex__)
|
||||
# if !defined(_POSIX_SOURCE)
|
||||
# define _POSIX_SOURCE
|
||||
@ -85,6 +101,14 @@
|
||||
# define setitimer(a,b,c) __setitimer(a,b,c)
|
||||
#endif
|
||||
|
||||
/* This is defined in the Makefile for ISC compiles. */
|
||||
#if defined(ISC)
|
||||
# define ftruncate(a,b) __ftruncate(a,b)
|
||||
# define USE_MEMCPY
|
||||
# define USE_UTIME
|
||||
# define HAVE_FCHMOD 0
|
||||
#endif
|
||||
|
||||
/* SCO UNIX defines only this unique symbol, apparently. */
|
||||
#if defined(M_UNIX)
|
||||
/* XXX - why is this POSIX_SOURCE instead of _POSIX_SOURCE? */
|
||||
@ -109,13 +133,26 @@
|
||||
# define BSD 43
|
||||
#endif
|
||||
|
||||
#if defined(_POSIX_SOURCE) || defined(__sgi) || defined(ultrix) || \
|
||||
#if defined(_AUX_SOURCE)
|
||||
# define vfork fork
|
||||
# define NEED_STRERROR
|
||||
# define NEED_STRTOUL
|
||||
# define SIG_FN void
|
||||
# define USE_MEMCPY
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(SVR4) && !defined(SYSV)
|
||||
# define SYSV
|
||||
#endif
|
||||
|
||||
#if defined(_POSIX_SOURCE) || defined(__sgi) || defined(__ultrix) || \
|
||||
defined(__hpux) || (defined(BSD) && (BSD >= 199103)) || \
|
||||
(defined(sun) && defined(SYSV))
|
||||
# define USE_POSIX
|
||||
#endif
|
||||
|
||||
#if defined(ultrix) && !defined(BSD)
|
||||
#if defined(__ultrix) && !defined(BSD)
|
||||
# define BSD 42
|
||||
#endif
|
||||
|
||||
@ -123,28 +160,50 @@
|
||||
# define RISCOS_BSD
|
||||
#endif
|
||||
|
||||
#if defined(SVR4) && !defined(SYSV)
|
||||
# define SYSV
|
||||
#if defined(SYSV) || defined(__ultrix) || defined(__osf__) \
|
||||
|| (defined(BSD) && BSD >= 199306) || defined(linux)
|
||||
# define USE_UTIME
|
||||
# define HAVE_SETVBUF
|
||||
#endif
|
||||
|
||||
#if defined(SYSV) || defined(ultrix) || (defined(BSD) && BSD >= 199306)
|
||||
# define USE_UTIME
|
||||
#if defined(SYSV) && !defined(SVR4)
|
||||
# define vfork fork
|
||||
#endif
|
||||
|
||||
#if defined(sun) || defined(SVR4)
|
||||
# define NETREAD_BROKEN
|
||||
#endif
|
||||
|
||||
#if defined(BSD) && BSD >= 199006 && !defined(i386) && !defined(RISCOS_BSD)
|
||||
# define HAVE_DAEMON
|
||||
#endif
|
||||
|
||||
#if !defined(BSD) || (BSD <= 199006)
|
||||
# if !defined(NeXT)
|
||||
# define NEED_INETADDR
|
||||
# endif
|
||||
# define NEED_INETATON
|
||||
#endif
|
||||
|
||||
#if defined(__hpux)
|
||||
# if defined(__STDC__)
|
||||
# define select(a,b,c,d,e) select(a, (int *)b, (int *)c, (int *)d, e)
|
||||
# define ctime(x) ctime((const time_t *)x)
|
||||
# endif /*__STDC__*/
|
||||
# ifndef SYSV
|
||||
# define USE_UTIME
|
||||
# define setlinebuf(x) setvbuf(x, NULL, _IOLBF, BUFSIZ)
|
||||
# define SIGWINCH SIGWINDOW
|
||||
# if !defined(SYSV)
|
||||
# define USE_UTIME
|
||||
# define setlinebuf(x) setvbuf(x, NULL, _IOLBF, BUFSIZ)
|
||||
# if !defined(SIGWINCH) /*pre 9.0*/
|
||||
# define SIGWINCH SIGWINDOW
|
||||
# endif
|
||||
# endif /*SYSV*/
|
||||
/* XXX: better autodetection of the need for "struct linger" would be nice */
|
||||
# if 0
|
||||
struct linger {
|
||||
int l_onoff; /* option on/off */
|
||||
int l_linger; /* linger time */
|
||||
};
|
||||
# endif
|
||||
#endif /*__hpux*/
|
||||
|
||||
#if defined(_SEQUENT_)
|
||||
@ -219,6 +278,10 @@ extern long pathconf __P((const char *path, int name));
|
||||
# define INT_MAX 2147483647 /* max decimal value of an "int" */
|
||||
#endif
|
||||
|
||||
#ifndef RAND_MAX
|
||||
# define RAND_MAX 0x7fffffff
|
||||
#endif
|
||||
|
||||
#ifndef IN_LOOPBACKNET
|
||||
# define IN_LOOPBACKNET 127
|
||||
#endif
|
||||
@ -245,8 +308,10 @@ int strcasecmp __P((const char *, const char *));
|
||||
!defined(NeXT) && \
|
||||
!defined(__convex__) && \
|
||||
!defined(USE_POSIX)
|
||||
extern void syslog();
|
||||
extern char *ctime __P((const time_t *clock));
|
||||
# if !defined(NCR)
|
||||
extern void syslog();
|
||||
# endif
|
||||
extern char *ctime __P((const time_t *clock));
|
||||
extern int close(), setitimer(), recv(), sendto(), sigsetmask(),
|
||||
atoi(), getpid(), fork(), read(), ioctl(),
|
||||
setsockopt(), socket(), bind();
|
||||
@ -260,7 +325,11 @@ extern int close(), setitimer(), recv(), sendto(), sigsetmask(),
|
||||
* define them in terms of bcopy et al if !defined(__STDC__)
|
||||
* but that's more work.
|
||||
*/
|
||||
#if defined(USE_MEMCPY)
|
||||
# define bcopy(a,b,c) memcpy(b,a,c)
|
||||
#else
|
||||
# define bcopy(a,b,c) memmove(b,a,c)
|
||||
#endif
|
||||
# define bzero(a,b) memset(a,0,b)
|
||||
# define bcmp(a,b,c) memcmp(a,b,c)
|
||||
# else
|
||||
@ -274,19 +343,27 @@ extern int bcmp();
|
||||
&& !defined(USE_POSIX) && !defined(apollo) && !defined(sequent) \
|
||||
&& !defined(M_UNIX)
|
||||
# define NEED_STRERROR
|
||||
#if !defined(ultrix) && !defined(NCR)
|
||||
# define NEED_PUTENV
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(SUNOS4)
|
||||
# define NEED_STRERROR
|
||||
# if defined(sun386)
|
||||
# define pid_t int
|
||||
# define NEED_STRCASECMP
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if (!defined(BSD) || (BSD < 43))
|
||||
# define NEED_MKSTEMP
|
||||
# if !defined(ultrix) && !defined(apollo)
|
||||
# if !defined(__ultrix) && !defined(apollo)
|
||||
# define NEED_STRCASECMP
|
||||
# define NEED_MKTEMP
|
||||
# define NEED_STRPBRK
|
||||
# if !defined(SVR4)
|
||||
# define NEED_STRPBRK
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
@ -302,7 +379,7 @@ extern int bcmp();
|
||||
#ifndef SIG_FN
|
||||
# ifdef BSD
|
||||
# if (BSD >= 199006) || defined(NeXT) || defined(__osf__) || defined(sun) \
|
||||
|| defined(ultrix) || defined(apollo) || defined(POSIX_SIGNALS)
|
||||
|| defined(__ultrix) || defined(apollo) || defined(POSIX_SIGNALS)
|
||||
# define SIG_FN void /* signal-catching functions return void */
|
||||
# else
|
||||
# define SIG_FN int /* signal-catching functions return int */
|
||||
@ -319,7 +396,7 @@ extern u_long htonl(), ntohl();
|
||||
#endif
|
||||
|
||||
#if defined(USE_POSIX) && !defined(sun) && !defined(__sgi) \
|
||||
&& !defined(__convex__) && !defined(ultrix)
|
||||
&& !defined(__convex__) && !defined(__ultrix) && !defined(_AUX_SOURCE)
|
||||
# define PORT_NONBLOCK O_NONBLOCK
|
||||
# define PORT_WOULDBLK EAGAIN
|
||||
#else
|
||||
@ -339,7 +416,7 @@ extern u_long htonl(), ntohl();
|
||||
#define waitpid(x,y,z) (wait3(y,z,(struct rusage *)NULL))
|
||||
#endif
|
||||
|
||||
#if defined(NeXT) || defined(_AIX)
|
||||
#if defined(NeXT) || defined(_AIX) || defined(sun386)
|
||||
# undef WIFEXITED
|
||||
# undef WEXITSTATUS
|
||||
# undef WIFSIGNALED
|
||||
@ -352,13 +429,13 @@ extern u_long htonl(), ntohl();
|
||||
#endif /* sequent */
|
||||
|
||||
#if !defined(WIFEXITED)
|
||||
# define WIFEXITED(x) (!(x & 0200))
|
||||
# define WIFEXITED(x) (!(x & 0177))
|
||||
#endif
|
||||
#if !defined(WEXITSTATUS)
|
||||
# define WEXITSTATUS(x) (x >> 8)
|
||||
#endif
|
||||
#if !defined(WIFSIGNALED)
|
||||
# define WIFSIGNALED(x) ((x & 0200) && ((x & 0200) != 0177))
|
||||
# define WIFSIGNALED(x) ((x & 0177) && ((x & 0377) != 0177))
|
||||
#endif
|
||||
#if !defined(WTERMSIG)
|
||||
# define WTERMSIG(x) (x & 0177)
|
||||
@ -394,11 +471,12 @@ extern u_long htonl(), ntohl();
|
||||
# define S_ISFIFO(m) ((m & S_IFMT) == S_IFIFO)
|
||||
#endif
|
||||
|
||||
#if (defined(ultrix) || defined(__osf__)) && defined(NEED_STRTOUL)
|
||||
#if defined(NEED_STRTOUL) && \
|
||||
(defined(__ultrix) || defined(__osf__) || defined(NeXT))
|
||||
# undef NEED_STRTOUL
|
||||
#endif
|
||||
|
||||
#if defined(ultrix) || defined(__osf__)
|
||||
#if defined(__ultrix) || defined(__osf__)
|
||||
# define MAYBE_HESIOD
|
||||
#endif
|
||||
|
||||
@ -428,6 +506,15 @@ extern u_long htonl(), ntohl();
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(BSD) || defined(__osf__) || defined(__convex__)
|
||||
# define HAVE_GETRUSAGE
|
||||
#endif
|
||||
|
||||
/* May be set in the Makefile. */
|
||||
#if defined(HAVE_GETRUSAGE)
|
||||
# include <sys/resource.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Because Convex has true library function feof() which is
|
||||
* patently wrong (it test bit _IOREAD) we need feof() as
|
||||
@ -437,6 +524,10 @@ extern u_long htonl(), ntohl();
|
||||
# define feof(p) ((p)->_flag&_IOEOF)
|
||||
#endif
|
||||
|
||||
#if defined(M_UNIX) || defined(linux)
|
||||
# define SPURIOUS_ECONNREFUSED
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Assume that a system has fchmod() unless something above says otherwise.
|
||||
*/
|
||||
|
@ -53,17 +53,17 @@
|
||||
.\"
|
||||
.\" from hostname.7 6.4 (Berkeley) 1/16/90
|
||||
.\"
|
||||
.TH @INDOT_U@NAMED.RELOAD @SYS_OPS_EXT_U@ "June 26, 1993"
|
||||
.TH NAMED.RELOAD 8 "June 26, 1993"
|
||||
.UC 5
|
||||
.SH NAME
|
||||
@INDOT@named.reload \- cause the name server to synchronize its database
|
||||
named.reload \- cause the name server to synchronize its database
|
||||
.SH DESCRIPTION
|
||||
This command sends a \s-1SIGHUP\s+1 to the running name server. This
|
||||
signal is documented in
|
||||
.IR named (@SYS_OPS_EXT@).
|
||||
.IR named (8).
|
||||
.SH BUGS
|
||||
Does not check to see if the name server is actually running, and could
|
||||
use a stale PID cache file which may result in the death of an unrelated
|
||||
process.
|
||||
.SH SEE ALSO
|
||||
@INDOT@named(@SYS_OPS_EXT@), @INDOT@named.restart(@SYS_OPS_EXT@)
|
||||
named(8), named.restart(8)
|
||||
|
@ -53,10 +53,10 @@
|
||||
.\"
|
||||
.\" from hostname.7 6.4 (Berkeley) 1/16/90
|
||||
.\"
|
||||
.TH @INDOT_U@NAMED.RESTART @SYS_OPS_EXT_U@ "June 26, 1993"
|
||||
.TH NAMED.RESTART 8 "June 26, 1993"
|
||||
.UC 5
|
||||
.SH NAME
|
||||
@INDOT@named.restart \- stop and restart the name server
|
||||
named.restart \- stop and restart the name server
|
||||
.SH DESCRIPTION
|
||||
This command sends a \s-1SIGKILL\s+1 to the running name server and then
|
||||
starts a new one.
|
||||
@ -70,4 +70,4 @@ the server could take some time to die and the new one will experience a
|
||||
fatal error if the old one isn't gone by the time it starts, you can be left
|
||||
in a situation where you have no name server at all.
|
||||
.SH SEE ALSO
|
||||
@INDOT@named(@SYS_OPS_EXT@), @INDOT@named.reload(@SYS_OPS_EXT@)
|
||||
named(8), named.reload(8)
|
||||
|
@ -53,10 +53,10 @@
|
||||
.\"
|
||||
.\" from named.8 6.6 (Berkeley) 2/14/89
|
||||
.\"
|
||||
.TH @XFER_INDOT_U@NAMED-XFER @SYS_OPS_EXT_U@ "June 26, 1993"
|
||||
.TH NAMED-XFER 8 "June 26, 1993"
|
||||
.UC 4
|
||||
.SH NAME
|
||||
@XFER_INDOT@named-xfer \- ancillary agent for inbound zone transfers
|
||||
named-xfer \- ancillary agent for inbound zone transfers
|
||||
.SH SYNOPSIS
|
||||
.B named-xfer
|
||||
.B \-z
|
||||
@ -85,7 +85,7 @@
|
||||
.SH DESCRIPTION
|
||||
.I Named-xfer
|
||||
is an ancillary program executed by
|
||||
.IR @INDOT@named (@SYS_OPS_EXT@)
|
||||
.IR named (8)
|
||||
to perform an inbound zone transfer. It is rarely executed directly, and
|
||||
only by system administrators who are trying to debug a zone transfer problem.
|
||||
See RFC's 1033, 1034, and 1035 for more information on the Internet
|
||||
@ -127,13 +127,13 @@ server itself.
|
||||
.TP
|
||||
.B \-p
|
||||
Use a different port number. The default is the standard port number
|
||||
as returned by getservbyname(@LIB_NETWORK_EXT@) for service ``domain''.
|
||||
as returned by getservbyname(3) for service ``domain''.
|
||||
.TP
|
||||
.B \-S
|
||||
Perform a restricted transfer of only the SOA, NS records and glue A records
|
||||
for the zone. The SOA record will not be loaded by named but will be used to
|
||||
determine when to verify the NS records. See the ``stubs'' directive in
|
||||
.IR @INDOT@named (@SYS_OPS_EXT@)
|
||||
.IR named (8)
|
||||
for more information.
|
||||
.PP
|
||||
Additional arguments are taken as name server addresses in so-called
|
||||
@ -141,6 +141,6 @@ Additional arguments are taken as name server addresses in so-called
|
||||
one address must be specified. Any additional addresses will be tried
|
||||
in order if the first one fails to transfer to us successfully.
|
||||
.SH "SEE ALSO"
|
||||
@INDOT@named(@SYS_OPS_EXT@), resolver(@LIB_NETWORK_EXT@), resolver(@FORMAT_EXT@), hostname(@DESC_EXT@),
|
||||
named(8), resolver(3), resolver(5), hostname(7),
|
||||
RFC 882, RFC 883, RFC 973, RFC 974, RFC 1033, RFC 1034, RFC 1035, RFC 1123,
|
||||
\fIName Server Operations Guide for \s-1BIND\s+1\fR
|
||||
|
Loading…
Reference in New Issue
Block a user