Merge branch 'v9_9' of ssh://repo.isc.org/proj/git/prod/bind9 into v9_9

This commit is contained in:
Tinderbox User 2015-02-28 01:09:10 +00:00
commit 5b862e53bf
64 changed files with 1135 additions and 1012 deletions

25
CHANGES
View file

@ -1,3 +1,28 @@
4077. [test] Add static-stub regression test for DS NXDOMAIN
return making the static stub disappear. [RT #38564]
4076. [bug] Named could crash on shutdown with outstanding
reload / reconfig events. [RT #38622]
4075. [bug] Increase nsupdate's input buffer to accomodate
very large RRs. [RT #38689]
4074. [cleanup] Cleaned up more warnings from gcc -Wshadow. [RT #38708]
4073. [cleanup] Add libjson-c version number reporting to
"named -V"; normalize version number formatting.
[RT #38056]
4072. [func] Add a --enable-querytrace configure switch for
very verbose query tracelogging. [RT #37520]
4070. [bug] Fix a segfault in nslookup in a query such as
"nslookup isc.org AMS.SNS-PB.ISC.ORG -all".
[RT #38548]
4069. [doc] Reorganize options in the nsupdate man page.
[RT #38515]
4067. [cleanup] Reduce noise from RRL when query logging is
disabled. [RT #38648]

View file

@ -2,7 +2,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[<!ENTITY mdash "&#8212;">]>
<!--
- Copyright (C) 2004-2011, 2013, 2014 Internet Systems Consortium, Inc. ("ISC")
- Copyright (C) 2004-2011, 2013-2015 Internet Systems Consortium, Inc. ("ISC")
- Copyright (C) 2000-2003 Internet Software Consortium.
-
- Permission to use, copy, modify, and/or distribute this software for any
@ -47,6 +47,7 @@
<year>2011</year>
<year>2013</year>
<year>2014</year>
<year>2015</year>
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
</copyright>
<copyright>

View file

@ -3682,10 +3682,14 @@ isc_result_t
get_address(char *host, in_port_t myport, isc_sockaddr_t *sockaddr) {
int count;
isc_result_t result;
isc_boolean_t is_running;
isc_app_block();
is_running = isc_app_isrunning();
if (is_running)
isc_app_block();
result = bind9_getaddresses(host, myport, sockaddr, 1, &count);
isc_app_unblock();
if (is_running)
isc_app_unblock();
if (result != ISC_R_SUCCESS)
return (result);

View file

@ -585,7 +585,7 @@ version(void) {
static void
setoption(char *opt) {
if (strncasecmp(opt, "all", 4) == 0) {
if (strncasecmp(opt, "all", 3) == 0) {
show_settings(ISC_TRUE, ISC_FALSE);
} else if (strncasecmp(opt, "class=", 6) == 0) {
if (testclass(&opt[6]))

View file

@ -231,7 +231,7 @@ main(int argc, char **argv) {
int dbits = 0;
dns_ttl_t ttl = 0;
isc_boolean_t use_default = ISC_FALSE, use_nsec3 = ISC_FALSE;
isc_stdtime_t publish = 0, activate = 0, revoke = 0;
isc_stdtime_t publish = 0, activate = 0, revokekey = 0;
isc_stdtime_t inactive = 0, delete = 0;
isc_stdtime_t now;
int prepub = -1;
@ -416,7 +416,7 @@ main(int argc, char **argv) {
if (setrev || unsetrev)
fatal("-R specified more than once");
revoke = strtotime(isc_commandline_argument,
revokekey = strtotime(isc_commandline_argument,
now, now, &setrev);
unsetrev = !setrev;
break;
@ -945,7 +945,7 @@ main(int argc, char **argv) {
"was used. Revoking a ZSK is "
"legal, but undefined.\n",
program);
dst_key_settime(key, DST_TIME_REVOKE, revoke);
dst_key_settime(key, DST_TIME_REVOKE, revokekey);
}
if (setinact)

View file

@ -89,7 +89,7 @@ main(int argc, char **argv) {
isc_uint32_t flags;
isc_buffer_t buf;
isc_boolean_t force = ISC_FALSE;
isc_boolean_t remove = ISC_FALSE;
isc_boolean_t removefile = ISC_FALSE;
isc_boolean_t id = ISC_FALSE;
if (argc == 1)
@ -123,7 +123,7 @@ main(int argc, char **argv) {
}
break;
case 'r':
remove = ISC_TRUE;
removefile = ISC_TRUE;
break;
case 'R':
id = ISC_TRUE;
@ -247,7 +247,7 @@ main(int argc, char **argv) {
* Remove old key file, if told to (and if
* it isn't the same as the new file)
*/
if (remove && dst_key_alg(key) != DST_ALG_RSAMD5) {
if (removefile && dst_key_alg(key) != DST_ALG_RSAMD5) {
isc_buffer_init(&buf, oldname, sizeof(oldname));
dst_key_setflags(key, flags & ~DNS_KEYFLAG_REVOKE);
dst_key_buildfilename(key, DST_TYPE_PRIVATE, dir, &buf);

View file

@ -108,8 +108,8 @@ printtime(dst_key_t *key, int type, const char *tag, isc_boolean_t epoch,
} else if (epoch) {
fprintf(stream, "%d\n", (int) when);
} else {
time_t time = when;
output = ctime(&time);
time_t timet = when;
output = ctime(&timet);
fprintf(stream, "%s", output);
}
}

View file

@ -1313,7 +1313,7 @@ cleanup:
* Delete any RRSIG records at a node.
*/
static void
cleannode(dns_db_t *db, dns_dbversion_t *version, dns_dbnode_t *node) {
cleannode(dns_db_t *db, dns_dbversion_t *dbversion, dns_dbnode_t *node) {
dns_rdatasetiter_t *rdsiter = NULL;
dns_rdataset_t set;
isc_result_t result, dresult;
@ -1322,7 +1322,7 @@ cleannode(dns_db_t *db, dns_dbversion_t *version, dns_dbnode_t *node) {
return;
dns_rdataset_init(&set);
result = dns_db_allrdatasets(db, node, version, 0, &rdsiter);
result = dns_db_allrdatasets(db, node, dbversion, 0, &rdsiter);
check_result(result, "dns_db_allrdatasets");
result = dns_rdatasetiter_first(rdsiter);
while (result == ISC_R_SUCCESS) {
@ -1336,7 +1336,7 @@ cleannode(dns_db_t *db, dns_dbversion_t *version, dns_dbnode_t *node) {
dns_rdataset_disassociate(&set);
result = dns_rdatasetiter_next(rdsiter);
if (destroy) {
dresult = dns_db_deleterdataset(db, node, version,
dresult = dns_db_deleterdataset(db, node, dbversion,
dns_rdatatype_rrsig,
covers);
check_result(dresult, "dns_db_deleterdataset");
@ -2740,7 +2740,7 @@ writeset(const char *prefix, dns_rdatatype_t type) {
char *filename;
char namestr[DNS_NAME_FORMATSIZE];
dns_db_t *db = NULL;
dns_dbversion_t *version = NULL;
dns_dbversion_t *dbversion = NULL;
dns_diff_t diff;
dns_difftuple_t *tuple = NULL;
dns_fixedname_t fixed;
@ -2860,19 +2860,19 @@ writeset(const char *prefix, dns_rdatatype_t type) {
gclass, 0, NULL, &db);
check_result(result, "dns_db_create");
result = dns_db_newversion(db, &version);
result = dns_db_newversion(db, &dbversion);
check_result(result, "dns_db_newversion");
result = dns_diff_apply(&diff, db, version);
result = dns_diff_apply(&diff, db, dbversion);
check_result(result, "dns_diff_apply");
dns_diff_clear(&diff);
result = dns_master_dump(mctx, db, version, style, filename);
result = dns_master_dump(mctx, db, dbversion, style, filename);
check_result(result, "dns_master_dump");
isc_mem_put(mctx, filename, filenamelen + 1);
dns_db_closeversion(db, &version, ISC_FALSE);
dns_db_closeversion(db, &dbversion, ISC_FALSE);
dns_db_detach(&db);
}

View file

@ -328,12 +328,12 @@ exit_check(ns_client_t *client) {
* We are trying to abort request processing.
*/
if (client->nsends > 0) {
isc_socket_t *socket;
isc_socket_t *sock;
if (TCP_CLIENT(client))
socket = client->tcpsocket;
sock = client->tcpsocket;
else
socket = client->udpsocket;
isc_socket_cancel(socket, client->task,
sock = client->udpsocket;
isc_socket_cancel(sock, client->task,
ISC_SOCKCANCEL_SEND);
}
@ -828,16 +828,16 @@ client_sendpkg(ns_client_t *client, isc_buffer_t *buffer) {
isc_result_t result;
isc_region_t r;
isc_sockaddr_t *address;
isc_socket_t *socket;
isc_socket_t *sock;
isc_netaddr_t netaddr;
int match;
unsigned int sockflags = ISC_SOCKFLAG_IMMEDIATE;
if (TCP_CLIENT(client)) {
socket = client->tcpsocket;
sock = client->tcpsocket;
address = NULL;
} else {
socket = client->udpsocket;
sock = client->udpsocket;
address = &client->peeraddr;
isc_netaddr_fromsockaddr(&netaddr, &client->peeraddr);
@ -861,7 +861,7 @@ client_sendpkg(ns_client_t *client, isc_buffer_t *buffer) {
CTRACE("sendto");
result = isc_socket_sendto2(socket, &r, client->task,
result = isc_socket_sendto2(sock, &r, client->task,
address, pktinfo,
client->sendevent, sockflags);
if (result == ISC_R_SUCCESS || result == ISC_R_INPROGRESS) {
@ -2782,7 +2782,7 @@ void
ns_client_logv(ns_client_t *client, isc_logcategory_t *category,
isc_logmodule_t *module, int level, const char *fmt, va_list ap)
{
char msgbuf[2048];
char msgbuf[4096];
char peerbuf[ISC_SOCKADDR_FORMATSIZE];
char signerbuf[DNS_NAME_FORMATSIZE], qnamebuf[DNS_NAME_FORMATSIZE];
const char *viewname = "";

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2004, 2005, 2007, 2009, 2013 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2004, 2005, 2007, 2009, 2013, 2015 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1999-2002 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any

View file

@ -600,16 +600,16 @@ parse_command_line(int argc, char *argv[]) {
ns_g_username = isc_commandline_argument;
break;
case 'v':
printf("%s %s", ns_g_product, ns_g_version);
if (*ns_g_description != 0)
printf(" %s", ns_g_description);
printf("\n");
printf("%s %s%s%s <id:%s>\n",
ns_g_product, ns_g_version,
(*ns_g_description != '\0') ? " " : "",
ns_g_description, ns_g_srcid);
exit(0);
case 'V':
printf("%s %s", ns_g_product, ns_g_version);
if (*ns_g_description != 0)
printf(" %s", ns_g_description);
printf(" <id:%s> built by %s with %s\n", ns_g_srcid,
printf("%s %s%s%s <id:%s>\n", ns_g_product, ns_g_version,
(*ns_g_description != '\0') ? " " : "",
ns_g_description, ns_g_srcid);
printf("built by %s with %s\n",
ns_g_builder, ns_g_configargs);
#ifdef __clang__
printf("compiled by CLANG %s\n", __VERSION__);
@ -759,10 +759,6 @@ static void
destroy_managers(void) {
ns_lwresd_shutdown();
isc_entropy_detach(&ns_g_entropy);
if (ns_g_fallbackentropy != NULL)
isc_entropy_detach(&ns_g_fallbackentropy);
/*
* isc_taskmgr_destroy() will block until all tasks have exited,
*/
@ -907,8 +903,10 @@ setup(void) {
isc_result_totext(result));
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
ISC_LOG_NOTICE, "starting %s %s%s", ns_g_product,
ns_g_version, saved_command_line);
ISC_LOG_NOTICE, "starting %s %s%s%s <id:%s>%s",
ns_g_product, ns_g_version,
*ns_g_description ? " " : "", ns_g_description,
ns_g_srcid, saved_command_line);
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
ISC_LOG_NOTICE, "built with %s", ns_g_configargs);
@ -1027,6 +1025,10 @@ cleanup(void) {
ns_server_destroy(&ns_g_server);
isc_entropy_detach(&ns_g_entropy);
if (ns_g_fallbackentropy != NULL)
isc_entropy_detach(&ns_g_fallbackentropy);
ns_builtin_deinit();
/*

View file

@ -2,7 +2,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[<!ENTITY mdash "&#8212;">]>
<!--
- Copyright (C) 2004-2009, 2011, 2013, 2014 Internet Systems Consortium, Inc. ("ISC")
- Copyright (C) 2004-2009, 2011, 2013-2015 Internet Systems Consortium, Inc. ("ISC")
- Copyright (C) 2000, 2001, 2003 Internet Software Consortium.
-
- Permission to use, copy, modify, and/or distribute this software for any
@ -45,6 +45,7 @@
<year>2011</year>
<year>2013</year>
<year>2014</year>
<year>2015</year>
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
</copyright>
<copyright>

View file

@ -117,24 +117,30 @@
#define NOQNAME(r) (((r)->attributes & \
DNS_RDATASETATTR_NOQNAME) != 0)
#if 0
#define CTRACE(l,m) do { \
if (client != NULL && client->query.qname != NULL) { \
char qbuf[DNS_NAME_FORMATSIZE]; \
dns_name_format(client->query.qname, qbuf, sizeof(qbuf)); \
isc_log_write(ns_g_lctx, \
NS_LOGCATEGORY_CLIENT, NS_LOGMODULE_QUERY, \
l, "client %p (%s): %s", client, qbuf, (m)); \
} else { \
isc_log_write(ns_g_lctx, \
NS_LOGCATEGORY_CLIENT, NS_LOGMODULE_QUERY, \
l, "client %p (<unknown-name>): %s", \
client, (m)); \
} \
#ifdef WANT_QUERYTRACE
#define CTRACE(l,m) do { \
if (client != NULL && client->query.qname != NULL) { \
if (isc_log_wouldlog(ns_g_lctx, l)) { \
char qbuf[DNS_NAME_FORMATSIZE]; \
dns_name_format(client->query.qname, \
qbuf, sizeof(qbuf)); \
isc_log_write(ns_g_lctx, \
NS_LOGCATEGORY_CLIENT, \
NS_LOGMODULE_QUERY, \
l, "client %p (%s): %s", \
client, qbuf, (m)); \
} \
} else { \
isc_log_write(ns_g_lctx, \
NS_LOGCATEGORY_CLIENT, \
NS_LOGMODULE_QUERY, \
l, "client %p (<unknown-name>): %s", \
client, (m)); \
} \
} while(0)
#else
#define CTRACE(l,m) ((void)m)
#endif
#endif /* WANT_QUERYTRACE */
#define DNS_GETDB_NOEXACT 0x01U

View file

@ -5784,6 +5784,8 @@ load_configuration(const char *filename, ns_server_t *server,
if (view != NULL)
dns_view_detach(&view);
ISC_LIST_APPENDLIST(viewlist, builtin_viewlist, link);
/*
* This cleans up either the old production view list
* or our temporary list depending on whether they
@ -7632,7 +7634,7 @@ ns_server_status(ns_server_t *server, isc_buffer_t *text) {
n = snprintf((char *)isc_buffer_used(text),
isc_buffer_availablelength(text),
"version: %s%s%s%s <id:%s>\n"
"version: %s %s%s%s <id:%s>%s%s%s\n"
#ifdef ISC_PLATFORM_USETHREADS
"CPUs found: %u\n"
"worker threads: %u\n"
@ -7647,7 +7649,9 @@ ns_server_status(ns_server_t *server, isc_buffer_t *text) {
"recursive clients: %d/%d/%d\n"
"tcp clients: %d/%d\n"
"server is up and running",
ns_g_version, ob, alt, cb, ns_g_srcid,
ns_g_product, ns_g_version,
(*ns_g_description != '\0') ? " " : "",
ns_g_description, ns_g_srcid, ob, alt, cb,
#ifdef ISC_PLATFORM_USETHREADS
ns_g_cpus_detected, ns_g_cpus, ns_g_udpdisp,
#endif

View file

@ -495,7 +495,7 @@ dump_counters(isc_stats_t *stats, statsformat_t type, void *arg,
const char *category, const char **desc, int ncounters,
int *indices, isc_uint64_t *values, int options)
{
int i, index;
int i, idx;
isc_uint64_t value;
stats_dumparg_t dumparg;
FILE *fp;
@ -517,8 +517,8 @@ dump_counters(isc_stats_t *stats, statsformat_t type, void *arg,
isc_stats_dump(stats, generalstat_dump, &dumparg, options);
for (i = 0; i < ncounters; i++) {
index = indices[i];
value = values[index];
idx = indices[i];
value = values[idx];
if (value == 0 && (options & ISC_STATSDUMP_VERBOSE) == 0)
continue;
@ -527,7 +527,7 @@ dump_counters(isc_stats_t *stats, statsformat_t type, void *arg,
case statsformat_file:
fp = arg;
fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s\n",
value, desc[index]);
value, desc[idx]);
break;
case statsformat_xml:
#ifdef HAVE_LIBXML2
@ -587,7 +587,7 @@ dump_counters(isc_stats_t *stats, statsformat_t type, void *arg,
"name"));
TRY0(xmlTextWriterWriteString(writer,
ISC_XMLCHAR
desc[index]));
desc[idx]));
TRY0(xmlTextWriterEndElement(writer)); /* name */
TRY0(xmlTextWriterStartElement(writer,
@ -596,7 +596,7 @@ dump_counters(isc_stats_t *stats, statsformat_t type, void *arg,
} else {
TRY0(xmlTextWriterStartElement(writer,
ISC_XMLCHAR
desc[index]));
desc[idx]));
}
TRY0(xmlTextWriterWriteFormatString(writer,
"%"

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2004, 2006, 2007, 2009, 2011, 2013, 2014 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2004, 2006, 2007, 2009, 2011, 2013-2015 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1999-2002 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any

View file

@ -106,7 +106,7 @@ extern int h_errno;
#endif
#endif
#define MAXCMD (4 * 1024)
#define MAXCMD (128 * 1024)
#define MAXWIRE (64 * 1024)
#define PACKETSIZE ((64 * 1024) - 1)
#define INITTEXT (2 * 1024)

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
#!@PYTHON@
############################################################################
# Copyright (C) 2013, 2014 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2013-2015 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
@ -326,7 +326,7 @@ def vspace():
if _firstline:
_firstline = False
else:
print
print()
############################################################################
# vreset:

View file

@ -1,4 +1,4 @@
Copyright (C) 2004, 2010, 2011, 2013 Internet Systems Consortium, Inc. ("ISC")
Copyright (C) 2004, 2010, 2011, 2013, 2015 Internet Systems Consortium, Inc. ("ISC")
Copyright (C) 2000, 2001 Internet Software Consortium.
See COPYRIGHT in the source root or http://isc.org/copyright.html for terms.

View file

@ -14,6 +14,9 @@
# $Id: tests.sh,v 1.3 2011/08/09 04:12:25 tbox Exp $
SYSTEMTESTTOP=..
. $SYSTEMTESTTOP/conf.sh
status=0
n=0
@ -47,14 +50,14 @@ n=`expr $n + 1`
ret=0
echo "I:Checking that default version works for rndc ($n)"
$RNDC -c ../common/rndc.conf -s 10.53.0.1 -p 9953 status > rndc.status.ns1.$n 2>&1
grep "^version: $VERSION " rndc.status.ns1.$n > /dev/null || ret=1
grep "^version: BIND $VERSION " rndc.status.ns1.$n > /dev/null || ret=1
if [ $ret != 0 ] ; then echo I:failed; status=`expr $status + $ret`; fi
n=`expr $n + 1`
ret=0
echo "I:Checking that custom version works for rndc ($n)"
$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 status > rndc.status.ns3.$n 2>&1
grep "^version: $VERSION (this is a test of version) " rndc.status.ns3.$n > /dev/null || ret=1
grep "^version: BIND $VERSION ${DESCRIPTION}${DESCRIPTION:+ }<id:.......> (this is a test of version)" rndc.status.ns3.$n > /dev/null || ret=1
if [ $ret != 0 ] ; then echo I:failed; status=`expr $status + $ret`; fi
n=`expr $n + 1`

View file

@ -90,6 +90,8 @@ else
TESTSOCK6=false
fi
. ${TOP}/version
export NAMED LWRESD DIG NSUPDATE KEYGEN KEYFRLAB SIGNER KEYSIGNER KEYSETTOOL \
PERL SUBDIRS RNDC CHECKZONE PK11GEN PK11LIST PK11DEL TESTSOCK6 \
JOURNALPRINT ARPANAME SAMPLE NSLOOKUP
JOURNALPRINT ARPANAME SAMPLE NSLOOKUP DESCRIPTION

View file

@ -532,5 +532,16 @@ if [ $ret -ne 0 ]; then
status=1
fi
n=`expr $n + 1`
ret=0
echo "I:add a very large record. ($n)"
$NSUPDATE verylarge || ret=1
$DIG +noedns +tcp @10.53.0.1 -p 5300 txt txt.update.nil > dig.out.ns1.test$n
grep "ANSWER: 1," dig.out.ns1.test$n > /dev/null || ret=1
if [ $ret -ne 0 ]; then
echo "I:failed"
status=1
fi
echo "I:exit status: $status"
exit $status

File diff suppressed because one or more lines are too long

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl -w
#
# Copyright (C) 2004-2008, 2010-2014 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2004-2008, 2010-2015 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any

View file

@ -14,15 +14,17 @@
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
rm -f dig.out.*
rm -f ns*/named.lock
rm -f ns2/named.conf
rm -f ns3/example.db
rm -f ns3/named.conf
rm -f ns3/undelegated.db
rm -f ns4/sub.example.db
rm -f ns?/named.memstats
rm -f ns?/named.run
rm -f ns?/named_dump.db
rm -rf */*.signed
rm -rf */K*
rm -rf */dsset-*
rm -rf */trusted.conf
rm -f ns?/named.run
rm -f ns?/named.memstats
rm -f ns?/named_dump.db
rm -f ns2/named.conf
rm -f ns3/named.conf
rm -f ns3/example.db
rm -f ns4/sub.example.db
rm -f dig.out.*

View file

@ -66,3 +66,8 @@ zone "example.info" {
type static-stub;
server-addresses { ::1; }; #ns4
};
zone "undelegated" {
type static-stub;
server-addresses { 10.53.0.3; };
};

View file

@ -57,3 +57,8 @@ zone "example.org" {
type master;
file "example.org.db";
};
zone "undelegated" {
type master;
file "undelegated.db.signed";
};

View file

@ -42,4 +42,24 @@ trusted-keys {
};
EOF
' > trusted.conf
zone=undelegated
infile=undelegated.db.in
zonefile=undelegated.db
keyname1=`$KEYGEN -q -r $RANDFILE -a RSASHA256 -b 1024 -n zone $zone`
keyname2=`$KEYGEN -q -r $RANDFILE -a RSASHA256 -b 2048 -f KSK -n zone $zone`
cat $infile $keyname1.key $keyname2.key > $zonefile
$SIGNER -g -r $RANDFILE -o $zone $zonefile > /dev/null 2>&1
cat $keyname2.key | grep -v '^; ' | $PERL -n -e '
local ($dn, $class, $type, $flags, $proto, $alg, @rest) = split;
local $key = join("", @rest);
print <<EOF
trusted-keys {
"$dn" $flags $proto $alg "$key";
};
EOF
' >> trusted.conf
cp trusted.conf ../ns2/trusted.conf

View file

@ -0,0 +1,26 @@
; Copyright (C) 2015 Internet Systems Consortium, Inc. ("ISC")
;
; Permission to use, copy, modify, and/or distribute this software for any
; purpose with or without fee is hereby granted, provided that the above
; copyright notice and this permission notice appear in all copies.
;
; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
; AND FITNESS. IN NO EVENT SHALL ISC 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.
$TTL 300 ; 5 minutes
undelegated. IN SOA ns3.undelegated. hostmaster.undelegated. (
2010080900 ; serial
20 ; refresh (20 seconds)
20 ; retry (20 seconds)
1814400 ; expire (3 weeks)
3600 ; minimum (1 hour)
)
undelegated. NS ns3.undelegated.
undelegated. A 10.53.0.4
undelegated. AAAA ::1
ns3.undelegated. A 10.53.0.3

View file

@ -203,5 +203,15 @@ grep "2nd example org data" dig.out.ns2.test$n > /dev/null || ret=1
if [ $ret != 0 ]; then echo "I:failed"; fi
status=`expr $status + $ret`
n=`expr $n + 1`
echo "I:checking static-stub of a undelegated tld resolves after DS query ($n)"
ret=0
$DIG undelegated. @10.53.0.2 ds -p 5300 > dig.out.ns2.ds.test$n
$DIG undelegated. @10.53.0.2 soa -p 5300 > dig.out.ns2.soa.test$n
grep "status: NXDOMAIN" dig.out.ns2.ds.test$n > /dev/null || ret=1
grep "status: NOERROR" dig.out.ns2.soa.test$n > /dev/null || ret=1
if [ $ret != 0 ]; then echo "I:failed"; fi
status=`expr $status + $ret`
echo "I:exit status: $status"
exit $status

View file

@ -470,6 +470,9 @@ int sigwait(const unsigned int *set, int *sig);
/* Enable DNS Response Rate Limiting */
#undef USE_RRL
/* Define to enable very verbose query trace logging. */
#undef WANT_QUERYTRACE
/* define if idnkit support is to be included. */
#undef WITH_IDN

37
configure vendored
View file

@ -1006,6 +1006,7 @@ with_libiconv
with_iconv
with_idnlib
with_atf
enable_querytrace
with_dlopen
with_dlz_postgres
with_dlz_mysql
@ -1679,6 +1680,7 @@ Optional Features:
--disable-rpz-nsdname disable rpz-nsdname rules [default=enabled]
--enable-filter-aaaa enable filtering of AAAA records over IPv4
[default=no]
--enable-querytrace enable very verbose query trace logging [default=no]
--enable-full-report report values of all configure options
Optional Packages:
@ -13720,6 +13722,8 @@ $as_echo_n "checking whether linking with OpenSSL requires -ldl... " >&6; }
/* end confdefs.h. */
#include <openssl/err.h>
#include <openssl/dso.h>
int
main ()
{
@ -13737,6 +13741,7 @@ else
/* end confdefs.h. */
#include <openssl/err.h>
#include <openssl/dso.h>
int
main ()
@ -19453,6 +19458,34 @@ fi
done
#
# was --enable-querytrace specified?
#
# Check whether --enable-querytrace was given.
if test "${enable_querytrace+set}" = set; then :
enableval=$enable_querytrace; want_querytrace="$enableval"
else
want_querytrace="no"
fi
case "$want_querytrace" in
yes)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define WANT_QUERYTRACE 1" >>confdefs.h
;;
no)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
;;
*)
as_fn_error $? "\"--enable-querytrace requires yes or no\"" "$LINENO" 5
;;
esac
#
# Substitutions
#
@ -23139,6 +23172,8 @@ test "$want_symtable" = "minimal" && \
echo " Use symbol table for backtrace, named only (--enable-symtable)"
test "$want_symtable" = "yes" -o "$want_symtable" = "all" && \
echo " Use symbol table for backtrace, all binaries (--enable-symtable=all)"
test "$want_querytrace" = "yes" && \
echo " Very verbose query trace logging (--enable-querytrace)"
test "$atf" = "no" || echo " Automated Testing Framework (--with-atf)"
# these lines are only printed if run with --enable-full-report
@ -23186,6 +23221,8 @@ test "$enable_fixed" = "yes" || \
echo " Allow 'fixed' rrset-order (--enable-fixed-rrset)"
test "$want_backtrace" = "yes" || \
echo " Print backtrace on crash (--enable-backtrace)"
test "$want_querytrace" = "yes" || \
echo " Very verbose query trace logging (--enable-querytrace)"
test "$atf" = "no" && echo " Automated Testing Framework (--with-atf)"
test "X$USE_OPENSSL" = "X" && \
echo " OpenSSL cryptography/DNSSEC (--with-openssl)"

View file

@ -776,12 +776,15 @@ shared library configuration (e.g., LD_LIBRARY_PATH).)],
AC_MSG_CHECKING(whether linking with OpenSSL requires -ldl)
AC_TRY_LINK([
#include <openssl/err.h>],
#include <openssl/err.h>
#include <openssl/dso.h>
],
[ DSO_METHOD_dlfcn(); ],
[AC_MSG_RESULT(no)],
[LIBS="$LIBS -ldl"
AC_TRY_LINK([
#include <openssl/err.h>
#include <openssl/dso.h>
],[ DSO_METHOD_dlfcn(); ],
[AC_MSG_RESULT(yes)
DNS_OPENSSL_LIBS="$DNS_OPENSSL_LIBS -ldl"
@ -3517,6 +3520,26 @@ AC_SUBST(UNITTESTS)
AC_CHECK_HEADERS(locale.h)
AC_CHECK_FUNCS(setlocale)
#
# was --enable-querytrace specified?
#
AC_ARG_ENABLE(querytrace,
[ --enable-querytrace enable very verbose query trace logging [[default=no]]],
want_querytrace="$enableval", want_querytrace="no")
case "$want_querytrace" in
yes)
AC_MSG_RESULT(yes)
AC_DEFINE(WANT_QUERYTRACE, 1, [Define to enable very verbose query trace logging.])
;;
no)
AC_MSG_RESULT(no)
;;
*)
AC_MSG_ERROR("--enable-querytrace requires yes or no")
;;
esac
#
# Substitutions
#
@ -4068,6 +4091,8 @@ test "$want_symtable" = "minimal" && \
echo " Use symbol table for backtrace, named only (--enable-symtable)"
test "$want_symtable" = "yes" -o "$want_symtable" = "all" && \
echo " Use symbol table for backtrace, all binaries (--enable-symtable=all)"
test "$want_querytrace" = "yes" && \
echo " Very verbose query trace logging (--enable-querytrace)"
test "$atf" = "no" || echo " Automated Testing Framework (--with-atf)"
# these lines are only printed if run with --enable-full-report
@ -4115,6 +4140,8 @@ test "$enable_fixed" = "yes" || \
echo " Allow 'fixed' rrset-order (--enable-fixed-rrset)"
test "$want_backtrace" = "yes" || \
echo " Print backtrace on crash (--enable-backtrace)"
test "$want_querytrace" = "yes" || \
echo " Very verbose query trace logging (--enable-querytrace)"
test "$atf" = "no" && echo " Automated Testing Framework (--with-atf)"
test "X$USE_OPENSSL" = "X" && \
echo " OpenSSL cryptography/DNSSEC (--with-openssl)"

View file

@ -39,44 +39,7 @@
<title>Security Fixes</title>
<itemizedlist>
<listitem>
<para>
On servers configured to perform DNSSEC validation using
managed trust anchors (i.e., keys configured explicitly
via <command>managed-keys</command>, or implicitly
via <command>dnssec-validation auto;</command> or
<command>dnssec-lookaside auto;</command>), revoking
a trust anchor and sending a new untrusted replacement
could cause <command>named</command> to crash with an
assertion failure. This could occur in the event of a
botched key rollover, or potentially as a result of a
deliberate attack if the attacker was in position to
monitor the victim's DNS traffic.
</para>
<para>
This flaw was discovered by Jan-Piet Mens, and is
disclosed in CVE-2015-1349. [RT #38344]
</para>
</listitem>
<listitem>
<para>
A flaw in delegation handling could be exploited to put
<command>named</command> into an infinite loop, in which
each lookup of a name server triggered additional lookups
of more name servers. This has been addressed by placing
limits on the number of levels of recursion
<command>named</command> will allow (default 7), and
on the number of queries that it will send before
terminating a recursive query (default 50).
</para>
<para>
The recursion depth limit is configured via the
<option>max-recursion-depth</option> option, and the query limit
via the <option>max-recursion-queries</option> option.
</para>
<para>
The flaw was discovered by Florian Maury of ANSSI, and is
disclosed in CVE-2014-8500. [RT #37580]
</para>
<para>None</para>
</listitem>
</itemizedlist>
</sect2>
@ -92,190 +55,20 @@
<title>Feature Changes</title>
<itemizedlist>
<listitem>
<para>
NXDOMAIN responses to queries of type DS are now cached separately
from those for other types. This helps when using "grafted" zones
of type forward, for which the parent zone does not contain a
delegation, such as local top-level domains. Previously a query
of type DS for such a zone could cause the zone apex to be cached
as NXDOMAIN, blocking all subsequent queries. (Note: This
change is only helpful when DNSSEC validation is not enabled.
"Grafted" zones without a delegation in the parent are not a
recommended configuration.)
</para>
</listitem>
<listitem>
<para>
NOTIFY messages that are sent because a zone has been updated
are now given priority above NOTIFY messages that were scheduled
when the server started up. This should mitigate delays in zone
propagation when servers are restarted frequently.
</para>
</listitem>
<listitem>
<para>
Errors reported when running <command>rndc addzone</command>
(e.g., when a zone file cannot be loaded) have been clarified
to make it easier to diagnose problems.
</para>
</listitem>
<listitem>
<para>
Added support for OPENPGPKEY type.
</para>
</listitem>
<listitem>
<para>
When encountering an authoritative name server whose name is
an alias pointing to another name, the resolver treats
this as an error and skips to the next server. Previously
this happened silently; now the error will be logged to
the newly-created "cname" log category.
</para>
</listitem>
<listitem>
<para>
If named is not configured to validate the answer then
allow fallback to plain DNS on timeout even when we know
the server supports EDNS. This will allow the server to
potentially resolve signed queries when TCP is being
blocked.
</para>
<para>None</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="relnotes_bugs">
<title>Bug Fixes</title>
<itemizedlist>
<listitem>
<para>
<command>dig</command>, <command>host</command> and
<command>nslookup</command> aborted when encountering
a name which, after appending search list elements,
exceeded 255 bytes. Such names are now skipped, but
processing of other names will continue. [RT #36892]
</para>
</listitem>
<listitem>
<para>
The error message generated when
<command>named-checkzone</command> or
<command>named-checkconf -z</command> encounters a
<option>$TTL</option> directive without a value has
been clarified. [RT #37138]
</para>
</listitem>
<listitem>
<para>
Semicolon characters (;) included in TXT records were
incorrectly escaped with a backslash when the record was
displayed as text. This is actually only necessary when there
are no quotation marks. [RT #37159]
</para>
</listitem>
<listitem>
<para>
When files opened for writing by <command>named</command>,
such as zone journal files, were referenced more than once
in <filename>named.conf</filename>, it could lead to file
corruption as multiple threads wrote to the same file. This
is now detected when loading <filename>named.conf</filename>
and reported as an error. [RT #37172]
</para>
</listitem>
<listitem>
<para>
<command>dnssec-keygen -S</command> failed to generate successor
keys for some algorithm types (including ECDSA and GOST) due to
a difference in the content of private key files. This has been
corrected. [RT #37183]
</para>
</listitem>
<listitem>
<para>
UPDATE messages that arrived too soon after
an <command>rndc thaw</command> could be lost. [RT #37233]
</para>
</listitem>
<listitem>
<para>
Forwarding of UPDATE messages did not work when they were
signed with SIG(0); they resulted in a BADSIG response code.
[RT #37216]
</para>
</listitem>
<listitem>
<para>
When checking for updates to trust anchors listed in
<option>managed-keys</option>, <command>named</command>
now revalidates keys based on the current set of
active trust anchors, without relying on any cached
record of previous validation. [RT #37506]
</para>
</listitem>
<listitem>
<para>
When NXDOMAIN redirection is in use, queries for a name
that is present in the redirection zone but a type that
is not present will now return NOERROR instead of NXDOMAIN.
</para>
</listitem>
<listitem>
<para>
When a zone contained a delegation to an IPv6 name server
but not an IPv4 name server, it was possible for a memory
reference to be left un-freed. This caused an assertion
failure on server shutdown, but was otherwise harmless.
[RT #37796]
</para>
</listitem>
<listitem>
<para>
Due to an inadvertent removal of code in the previous
release, when <command>named</command> encountered an
authoritative name server which dropped all EDNS queries,
it did not always try plain DNS. This has been corrected.
[RT #37965]
</para>
</listitem>
<listitem>
<para>
A regression caused nsupdate to use the default recursive servers
rather than the SOA MNAME server when sending the UPDATE.
</para>
</listitem>
<listitem>
<para>
Adjusted max-recursion-queries to better accommodate empty
caches.
</para>
</listitem>
<listitem>
<para>
Built-in "empty" zones did not correctly inherit the
"allow-transfer" ACL from the options or view. [RT #38310]
</para>
</listitem>
<listitem>
<para>
A mutex leak was fixed that could cause <command>named</command>
processes to grow to very large sizes. [RT #38454]
</para>
</listitem>
<listitem>
<para>
Fixed some bugs in RFC 5011 trust anchor management,
including a memory leak and a possible loss of state
information. [RT #38458]
</para>
</listitem>
<listitem>
<para>
Asynchronous zone loads were not handled correctly when the
zone load was already in progress; this could trigger a crash
in zt.c. [RT #37573]
</para>
</listitem>
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="end_of_life">

View file

@ -2474,7 +2474,6 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *timermgr,
nbuckets[11]);
adb->nentries = nbuckets[11];
adb->nnames = nbuckets[11];
}
isc_mem_attach(mem, &adb->mctx);
@ -2667,6 +2666,8 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *timermgr,
fail0c:
DESTROYLOCK(&adb->lock);
fail0b:
if (adb->excl != NULL)
isc_task_detach(&adb->excl);
isc_mem_putanddetach(&adb->mctx, adb, sizeof(dns_adb_t));
return (result);

View file

@ -1159,7 +1159,7 @@ free_sevent(isc_event_t *ev) {
}
static inline isc_socketevent_t *
allocate_sevent(dns_dispatch_t *disp, isc_socket_t *socket,
allocate_sevent(dns_dispatch_t *disp, isc_socket_t *sock,
isc_eventtype_t type, isc_taskaction_t action, const void *arg)
{
isc_socketevent_t *ev;
@ -1170,7 +1170,7 @@ allocate_sevent(dns_dispatch_t *disp, isc_socket_t *socket,
return (NULL);
DE_CONST(arg, deconst_arg);
ISC_EVENT_INIT(ev, sizeof(*ev), 0, NULL, type,
action, deconst_arg, socket,
action, deconst_arg, sock,
free_sevent, disp->sepool);
ev->result = ISC_R_UNSET;
ISC_LINK_INIT(ev, ev_link);
@ -1709,7 +1709,7 @@ static isc_result_t
startrecv(dns_dispatch_t *disp, dispsocket_t *dispsock) {
isc_result_t res;
isc_region_t region;
isc_socket_t *socket;
isc_socket_t *sock;
if (disp->shutting_down == 1)
return (ISC_R_SUCCESS);
@ -1728,10 +1728,10 @@ startrecv(dns_dispatch_t *disp, dispsocket_t *dispsock) {
return (ISC_R_SUCCESS);
if (dispsock != NULL)
socket = dispsock->socket;
sock = dispsock->socket;
else
socket = disp->socket;
INSIST(socket != NULL);
sock = disp->socket;
INSIST(sock != NULL);
switch (disp->socktype) {
/*
@ -1745,7 +1745,7 @@ startrecv(dns_dispatch_t *disp, dispsocket_t *dispsock) {
if (dispsock != NULL) {
isc_task_t *dt = dispsock->task;
isc_socketevent_t *sev =
allocate_sevent(disp, socket,
allocate_sevent(disp, sock,
ISC_SOCKEVENT_RECVDONE,
udp_exrecv, dispsock);
if (sev == NULL) {
@ -1753,7 +1753,7 @@ startrecv(dns_dispatch_t *disp, dispsocket_t *dispsock) {
return (ISC_R_NOMEMORY);
}
res = isc_socket_recv2(socket, &region, 1, dt, sev, 0);
res = isc_socket_recv2(sock, &region, 1, dt, sev, 0);
if (res != ISC_R_SUCCESS) {
free_buffer(disp, region.base, region.length);
return (res);
@ -1761,7 +1761,7 @@ startrecv(dns_dispatch_t *disp, dispsocket_t *dispsock) {
} else {
isc_task_t *dt = disp->task[0];
isc_socketevent_t *sev =
allocate_sevent(disp, socket,
allocate_sevent(disp, sock,
ISC_SOCKEVENT_RECVDONE,
udp_shrecv, disp);
if (sev == NULL) {
@ -1769,7 +1769,7 @@ startrecv(dns_dispatch_t *disp, dispsocket_t *dispsock) {
return (ISC_R_NOMEMORY);
}
res = isc_socket_recv2(socket, &region, 1, dt, sev, 0);
res = isc_socket_recv2(sock, &region, 1, dt, sev, 0);
if (res != ISC_R_SUCCESS) {
free_buffer(disp, region.base, region.length);
disp->shutdown_why = res;

View file

@ -216,7 +216,7 @@ static void
check_config(const char *gss_name) {
const char *p;
krb5_context krb5_ctx;
char *krb5_realm = NULL;
char *krb5_realm_name = NULL;
if (strncasecmp(gss_name, "DNS/", 4) != 0) {
gss_log(ISC_LOG_ERROR, "tkey-gssapi-credential (%s) "
@ -228,7 +228,7 @@ check_config(const char *gss_name) {
gss_log(ISC_LOG_ERROR, "Unable to initialise krb5 context");
return;
}
if (krb5_get_default_realm(krb5_ctx, &krb5_realm) != 0) {
if (krb5_get_default_realm(krb5_ctx, &krb5_realm_name) != 0) {
gss_log(ISC_LOG_ERROR, "Unable to get krb5 default realm");
krb5_free_context(krb5_ctx);
return;
@ -240,10 +240,10 @@ check_config(const char *gss_name) {
krb5_free_context(krb5_ctx);
return;
}
if (strcasecmp(p + 1, krb5_realm) != 0) {
if (strcasecmp(p + 1, krb5_realm_name) != 0) {
gss_log(ISC_LOG_ERROR, "default realm from krb5.conf (%s) "
"does not match tkey-gssapi-credential (%s)",
krb5_realm, gss_name);
krb5_realm_name, gss_name);
krb5_free_context(krb5_ctx);
return;
}

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2004-2013, 2015 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1999-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any

View file

@ -555,7 +555,7 @@ journal_file_create(isc_mem_t *mctx, const char *filename) {
}
static isc_result_t
journal_open(isc_mem_t *mctx, const char *filename, isc_boolean_t write,
journal_open(isc_mem_t *mctx, const char *filename, isc_boolean_t writable,
isc_boolean_t create, dns_journal_t **journalp)
{
FILE *fp = NULL;
@ -579,7 +579,7 @@ journal_open(isc_mem_t *mctx, const char *filename, isc_boolean_t write,
if (j->filename == NULL)
FAIL(ISC_R_NOMEMORY);
result = isc_stdio_open(j->filename, write ? "rb+" : "rb", &fp);
result = isc_stdio_open(j->filename, writable ? "rb+" : "rb", &fp);
if (result == ISC_R_FILENOTFOUND) {
if (create) {
@ -669,7 +669,7 @@ journal_open(isc_mem_t *mctx, const char *filename, isc_boolean_t write,
dns_decompress_init(&j->it.dctx, -1, DNS_DECOMPRESS_NONE);
j->state =
write ? JOURNAL_STATE_WRITE : JOURNAL_STATE_READ;
writable ? JOURNAL_STATE_WRITE : JOURNAL_STATE_READ;
*journalp = j;
return (ISC_R_SUCCESS);
@ -696,12 +696,12 @@ dns_journal_open(isc_mem_t *mctx, const char *filename, unsigned int mode,
isc_result_t result;
size_t namelen;
char backup[1024];
isc_boolean_t write, create;
isc_boolean_t writable, create;
create = ISC_TF(mode & DNS_JOURNAL_CREATE);
write = ISC_TF(mode & (DNS_JOURNAL_WRITE|DNS_JOURNAL_CREATE));
writable = ISC_TF(mode & (DNS_JOURNAL_WRITE|DNS_JOURNAL_CREATE));
result = journal_open(mctx, filename, write, create, journalp);
result = journal_open(mctx, filename, writable, create, journalp);
if (result == ISC_R_NOTFOUND) {
namelen = strlen(filename);
if (namelen > 4U && strcmp(filename + namelen - 4, ".jnl") == 0)
@ -711,7 +711,8 @@ dns_journal_open(isc_mem_t *mctx, const char *filename, unsigned int mode,
(int)namelen, filename);
if (result != ISC_R_SUCCESS)
return (result);
result = journal_open(mctx, backup, write, write, journalp);
result = journal_open(mctx, backup, writable, writable,
journalp);
}
return (result);
}

View file

@ -306,7 +306,7 @@ dns_private_totext(dns_rdata_t *private, isc_buffer_t *buf) {
unsigned char newbuf[DNS_NSEC3PARAM_BUFFERSIZE];
dns_rdata_t rdata = DNS_RDATA_INIT;
dns_rdata_nsec3param_t nsec3param;
isc_boolean_t remove, init, nonsec;
isc_boolean_t delete, init, nonsec;
isc_buffer_t b;
if (!dns_nsec3param_fromprivate(private, &rdata, nsec3buf,
@ -315,7 +315,7 @@ dns_private_totext(dns_rdata_t *private, isc_buffer_t *buf) {
CHECK(dns_rdata_tostruct(&rdata, &nsec3param, NULL));
remove = ISC_TF((nsec3param.flags & DNS_NSEC3FLAG_REMOVE) != 0);
delete = ISC_TF((nsec3param.flags & DNS_NSEC3FLAG_REMOVE) != 0);
init = ISC_TF((nsec3param.flags & DNS_NSEC3FLAG_INITIAL) != 0);
nonsec = ISC_TF((nsec3param.flags & DNS_NSEC3FLAG_NONSEC) != 0);
@ -326,7 +326,7 @@ dns_private_totext(dns_rdata_t *private, isc_buffer_t *buf) {
if (init)
isc_buffer_putstr(buf, "Pending NSEC3 chain ");
else if (remove)
else if (delete)
isc_buffer_putstr(buf, "Removing NSEC3 chain ");
else
isc_buffer_putstr(buf, "Creating NSEC3 chain ");
@ -339,18 +339,18 @@ dns_private_totext(dns_rdata_t *private, isc_buffer_t *buf) {
CHECK(dns_rdata_totext(&rdata, NULL, buf));
if (remove && !nonsec)
if (delete && !nonsec)
isc_buffer_putstr(buf, " / creating NSEC chain");
} else if (private->length == 5) {
unsigned char alg = private->data[0];
dns_keytag_t keyid = (private->data[2] | private->data[1] << 8);
char keybuf[BUFSIZ], algbuf[DNS_SECALG_FORMATSIZE];
isc_boolean_t remove = ISC_TF(private->data[3] != 0);
isc_boolean_t delete = ISC_TF(private->data[3] != 0);
isc_boolean_t complete = ISC_TF(private->data[4] != 0);
if (remove && complete)
if (delete && complete)
isc_buffer_putstr(buf, "Done removing signatures for ");
else if (remove)
else if (delete)
isc_buffer_putstr(buf, "Removing signatures for ");
else if (complete)
isc_buffer_putstr(buf, "Done signing with ");

View file

@ -753,7 +753,7 @@ typedef struct rbtdb_dbiterator {
static void free_rbtdb(dns_rbtdb_t *rbtdb, isc_boolean_t log,
isc_event_t *event);
static void overmem(dns_db_t *db, isc_boolean_t overmem);
static void overmem(dns_db_t *db, isc_boolean_t over);
#ifdef BIND9
static void setnsec3parameters(dns_db_t *db, rbtdb_version_t *version);
#endif
@ -904,10 +904,10 @@ resign_sooner(void *v1, void *v2) {
* This function sets the heap index into the header.
*/
static void
set_index(void *what, unsigned int index) {
set_index(void *what, unsigned int idx) {
rdatasetheader_t *h = what;
h->heap_index = index;
h->heap_index = idx;
}
/*%
@ -5580,11 +5580,11 @@ expirenode(dns_db_t *db, dns_dbnode_t *node, isc_stdtime_t now) {
}
static void
overmem(dns_db_t *db, isc_boolean_t overmem) {
overmem(dns_db_t *db, isc_boolean_t over) {
/* This is an empty callback. See adb.c:water() */
UNUSED(db);
UNUSED(overmem);
UNUSED(over);
return;
}

View file

@ -98,7 +98,7 @@ totext_keydata(ARGS_TOTEXT) {
char buf[sizeof("64000")];
unsigned int flags;
unsigned char algorithm;
unsigned long refresh, add, remove;
unsigned long refresh, add, delete;
char algbuf[DNS_NAME_FORMATSIZE];
const char *keyinfo;
@ -122,9 +122,9 @@ totext_keydata(ARGS_TOTEXT) {
RETERR(str_totext(" ", target));
/* remove hold-down */
remove = uint32_fromregion(&sr);
delete = uint32_fromregion(&sr);
isc_region_consume(&sr, 4);
RETERR(dns_time32_totext(remove, target));
RETERR(dns_time32_totext(delete, target));
RETERR(str_totext(" ", target));
/* flags */
@ -224,11 +224,11 @@ totext_keydata(ARGS_TOTEXT) {
RETERR(str_totext(abuf, target));
}
if (remove != 0U) {
if (delete != 0U) {
RETERR(str_totext(tctx->linebreak, target));
RETERR(str_totext("; removal pending: ",
target));
isc_time_set(&t, remove, 0);
isc_time_set(&t, delete, 0);
isc_time_formathttptimestamp(&t, dbuf,
sizeof(dbuf));
RETERR(str_totext(dbuf, target));

View file

@ -95,16 +95,16 @@ totext_soa(ARGS_TOTEXT) {
isc_boolean_t sub;
int i;
isc_boolean_t multiline;
isc_boolean_t comment;
isc_boolean_t comm;
REQUIRE(rdata->type == 6);
REQUIRE(rdata->length != 0);
multiline = ISC_TF((tctx->flags & DNS_STYLEFLAG_MULTILINE) != 0);
if (multiline)
comment = ISC_TF((tctx->flags & DNS_STYLEFLAG_RRCOMMENT) != 0);
comm = ISC_TF((tctx->flags & DNS_STYLEFLAG_RRCOMMENT) != 0);
else
comment = ISC_FALSE;
comm = ISC_FALSE;
dns_name_init(&mname, NULL);
@ -136,9 +136,9 @@ totext_soa(ARGS_TOTEXT) {
unsigned long num;
num = uint32_fromregion(&dregion);
isc_region_consume(&dregion, 4);
sprintf(buf, comment ? "%-10lu ; " : "%lu", num);
sprintf(buf, comm ? "%-10lu ; " : "%lu", num);
RETERR(str_totext(buf, target));
if (comment) {
if (comm) {
RETERR(str_totext(soa_fieldnames[i], target));
/* Print times in week/day/hour/minute/second form */
if (i >= 1) {

View file

@ -144,7 +144,7 @@ dns_requestmgr_create(isc_mem_t *mctx,
dns_requestmgr_t **requestmgrp)
{
dns_requestmgr_t *requestmgr;
isc_socket_t *socket;
isc_socket_t *sock;
isc_result_t result;
int i;
unsigned int dispattr;
@ -156,7 +156,7 @@ dns_requestmgr_create(isc_mem_t *mctx,
REQUIRE(socketmgr != NULL);
REQUIRE(taskmgr != NULL);
REQUIRE(dispatchmgr != NULL);
UNUSED(socket);
UNUSED(sock);
if (dispatchv4 != NULL) {
dispattr = dns_dispatch_getattributes(dispatchv4);
REQUIRE((dispattr & DNS_DISPATCHATTR_UDP) != 0);
@ -426,20 +426,20 @@ mgr_gethash(dns_requestmgr_t *requestmgr) {
static inline isc_result_t
req_send(dns_request_t *request, isc_task_t *task, isc_sockaddr_t *address) {
isc_region_t r;
isc_socket_t *socket;
isc_socket_t *sock;
isc_result_t result;
req_log(ISC_LOG_DEBUG(3), "req_send: request %p", request);
REQUIRE(VALID_REQUEST(request));
socket = req_getsocket(request);
sock = req_getsocket(request);
isc_buffer_usedregion(request->query, &r);
/*
* We could connect the socket when we are using an exclusive dispatch
* as we do in resolver.c, but we prefer implementation simplicity
* at this moment.
*/
result = isc_socket_sendto(socket, &r, task, req_senddone,
result = isc_socket_sendto(sock, &r, task, req_senddone,
request, address, NULL);
if (result == ISC_R_SUCCESS)
request->flags |= DNS_REQUEST_F_SENDING;
@ -513,25 +513,25 @@ create_tcp_dispatch(dns_requestmgr_t *requestmgr, isc_sockaddr_t *srcaddr,
isc_sockaddr_t *destaddr, dns_dispatch_t **dispatchp)
{
isc_result_t result;
isc_socket_t *socket = NULL;
isc_socket_t *sock = NULL;
isc_sockaddr_t src;
unsigned int attrs;
isc_sockaddr_t bind_any;
result = isc_socket_create(requestmgr->socketmgr,
isc_sockaddr_pf(destaddr),
isc_sockettype_tcp, &socket);
isc_sockettype_tcp, &sock);
if (result != ISC_R_SUCCESS)
return (result);
#ifndef BROKEN_TCP_BIND_BEFORE_CONNECT
if (srcaddr == NULL) {
isc_sockaddr_anyofpf(&bind_any,
isc_sockaddr_pf(destaddr));
result = isc_socket_bind(socket, &bind_any, 0);
result = isc_socket_bind(sock, &bind_any, 0);
} else {
src = *srcaddr;
isc_sockaddr_setport(&src, 0);
result = isc_socket_bind(socket, &src, 0);
result = isc_socket_bind(sock, &src, 0);
}
if (result != ISC_R_SUCCESS)
goto cleanup;
@ -545,11 +545,11 @@ create_tcp_dispatch(dns_requestmgr_t *requestmgr, isc_sockaddr_t *srcaddr,
attrs |= DNS_DISPATCHATTR_IPV6;
attrs |= DNS_DISPATCHATTR_MAKEQUERY;
result = dns_dispatch_createtcp(requestmgr->dispatchmgr,
socket, requestmgr->taskmgr,
sock, requestmgr->taskmgr,
4096, 2, 1, 1, 3, attrs,
dispatchp);
cleanup:
isc_socket_detach(&socket);
isc_socket_detach(&sock);
return (result);
}
@ -680,7 +680,7 @@ dns_request_createraw3(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf,
{
dns_request_t *request = NULL;
isc_task_t *tclone = NULL;
isc_socket_t *socket = NULL;
isc_socket_t *sock = NULL;
isc_result_t result;
isc_mem_t *mctx;
dns_messageid_t id;
@ -764,8 +764,8 @@ dns_request_createraw3(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf,
if (result != ISC_R_SUCCESS)
goto cleanup;
socket = req_getsocket(request);
INSIST(socket != NULL);
sock = req_getsocket(request);
INSIST(sock != NULL);
result = isc_buffer_allocate(mctx, &request->query,
r.length + (tcp ? 2 : 0));
@ -801,7 +801,7 @@ dns_request_createraw3(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf,
request->destaddr = *destaddr;
if (tcp) {
result = isc_socket_connect(socket, destaddr, task,
result = isc_socket_connect(sock, destaddr, task,
req_connected, request);
if (result != ISC_R_SUCCESS)
goto unlink;
@ -886,12 +886,12 @@ dns_request_createvia3(dns_requestmgr_t *requestmgr, dns_message_t *message,
{
dns_request_t *request = NULL;
isc_task_t *tclone = NULL;
isc_socket_t *socket = NULL;
isc_socket_t *sock = NULL;
isc_result_t result;
isc_mem_t *mctx;
dns_messageid_t id;
isc_boolean_t tcp;
isc_boolean_t setkey = ISC_TRUE;
isc_boolean_t settsigkey = ISC_TRUE;
REQUIRE(VALID_REQUESTMGR(requestmgr));
REQUIRE(message != NULL);
@ -960,11 +960,11 @@ dns_request_createvia3(dns_requestmgr_t *requestmgr, dns_message_t *message,
requestmgr->socketmgr);
if (result != ISC_R_SUCCESS)
goto cleanup;
socket = req_getsocket(request);
INSIST(socket != NULL);
sock = req_getsocket(request);
INSIST(sock != NULL);
message->id = id;
if (setkey) {
if (settsigkey) {
result = dns_message_settsigkey(message, request->tsigkey);
if (result != ISC_R_SUCCESS)
goto cleanup;
@ -978,9 +978,9 @@ dns_request_createvia3(dns_requestmgr_t *requestmgr, dns_message_t *message,
dns_message_renderreset(message);
dns_dispatch_removeresponse(&request->dispentry, NULL);
dns_dispatch_detach(&request->dispatch);
socket = NULL;
sock = NULL;
options |= DNS_REQUESTOPT_TCP;
setkey = ISC_FALSE;
settsigkey = ISC_FALSE;
goto use_tcp;
}
if (result != ISC_R_SUCCESS)
@ -1007,7 +1007,7 @@ dns_request_createvia3(dns_requestmgr_t *requestmgr, dns_message_t *message,
request->destaddr = *destaddr;
if (tcp) {
result = isc_socket_connect(socket, destaddr, task,
result = isc_socket_connect(sock, destaddr, task,
req_connected, request);
if (result != ISC_R_SUCCESS)
goto unlink;
@ -1250,16 +1250,16 @@ dns_request_destroy(dns_request_t **requestp) {
static isc_socket_t *
req_getsocket(dns_request_t *request) {
unsigned int dispattr;
isc_socket_t *socket;
isc_socket_t *sock;
dispattr = dns_dispatch_getattributes(request->dispatch);
if ((dispattr & DNS_DISPATCHATTR_EXCLUSIVE) != 0) {
INSIST(request->dispentry != NULL);
socket = dns_dispatch_getentrysocket(request->dispentry);
sock = dns_dispatch_getentrysocket(request->dispentry);
} else
socket = dns_dispatch_getsocket(request->dispatch);
sock = dns_dispatch_getsocket(request->dispatch);
return (socket);
return (sock);
}
static void
@ -1460,7 +1460,7 @@ req_destroy(dns_request_t *request) {
*/
static void
req_cancel(dns_request_t *request) {
isc_socket_t *socket;
isc_socket_t *sock;
unsigned int dispattr;
REQUIRE(VALID_REQUEST(request));
@ -1475,19 +1475,19 @@ req_cancel(dns_request_t *request) {
if (request->timer != NULL)
isc_timer_detach(&request->timer);
dispattr = dns_dispatch_getattributes(request->dispatch);
socket = NULL;
sock = NULL;
if (DNS_REQUEST_CONNECTING(request) || DNS_REQUEST_SENDING(request)) {
if ((dispattr & DNS_DISPATCHATTR_EXCLUSIVE) != 0) {
if (request->dispentry != NULL) {
socket = dns_dispatch_getentrysocket(
sock = dns_dispatch_getentrysocket(
request->dispentry);
}
} else
socket = dns_dispatch_getsocket(request->dispatch);
if (DNS_REQUEST_CONNECTING(request) && socket != NULL)
isc_socket_cancel(socket, NULL, ISC_SOCKCANCEL_CONNECT);
if (DNS_REQUEST_SENDING(request) && socket != NULL)
isc_socket_cancel(socket, NULL, ISC_SOCKCANCEL_SEND);
sock = dns_dispatch_getsocket(request->dispatch);
if (DNS_REQUEST_CONNECTING(request) && sock != NULL)
isc_socket_cancel(sock, NULL, ISC_SOCKCANCEL_CONNECT);
if (DNS_REQUEST_SENDING(request) && sock != NULL)
isc_socket_cancel(sock, NULL, ISC_SOCKCANCEL_SEND);
}
if (request->dispentry != NULL)
dns_dispatch_removeresponse(&request->dispentry, NULL);

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2004-2015 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1999-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@ -64,8 +64,7 @@
#include <dns/tsig.h>
#include <dns/validator.h>
#define DNS_RESOLVER_TRACE
#ifdef DNS_RESOLVER_TRACE
#ifdef WANT_QUERYTRACE
#define RTRACE(m) isc_log_write(dns_lctx, \
DNS_LOGCATEGORY_RESOLVER, \
DNS_LOGMODULE_RESOLVER, \
@ -121,13 +120,16 @@
query, query->fctx, \
query->fctx->info, (m))
#else
#define RTRACE(m)
#define RRTRACE(r, m)
#define FCTXTRACE(m)
#define FCTXTRACE2(m1, m2)
#define FTRACE(m)
#define QTRACE(m)
#endif
#define RTRACE(m) do { UNUSED(m); } while (0)
#define RRTRACE(r, m) do { UNUSED(r); UNUSED(m); } while (0)
#define FCTXTRACE(m) do { UNUSED(m); } while (0)
#define FCTXTRACE2(m1, m2) do { UNUSED(m1); UNUSED(m2); } while (0)
#define FCTXTRACE3(m1, res) do { UNUSED(m1); UNUSED(res); } while (0)
#define FCTXTRACE4(m1, m2, res) \
do { UNUSED(m1); UNUSED(m2); UNUSED(res); } while (0)
#define FTRACE(m) do { UNUSED(m); } while (0)
#define QTRACE(m) do { UNUSED(m); } while (0)
#endif /* WANT_QUERYTRACE */
#define US_PER_SEC 1000000U
/*
@ -829,7 +831,7 @@ fctx_cancelquery(resquery_t **queryp, dns_dispatchevent_t **deventp,
unsigned int factor;
dns_adbfind_t *find;
dns_adbaddrinfo_t *addrinfo;
isc_socket_t *socket;
isc_socket_t *sock;
isc_stdtime_t now;
query = *queryp;
@ -952,9 +954,9 @@ fctx_cancelquery(resquery_t **queryp, dns_dispatchevent_t **deventp,
ISC_SOCKCANCEL_CONNECT);
} else if (query->dispentry != NULL) {
INSIST(query->exclusivesocket);
socket = dns_dispatch_getentrysocket(query->dispentry);
if (socket != NULL)
isc_socket_cancel(socket, NULL,
sock = dns_dispatch_getentrysocket(query->dispentry);
if (sock != NULL)
isc_socket_cancel(sock, NULL,
ISC_SOCKCANCEL_CONNECT);
}
} else if (RESQUERY_SENDING(query)) {
@ -962,11 +964,11 @@ fctx_cancelquery(resquery_t **queryp, dns_dispatchevent_t **deventp,
* Cancel the pending send.
*/
if (query->exclusivesocket && query->dispentry != NULL)
socket = dns_dispatch_getentrysocket(query->dispentry);
sock = dns_dispatch_getentrysocket(query->dispentry);
else
socket = dns_dispatch_getsocket(query->dispatch);
if (socket != NULL)
isc_socket_cancel(socket, NULL, ISC_SOCKCANCEL_SEND);
sock = dns_dispatch_getsocket(query->dispatch);
if (sock != NULL)
isc_socket_cancel(sock, NULL, ISC_SOCKCANCEL_SEND);
}
if (query->dispentry != NULL)
@ -1725,7 +1727,7 @@ resquery_send(resquery_t *query) {
isc_region_t r;
dns_resolver_t *res;
isc_task_t *task;
isc_socket_t *socket;
isc_socket_t *sock;
isc_buffer_t tcpbuffer;
isc_sockaddr_t *address;
isc_buffer_t *buffer;
@ -2027,16 +2029,16 @@ resquery_send(resquery_t *query) {
dns_message_reset(fctx->qmessage, DNS_MESSAGE_INTENTRENDER);
if (query->exclusivesocket)
socket = dns_dispatch_getentrysocket(query->dispentry);
sock = dns_dispatch_getentrysocket(query->dispentry);
else
socket = dns_dispatch_getsocket(query->dispatch);
sock = dns_dispatch_getsocket(query->dispatch);
/*
* Send the query!
*/
if ((query->options & DNS_FETCHOPT_TCP) == 0) {
address = &query->addrinfo->sockaddr;
if (query->exclusivesocket) {
result = isc_socket_connect(socket, address, task,
result = isc_socket_connect(sock, address, task,
resquery_udpconnected,
query);
if (result != ISC_R_SUCCESS)
@ -2054,7 +2056,7 @@ resquery_send(resquery_t *query) {
ISC_EVENT_INIT(&query->sendevent, sizeof(query->sendevent), 0, NULL,
ISC_SOCKEVENT_SENDDONE, resquery_senddone, query,
NULL, NULL, NULL);
result = isc_socket_sendto2(socket, &r, task, address, NULL,
result = isc_socket_sendto2(sock, &r, task, address, NULL,
&query->sendevent, 0);
if (result != ISC_R_SUCCESS) {
if (connecting) {
@ -2245,7 +2247,7 @@ fctx_finddone(isc_task_t *task, isc_event_t *event) {
isc_boolean_t want_done = ISC_FALSE;
isc_boolean_t bucket_empty = ISC_FALSE;
unsigned int bucketnum;
isc_boolean_t destroy = ISC_FALSE;
isc_boolean_t dodestroy = ISC_FALSE;
find = event->ev_sender;
fctx = event->ev_arg;
@ -2286,7 +2288,7 @@ fctx_finddone(isc_task_t *task, isc_event_t *event) {
if (fctx->references == 0) {
bucket_empty = fctx_unlink(fctx);
destroy = ISC_TRUE;
dodestroy = ISC_TRUE;
}
}
UNLOCK(&res->buckets[bucketnum].lock);
@ -2299,7 +2301,7 @@ fctx_finddone(isc_task_t *task, isc_event_t *event) {
} else if (want_done) {
FCTXTRACE("fetch failed in finddone(); return ISC_R_FAILURE");
fctx_done(fctx, ISC_R_FAILURE, __LINE__);
} else if (destroy) {
} else if (dodestroy) {
fctx_destroy(fctx);
if (bucket_empty)
empty_bucket(res);
@ -2947,6 +2949,9 @@ possibly_mark(fetchctx_t *fctx, dns_adbaddrinfo_t *addr)
bogus)
aborted = ISC_TRUE;
if (!isc_log_wouldlog(dns_lctx, ISC_LOG_DEBUG(3)))
return;
if (aborted) {
addr->flags |= FCTX_ADDRINFO_MARK;
msg = "ignoring blackholed / bogus server: ";
@ -2967,9 +2972,6 @@ possibly_mark(fetchctx_t *fctx, dns_adbaddrinfo_t *addr)
} else
return;
if (!isc_log_wouldlog(dns_lctx, ISC_LOG_DEBUG(3)))
return;
isc_netaddr_fromsockaddr(&na, sa);
isc_netaddr_format(&na, buf, sizeof(buf));
FCTXTRACE2(msg, buf);
@ -3399,7 +3401,7 @@ fctx_doshutdown(isc_task_t *task, isc_event_t *event) {
dns_resolver_t *res;
unsigned int bucketnum;
dns_validator_t *validator;
isc_boolean_t destroy = ISC_FALSE;
isc_boolean_t dodestroy = ISC_FALSE;
REQUIRE(VALID_FCTX(fctx));
@ -3451,12 +3453,12 @@ fctx_doshutdown(isc_task_t *task, isc_event_t *event) {
if (fctx->references == 0 && fctx->pending == 0 &&
fctx->nqueries == 0 && ISC_LIST_EMPTY(fctx->validators)) {
bucket_empty = fctx_unlink(fctx);
destroy = ISC_TRUE;
dodestroy = ISC_TRUE;
}
UNLOCK(&res->buckets[bucketnum].lock);
if (destroy) {
if (dodestroy) {
fctx_destroy(fctx);
if (bucket_empty)
empty_bucket(res);
@ -3469,7 +3471,7 @@ fctx_start(isc_task_t *task, isc_event_t *event) {
isc_boolean_t done = ISC_FALSE, bucket_empty = ISC_FALSE;
dns_resolver_t *res;
unsigned int bucketnum;
isc_boolean_t destroy = ISC_FALSE;
isc_boolean_t dodestroy = ISC_FALSE;
REQUIRE(VALID_FCTX(fctx));
@ -3503,7 +3505,7 @@ fctx_start(isc_task_t *task, isc_event_t *event) {
* It's now safe to destroy this fctx.
*/
bucket_empty = fctx_unlink(fctx);
destroy = ISC_TRUE;
dodestroy = ISC_TRUE;
}
done = ISC_TRUE;
} else {
@ -3525,7 +3527,7 @@ fctx_start(isc_task_t *task, isc_event_t *event) {
if (!done) {
isc_result_t result;
INSIST(!destroy);
INSIST(!dodestroy);
/*
* All is well. Start working on the fetch.
@ -3535,7 +3537,7 @@ fctx_start(isc_task_t *task, isc_event_t *event) {
fctx_done(fctx, result, __LINE__);
else
fctx_try(fctx, ISC_FALSE, ISC_FALSE);
} else if (destroy) {
} else if (dodestroy) {
fctx_destroy(fctx);
if (bucket_empty)
empty_bucket(res);
@ -4110,7 +4112,7 @@ maybe_destroy(fetchctx_t *fctx, isc_boolean_t locked) {
isc_boolean_t bucket_empty = ISC_FALSE;
dns_resolver_t *res = fctx->res;
dns_validator_t *validator, *next_validator;
isc_boolean_t destroy = ISC_FALSE;
isc_boolean_t dodestroy = ISC_FALSE;
REQUIRE(SHUTTINGDOWN(fctx));
@ -4128,12 +4130,12 @@ maybe_destroy(fetchctx_t *fctx, isc_boolean_t locked) {
if (fctx->references == 0 && ISC_LIST_EMPTY(fctx->validators)) {
bucket_empty = fctx_unlink(fctx);
destroy = ISC_TRUE;
dodestroy = ISC_TRUE;
}
unlock:
if (!locked)
UNLOCK(&res->buckets[bucketnum].lock);
if (destroy)
if (dodestroy)
fctx_destroy(fctx);
return (bucket_empty);
}
@ -7480,7 +7482,6 @@ resquery_response(isc_task_t *task, isc_event_t *event) {
*/
result = answer_response(fctx);
if (result != ISC_R_SUCCESS)
FCTXTRACE("answer_response (!NS)");
FCTXTRACE3("answer_response (!NS)", result);
} else {
if (fctx->type == dns_rdatatype_ns) {
@ -8463,7 +8464,7 @@ dns_resolver_createfetch3(dns_resolver_t *res, dns_name_t *name,
unsigned int count = 0;
unsigned int spillat;
unsigned int spillatmin;
isc_boolean_t destroy = ISC_FALSE;
isc_boolean_t dodestroy = ISC_FALSE;
UNUSED(forwarders);
@ -8568,14 +8569,14 @@ dns_resolver_createfetch3(dns_resolver_t *res, dns_name_t *name,
* since we know we're not exiting.
*/
(void)fctx_unlink(fctx);
destroy = ISC_TRUE;
dodestroy = ISC_TRUE;
}
}
unlock:
UNLOCK(&res->buckets[bucketnum].lock);
if (destroy)
if (dodestroy)
fctx_destroy(fctx);
if (result == ISC_R_SUCCESS) {

View file

@ -1246,9 +1246,9 @@ ispersistent(dns_db_t *db) {
}
static void
overmem(dns_db_t *db, isc_boolean_t overmem) {
overmem(dns_db_t *db, isc_boolean_t over) {
UNUSED(db);
UNUSED(overmem);
UNUSED(over);
}
static void

View file

@ -1190,9 +1190,9 @@ ispersistent(dns_db_t *db) {
}
static void
overmem(dns_db_t *db, isc_boolean_t overmem) {
overmem(dns_db_t *db, isc_boolean_t over) {
UNUSED(db);
UNUSED(overmem);
UNUSED(over);
}
static void

View file

@ -372,7 +372,7 @@ gssapi_spnego_decapsulate(OM_uint32 *,
/* mod_auth_kerb.c */
static int
cmp_gss_type(gss_buffer_t token, gss_OID oid)
cmp_gss_type(gss_buffer_t token, gss_OID gssoid)
{
unsigned char *p;
size_t len;
@ -392,10 +392,10 @@ cmp_gss_type(gss_buffer_t token, gss_OID oid)
if (*p++ != 0x06)
return (GSS_S_DEFECTIVE_TOKEN);
if (((OM_uint32) *p++) != oid->length)
if (((OM_uint32) *p++) != gssoid->length)
return (GSS_S_DEFECTIVE_TOKEN);
return (memcmp(p, oid->elements, oid->length));
return (memcmp(p, gssoid->elements, gssoid->length));
}
/* accept_sec_context.c */

View file

@ -17050,7 +17050,7 @@ keydone(isc_task_t *task, isc_event_t *event) {
dns_dbnode_t *node = NULL;
dns_rdataset_t rdataset;
dns_diff_t diff;
struct keydone *keydone = (struct keydone *)event;
struct keydone *kd = (struct keydone *)event;
dns_update_log_t log = { update_log_cb, NULL };
isc_boolean_t clear_pending = ISC_FALSE;
@ -17102,7 +17102,7 @@ keydone(isc_task_t *task, isc_event_t *event) {
dns_rdataset_current(&rdataset, &rdata);
if (keydone->all) {
if (kd->all) {
if (rdata.length == 5 && rdata.data[0] != 0 &&
rdata.data[3] == 0 && rdata.data[4] == 1)
found = ISC_TRUE;
@ -17112,7 +17112,7 @@ keydone(isc_task_t *task, isc_event_t *event) {
clear_pending = ISC_TRUE;
}
} else if (rdata.length == 5 &&
memcmp(rdata.data, keydone->data, 5) == 0)
memcmp(rdata.data, kd->data, 5) == 0)
found = ISC_TRUE;
if (found)

View file

@ -221,17 +221,17 @@ isc_backtrace_gettrace(void **addrs, int maxaddrs, int *nframes) {
#endif
isc_result_t
isc_backtrace_getsymbolfromindex(int index, const void **addrp,
isc_backtrace_getsymbolfromindex(int idx, const void **addrp,
const char **symbolp)
{
REQUIRE(addrp != NULL && *addrp == NULL);
REQUIRE(symbolp != NULL && *symbolp == NULL);
if (index < 0 || index >= isc__backtrace_nsymbols)
if (idx < 0 || idx >= isc__backtrace_nsymbols)
return (ISC_R_RANGE);
*addrp = isc__backtrace_symtable[index].addr;
*symbolp = isc__backtrace_symtable[index].symbol;
*addrp = isc__backtrace_symtable[idx].addr;
*symbolp = isc__backtrace_symtable[idx].symbol;
return (ISC_R_SUCCESS);
}

View file

@ -74,7 +74,7 @@ struct isc_heap {
isc_result_t
isc_heap_create(isc_mem_t *mctx, isc_heapcompare_t compare,
isc_heapindex_t index, unsigned int size_increment,
isc_heapindex_t idx, unsigned int size_increment,
isc_heap_t **heapp)
{
isc_heap_t *heap;
@ -96,7 +96,7 @@ isc_heap_create(isc_mem_t *mctx, isc_heapcompare_t compare,
heap->last = 0;
heap->array = NULL;
heap->compare = compare;
heap->index = index;
heap->index = idx;
*heapp = heap;
@ -203,14 +203,14 @@ isc_heap_insert(isc_heap_t *heap, void *elt) {
}
void
isc_heap_delete(isc_heap_t *heap, unsigned int index) {
isc_heap_delete(isc_heap_t *heap, unsigned int idx) {
void *elt;
isc_boolean_t less;
REQUIRE(VALID_HEAP(heap));
REQUIRE(index >= 1 && index <= heap->last);
REQUIRE(idx >= 1 && idx <= heap->last);
if (index == heap->last) {
if (idx == heap->last) {
heap->array[heap->last] = NULL;
heap->last--;
} else {
@ -218,38 +218,38 @@ isc_heap_delete(isc_heap_t *heap, unsigned int index) {
heap->array[heap->last] = NULL;
heap->last--;
less = heap->compare(elt, heap->array[index]);
heap->array[index] = elt;
less = heap->compare(elt, heap->array[idx]);
heap->array[idx] = elt;
if (less)
float_up(heap, index, heap->array[index]);
float_up(heap, idx, heap->array[idx]);
else
sink_down(heap, index, heap->array[index]);
sink_down(heap, idx, heap->array[idx]);
}
}
void
isc_heap_increased(isc_heap_t *heap, unsigned int index) {
isc_heap_increased(isc_heap_t *heap, unsigned int idx) {
REQUIRE(VALID_HEAP(heap));
REQUIRE(index >= 1 && index <= heap->last);
REQUIRE(idx >= 1 && idx <= heap->last);
float_up(heap, index, heap->array[index]);
float_up(heap, idx, heap->array[idx]);
}
void
isc_heap_decreased(isc_heap_t *heap, unsigned int index) {
isc_heap_decreased(isc_heap_t *heap, unsigned int idx) {
REQUIRE(VALID_HEAP(heap));
REQUIRE(index >= 1 && index <= heap->last);
REQUIRE(idx >= 1 && idx <= heap->last);
sink_down(heap, index, heap->array[index]);
sink_down(heap, idx, heap->array[idx]);
}
void *
isc_heap_element(isc_heap_t *heap, unsigned int index) {
isc_heap_element(isc_heap_t *heap, unsigned int idx) {
REQUIRE(VALID_HEAP(heap));
REQUIRE(index >= 1);
REQUIRE(idx >= 1);
if (index <= heap->last)
return (heap->array[index]);
if (idx <= heap->last)
return (heap->array[idx]);
return (NULL);
}

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2004-2007, 2009, 2013 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2004-2007, 2009, 2013, 2015 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1999-2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@ -203,6 +203,16 @@ isc_app_run(void);
*\li ISC_R_RELOAD Reload has been requested.
*/
isc_boolean_t
isc_app_isrunning(void);
/*!<
* \brief Return if the ISC library application is running.
*
* Returns:
*\li ISC_TRUE App is running.
*\li ISC_FALSE App is not running.
*/
isc_result_t
isc_app_ctxshutdown(isc_appctx_t *ctx);

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2004-2012, 2015 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1997-2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2009-2013 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2009-2013, 2015 Internet Systems Consortium, Inc. ("ISC")
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -29,6 +29,7 @@
#define isc_app_ctxstart isc__app_ctxstart
#define isc_app_onrun isc__app_onrun
#define isc_app_run isc__app_run
#define isc_app_isrunning isc__app_isrunning
#define isc_app_ctxrun isc__app_ctxrun
#define isc_app_shutdown isc__app_shutdown
#define isc_app_ctxfinish isc__app_ctxfinish

View file

@ -70,7 +70,7 @@ alloc_pool(isc_mem_t *mctx, unsigned int count, isc_pool_t **poolp) {
isc_result_t
isc_pool_create(isc_mem_t *mctx, unsigned int count,
isc_pooldeallocator_t free,
isc_pooldeallocator_t release,
isc_poolinitializer_t init, void *initarg,
isc_pool_t **poolp)
{
@ -85,7 +85,7 @@ isc_pool_create(isc_mem_t *mctx, unsigned int count,
if (result != ISC_R_SUCCESS)
return (result);
pool->free = free;
pool->free = release;
pool->init = init;
pool->initarg = initarg;

View file

@ -210,10 +210,10 @@ isc_socket_gettype(isc_socket_t *sock) {
}
void
isc_socket_setname(isc_socket_t *socket, const char *name, void *tag) {
REQUIRE(ISCAPI_SOCKET_VALID(socket));
isc_socket_setname(isc_socket_t *sock, const char *name, void *tag) {
REQUIRE(ISCAPI_SOCKET_VALID(sock));
UNUSED(socket); /* in case REQUIRE() is empty */
UNUSED(sock); /* in case REQUIRE() is empty */
UNUSED(name);
UNUSED(tag);
}

View file

@ -156,6 +156,13 @@ struct isc__taskmgr {
isc_boolean_t pause_requested;
isc_boolean_t exclusive_requested;
isc_boolean_t exiting;
/*
* Multiple threads can read/write 'excl' at the same time, so we need
* to protect the access. We can't use 'lock' since isc_task_detach()
* will try to acquire it.
*/
isc_mutex_t excl_lock;
isc__task_t *excl;
#ifdef USE_SHARED_MANAGER
unsigned int refs;
@ -1307,6 +1314,7 @@ manager_free(isc__taskmgr_t *manager) {
isc_mem_free(manager->mctx, manager->threads);
#endif /* USE_WORKER_THREADS */
DESTROYLOCK(&manager->lock);
DESTROYLOCK(&manager->excl_lock);
manager->common.impmagic = 0;
manager->common.magic = 0;
mctx = manager->mctx;
@ -1359,6 +1367,11 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
result = isc_mutex_init(&manager->lock);
if (result != ISC_R_SUCCESS)
goto cleanup_mgr;
result = isc_mutex_init(&manager->excl_lock);
if (result != ISC_R_SUCCESS) {
DESTROYLOCK(&manager->lock);
goto cleanup_mgr;
}
#ifdef USE_WORKER_THREADS
manager->workers = 0;
@ -1490,8 +1503,10 @@ isc__taskmgr_destroy(isc_taskmgr_t **managerp) {
/*
* Detach the exclusive task before acquiring the manager lock
*/
LOCK(&manager->excl_lock);
if (manager->excl != NULL)
isc__task_detach((isc_task_t **) &manager->excl);
UNLOCK(&manager->excl_lock);
/*
* Unlike elsewhere, we're going to hold this lock a long time.
@ -1650,23 +1665,29 @@ isc__taskmgr_setexcltask(isc_taskmgr_t *mgr0, isc_task_t *task0) {
REQUIRE(VALID_MANAGER(mgr));
REQUIRE(VALID_TASK(task));
LOCK(&mgr->excl_lock);
if (mgr->excl != NULL)
isc__task_detach((isc_task_t **) &mgr->excl);
isc__task_attach(task0, (isc_task_t **) &mgr->excl);
UNLOCK(&mgr->excl_lock);
}
ISC_TASKFUNC_SCOPE isc_result_t
isc__taskmgr_excltask(isc_taskmgr_t *mgr0, isc_task_t **taskp) {
isc__taskmgr_t *mgr = (isc__taskmgr_t *) mgr0;
isc_result_t result = ISC_R_SUCCESS;
REQUIRE(VALID_MANAGER(mgr));
REQUIRE(taskp != NULL && *taskp == NULL);
if (mgr->excl == NULL)
return (ISC_R_NOTFOUND);
LOCK(&mgr->excl_lock);
if (mgr->excl != NULL)
isc__task_attach((isc_task_t *) mgr->excl, taskp);
else
result = ISC_R_NOTFOUND;
UNLOCK(&mgr->excl_lock);
isc__task_attach((isc_task_t *) mgr->excl, taskp);
return (ISC_R_SUCCESS);
return (result);
}
ISC_TASKFUNC_SCOPE isc_result_t

View file

@ -90,6 +90,7 @@ ISC_APPFUNC_SCOPE isc_result_t isc__app_onrun(isc_mem_t *mctx,
void *arg);
ISC_APPFUNC_SCOPE isc_result_t isc__app_ctxrun(isc_appctx_t *ctx);
ISC_APPFUNC_SCOPE isc_result_t isc__app_run(void);
ISC_APPFUNC_SCOPE isc_boolean_t isc__app_isrunning(void);
ISC_APPFUNC_SCOPE isc_result_t isc__app_ctxshutdown(isc_appctx_t *ctx);
ISC_APPFUNC_SCOPE isc_result_t isc__app_shutdown(void);
ISC_APPFUNC_SCOPE isc_result_t isc__app_reload(void);
@ -145,6 +146,7 @@ typedef struct isc__appctx {
} isc__appctx_t;
static isc__appctx_t isc_g_appctx;
static isc_boolean_t is_running = ISC_FALSE;
static struct {
isc_appmethods_t methods;
@ -154,7 +156,8 @@ static struct {
*/
#ifndef BIND9
void *run, *shutdown, *start, *onrun,
*reload, *finish, *block, *unblock;
*reload, *finish, *block, *unblock,
*isrunning;
#endif
} appmethods = {
{
@ -174,7 +177,7 @@ static struct {
(void *)isc__app_run, (void *)isc__app_shutdown,
(void *)isc__app_start, (void *)isc__app_onrun, (void *)isc__app_reload,
(void *)isc__app_finish, (void *)isc__app_block,
(void *)isc__app_unblock
(void *)isc__app_unblock, (void *)isc__app_isrunning
#endif
};
@ -728,7 +731,18 @@ isc__app_ctxrun(isc_appctx_t *ctx0) {
ISC_APPFUNC_SCOPE isc_result_t
isc__app_run(void) {
return (isc__app_ctxrun((isc_appctx_t *)&isc_g_appctx));
isc_result_t result;
is_running = ISC_TRUE;
result = isc__app_ctxrun((isc_appctx_t *)&isc_g_appctx);
is_running = ISC_FALSE;
return (result);
}
ISC_APPFUNC_SCOPE isc_boolean_t
isc__app_isrunning(void) {
return (is_running);
}
ISC_APPFUNC_SCOPE isc_result_t

View file

@ -135,12 +135,12 @@ isc_file_mode(const char *file, mode_t *modep) {
}
isc_result_t
isc_file_getmodtime(const char *file, isc_time_t *time) {
isc_file_getmodtime(const char *file, isc_time_t *modtime) {
isc_result_t result;
struct stat stats;
REQUIRE(file != NULL);
REQUIRE(time != NULL);
REQUIRE(modtime != NULL);
result = file_stats(file, &stats);
@ -149,16 +149,16 @@ isc_file_getmodtime(const char *file, isc_time_t *time) {
* XXXDCL some operating systems provide nanoseconds, too,
* such as BSD/OS via st_mtimespec.
*/
isc_time_set(time, stats.st_mtime, 0);
isc_time_set(modtime, stats.st_mtime, 0);
return (result);
}
isc_result_t
isc_file_settime(const char *file, isc_time_t *time) {
isc_file_settime(const char *file, isc_time_t *when) {
struct timeval times[2];
REQUIRE(file != NULL && time != NULL);
REQUIRE(file != NULL && when != NULL);
/*
* tv_sec is at least a 32 bit quantity on all platforms we're
@ -170,7 +170,7 @@ isc_file_settime(const char *file, isc_time_t *time) {
* * isc_time_seconds is changed to be > 32 bits but long is 32 bits
* and isc_time_seconds has at least 33 significant bits.
*/
times[0].tv_sec = times[1].tv_sec = (long)isc_time_seconds(time);
times[0].tv_sec = times[1].tv_sec = (long)isc_time_seconds(when);
/*
* Here is the real check for the high bit being set.
@ -186,7 +186,7 @@ isc_file_settime(const char *file, isc_time_t *time) {
* we can at least cast to signed so the IRIX compiler shuts up.
*/
times[0].tv_usec = times[1].tv_usec =
(isc_int32_t)(isc_time_nanoseconds(time) / 1000);
(isc_int32_t)(isc_time_nanoseconds(when) / 1000);
if (utimes(file, times) < 0)
return (isc__errno2result(errno));

View file

@ -5957,33 +5957,33 @@ isc__socketmgr_dispatch(isc_socketmgr_t *manager0, isc_socketwait_t *swait) {
#ifdef BIND9
void
isc__socket_setname(isc_socket_t *socket0, const char *name, void *tag) {
isc__socket_t *socket = (isc__socket_t *)socket0;
isc__socket_t *sock = (isc__socket_t *)socket0;
/*
* Name 'socket'.
* Name 'sock'.
*/
REQUIRE(VALID_SOCKET(socket));
REQUIRE(VALID_SOCKET(sock));
LOCK(&socket->lock);
memset(socket->name, 0, sizeof(socket->name));
strncpy(socket->name, name, sizeof(socket->name) - 1);
socket->tag = tag;
UNLOCK(&socket->lock);
LOCK(&sock->lock);
memset(sock->name, 0, sizeof(sock->name));
strncpy(sock->name, name, sizeof(sock->name) - 1);
sock->tag = tag;
UNLOCK(&sock->lock);
}
ISC_SOCKETFUNC_SCOPE const char *
isc__socket_getname(isc_socket_t *socket0) {
isc__socket_t *socket = (isc__socket_t *)socket0;
isc__socket_t *sock = (isc__socket_t *)socket0;
return (socket->name);
return (sock->name);
}
void *
isc__socket_gettag(isc_socket_t *socket0) {
isc__socket_t *socket = (isc__socket_t *)socket0;
isc__socket_t *sock = (isc__socket_t *)socket0;
return (socket->tag);
return (sock->tag);
}
#endif /* BIND9 */
@ -5996,9 +5996,9 @@ isc__socket_register(void) {
ISC_SOCKETFUNC_SCOPE int
isc__socket_getfd(isc_socket_t *socket0) {
isc__socket_t *socket = (isc__socket_t *)socket0;
isc__socket_t *sock = (isc__socket_t *)socket0;
return ((short) socket->fd);
return ((short) sock->fd);
}
#if defined(HAVE_LIBXML2) && defined(BIND9)

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2004, 2007, 2009, 2014 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2004, 2007, 2009, 2014, 2015 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1999-2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@ -196,6 +196,11 @@ isc__app_run(void) {
return (ISC_R_SUCCESS);
}
isc_boolean_t
isc__app_isrunning(void) {
return (running);
}
isc_result_t
isc__app_shutdown(void) {
isc_boolean_t want_kill = ISC_TRUE;

View file

@ -17,6 +17,7 @@ isc___mempool_put
isc___socketmgr_maxudp
isc__app_block
isc__app_finish
isc__app_isrunning
isc__app_onrun
isc__app_reload
isc__app_run

View file

@ -79,7 +79,7 @@
./bin/dig/Makefile.in MAKE 2000,2001,2002,2004,2005,2007,2009,2012,2013
./bin/dig/dig.1 MAN DOCBOOK
./bin/dig/dig.c C 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014
./bin/dig/dig.docbook SGML 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2013,2014
./bin/dig/dig.docbook SGML 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2013,2014,2015
./bin/dig/dig.html HTML DOCBOOK
./bin/dig/dighost.c C 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015
./bin/dig/host.1 MAN DOCBOOK
@ -232,7 +232,7 @@
./bin/named/include/named/lwdclient.h C 2000,2001,2004,2005,2007,2009
./bin/named/include/named/lwresd.h C 2000,2001,2004,2005,2006,2007
./bin/named/include/named/lwsearch.h C 2000,2001,2004,2005,2007
./bin/named/include/named/main.h C 1999,2000,2001,2002,2004,2005,2007,2009,2013
./bin/named/include/named/main.h C 1999,2000,2001,2002,2004,2005,2007,2009,2013,2015
./bin/named/include/named/notify.h C 1999,2000,2001,2004,2005,2007,2009
./bin/named/include/named/ns_smf_globals.h C 2005,2007
./bin/named/include/named/query.h C 1999,2000,2001,2002,2004,2005,2007,2010,2011,2013,2014
@ -266,7 +266,7 @@
./bin/named/named.conf.5 MAN DOCBOOK
./bin/named/named.conf.docbook SGML 2004,2005,2006,2007,2008,2009,2010,2011,2013,2014
./bin/named/named.conf.html HTML DOCBOOK
./bin/named/named.docbook SGML 2000,2001,2003,2004,2005,2006,2007,2008,2009,2011,2013,2014
./bin/named/named.docbook SGML 2000,2001,2003,2004,2005,2006,2007,2008,2009,2011,2013,2014,2015
./bin/named/named.html HTML DOCBOOK
./bin/named/notify.c C 1999,2000,2001,2002,2003,2004,2005,2006,2007
./bin/named/query.c C 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015
@ -289,7 +289,7 @@
./bin/named/win32/named.vcxproj.filters.in X 2013
./bin/named/win32/named.vcxproj.in X 2013,2015
./bin/named/win32/named.vcxproj.user X 2013
./bin/named/win32/ntservice.c C 1999,2000,2001,2002,2004,2006,2007,2009,2011,2013,2014
./bin/named/win32/ntservice.c C 1999,2000,2001,2002,2004,2006,2007,2009,2011,2013,2014,2015
./bin/named/win32/os.c C 1999,2000,2001,2002,2004,2005,2007,2008,2009,2012,2013,2014,2015
./bin/named/xfrout.c C 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013
./bin/named/zoneconf.c C 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015
@ -297,7 +297,7 @@
./bin/nsupdate/Makefile.in MAKE 2000,2001,2002,2004,2006,2007,2008,2009,2012,2013,2014
./bin/nsupdate/nsupdate.1 MAN DOCBOOK
./bin/nsupdate/nsupdate.c C 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015
./bin/nsupdate/nsupdate.docbook SGML 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2014
./bin/nsupdate/nsupdate.docbook SGML 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2014,2015
./bin/nsupdate/nsupdate.html HTML DOCBOOK
./bin/nsupdate/win32/nsupdate.dsp.in X 2001,2004,2005,2009,2013
./bin/nsupdate/win32/nsupdate.dsw X 2001
@ -357,7 +357,7 @@
./bin/python/dnssec-coverage.8 MAN 2013,2014
./bin/python/dnssec-coverage.docbook SGML 2013,2014
./bin/python/dnssec-coverage.html HTML 2013,2014
./bin/python/dnssec-coverage.py.in PYTHON 2013,2014
./bin/python/dnssec-coverage.py.in PYTHON 2013,2014,2015
./bin/rndc/.gitignore X 2012,2014
./bin/rndc/Makefile.in MAKE 2000,2001,2002,2004,2007,2009,2012
./bin/rndc/include/rndc/os.h C 2001,2004,2005,2007,2009
@ -684,7 +684,7 @@
./bin/tests/sym_test.c C 1998,1999,2000,2001,2004,2005,2007
./bin/tests/system/.gitignore X 2012,2014
./bin/tests/system/Makefile.in MAKE 2000,2001,2004,2007,2008,2010,2011,2012,2013,2014
./bin/tests/system/README TXT.BRIEF 2000,2001,2004,2010,2011,2013
./bin/tests/system/README TXT.BRIEF 2000,2001,2004,2010,2011,2013,2015
./bin/tests/system/acl/clean.sh SH 2008,2012,2014
./bin/tests/system/acl/ns2/named1.conf CONF-C 2008
./bin/tests/system/acl/ns2/named2.conf CONF-C 2008
@ -1625,7 +1625,7 @@
./bin/tests/system/spf/ns1/named.conf CONF-C 2013
./bin/tests/system/spf/ns1/spf.db ZONE 2013
./bin/tests/system/spf/tests.sh SH 2013,2014
./bin/tests/system/start.pl SH 2001,2004,2005,2006,2007,2008,2010,2011,2012,2013,2014
./bin/tests/system/start.pl SH 2001,2004,2005,2006,2007,2008,2010,2011,2012,2013,2014,2015
./bin/tests/system/start.sh SH 2000,2001,2004,2007,2012
./bin/tests/system/staticstub/clean.sh SH 2010,2012,2014
./bin/tests/system/staticstub/conf/bad01.conf CONF-C 2010
@ -2346,6 +2346,7 @@
./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/dnssec-keyset.sh X 2015
./contrib/sdb/bdb/README X 2002
./contrib/sdb/bdb/bdb.c X 2002,2011,2014
./contrib/sdb/bdb/bdb.h X 2002
@ -2747,7 +2748,7 @@
./lib/dns/include/dns/version.h C 2001,2004,2005,2006,2007
./lib/dns/include/dns/view.h C 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014
./lib/dns/include/dns/xfrin.h C 1999,2000,2001,2003,2004,2005,2006,2007,2009
./lib/dns/include/dns/zone.h C 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013
./lib/dns/include/dns/zone.h C 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2015
./lib/dns/include/dns/zonekey.h C 2001,2004,2005,2006,2007
./lib/dns/include/dns/zt.h C 1999,2000,2001,2002,2004,2005,2006,2007,2011
./lib/dns/include/dst/Makefile.in MAKE 1998,1999,2000,2001,2004,2007,2012
@ -2933,7 +2934,7 @@
./lib/dns/rdatasetiter.c C 1999,2000,2001,2004,2005,2007
./lib/dns/rdataslab.c C 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014
./lib/dns/request.c C 2000,2001,2002,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014
./lib/dns/resolver.c C 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014
./lib/dns/resolver.c C 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015
./lib/dns/result.c C 1998,1999,2000,2001,2002,2003,2004,2005,2007,2008,2009,2010,2011,2012,2013
./lib/dns/rootns.c C 1999,2000,2001,2002,2004,2005,2007,2008,2010,2012,2013,2014,2015
./lib/dns/rpz.c C 2011,2012,2013,2014,2015
@ -3119,7 +3120,7 @@
./lib/isc/ia64/include/isc/atomic.h C 2006,2007,2009,2012
./lib/isc/include/Makefile.in MAKE 1998,1999,2000,2001,2004,2007,2012
./lib/isc/include/isc/Makefile.in MAKE 1998,1999,2000,2001,2003,2004,2005,2006,2007,2008,2009,2012,2013,2014
./lib/isc/include/isc/app.h C 1999,2000,2001,2004,2005,2006,2007,2009,2013
./lib/isc/include/isc/app.h C 1999,2000,2001,2004,2005,2006,2007,2009,2013,2015
./lib/isc/include/isc/assertions.h C 1997,1998,1999,2000,2001,2004,2005,2006,2007,2008,2009
./lib/isc/include/isc/backtrace.h C 2009
./lib/isc/include/isc/base32.h C 2008,2014
@ -3155,11 +3156,11 @@
./lib/isc/include/isc/log.h C 1999,2000,2001,2002,2004,2005,2006,2007,2009
./lib/isc/include/isc/magic.h C 1999,2000,2001,2004,2005,2006,2007
./lib/isc/include/isc/md5.h C 2000,2001,2004,2005,2006,2007,2009,2010
./lib/isc/include/isc/mem.h C 1997,1998,1999,2000,2001,2004,2005,2006,2007,2008,2009,2010,2011,2012
./lib/isc/include/isc/mem.h C 1997,1998,1999,2000,2001,2004,2005,2006,2007,2008,2009,2010,2011,2012,2015
./lib/isc/include/isc/msgcat.h C 1999,2000,2001,2004,2005,2007
./lib/isc/include/isc/msgs.h C 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
./lib/isc/include/isc/mutexblock.h C 1999,2000,2001,2004,2005,2006,2007
./lib/isc/include/isc/namespace.h C 2009,2010,2011,2012,2013
./lib/isc/include/isc/namespace.h C 2009,2010,2011,2012,2013,2015
./lib/isc/include/isc/netaddr.h C 1998,1999,2000,2001,2002,2004,2005,2006,2007,2009
./lib/isc/include/isc/netscope.h C 2002,2004,2005,2006,2007,2009
./lib/isc/include/isc/ondestroy.h C 2000,2001,2004,2005,2006,2007
@ -3344,7 +3345,7 @@
./lib/isc/version.c C 1998,1999,2000,2001,2004,2005,2007
./lib/isc/win32/DLLMain.c C 2001,2004,2007
./lib/isc/win32/Makefile.in MAKE 1999,2000,2001,2004,2007,2009,2012
./lib/isc/win32/app.c C 1999,2000,2001,2004,2007,2009,2014
./lib/isc/win32/app.c C 1999,2000,2001,2004,2007,2009,2014,2015
./lib/isc/win32/condition.c C 1998,1999,2000,2001,2004,2006,2007
./lib/isc/win32/dir.c C 1999,2000,2001,2004,2007,2008,2009,2011,2012,2013
./lib/isc/win32/entropy.c C 2000,2001,2002,2004,2007,2009,2013