server.c revision 69a838727b18f26ca1ece2850303caba7875a677
2dd6ffb5cb356956685484160b0fdf157e2e9787Tinderbox User * Copyright (C) 2004-2015 Internet Systems Consortium, Inc. ("ISC")
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews * Copyright (C) 1999-2003 Internet Software Consortium.
ec5347e2c775f027573ce5648b910361aa926c01Automatic Updater * Permission to use, copy, modify, and/or distribute this software for any
1633838b8255282d10af15c5c84cee5a51466712Bob Halley * purpose with or without fee is hereby granted, provided that the above
1633838b8255282d10af15c5c84cee5a51466712Bob Halley * copyright notice and this permission notice appear in all copies.
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews * PERFORMANCE OF THIS SOFTWARE.
0fc87fa2f38df7b293b650deacfa5e6c3d50eff9Bob Halley#endif /* HAVE_GEOIP */
d5069ac954d067aa45ad395fc338f7e499b834c1David Lawrence#endif /* TUNE_LARGE */
6fa1cb5754695d550a58c6e8978fda65f5146af7David Lawrence * Check an operation for failure. Assumes that the function
d5069ac954d067aa45ad395fc338f7e499b834c1David Lawrence * using it has a 'result' variable and a 'cleanup' label.
6fa1cb5754695d550a58c6e8978fda65f5146af7David Lawrence } while (0) \
585529aaeb95a71cd3d95df2602a4688fc7c3292David Lawrence } while (0) \
b592e197fe354d7258dc4166fce0a9425a338b0bBob Halley } while (0) \
585529aaeb95a71cd3d95df2602a4688fc7c3292David Lawrence * Maximum ADB size for views that share a cache. Use this limit to suppress
585529aaeb95a71cd3d95df2602a4688fc7c3292David Lawrence * the total of memory footprint, which should be the main reason for sharing
585529aaeb95a71cd3d95df2602a4688fc7c3292David Lawrence * a cache. Only effective when a finite max-cache-size is specified.
585529aaeb95a71cd3d95df2602a4688fc7c3292David Lawrence * This is currently defined to be 8MB.
28b863e609ff2d97b78663b46894494cfa2ea411Mark Andrews * Configuration context to retain for each view that allows
28b863e609ff2d97b78663b46894494cfa2ea411Mark Andrews * new zones to be added at runtime.
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt * Holds state information for the initial zone loading process.
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt * Uses the isc_refcount structure to count the number of views
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt * with pending zone loads, dereferencing as each view finishes.
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunttypedef struct {
1d9958c6cc291916010779792f0fbdf6cd5ba368Mark Andrews * These zones should not leak onto the Internet.
1d9958c6cc291916010779792f0fbdf6cd5ba368Mark Andrewsconst char *empty_zones[] = {
1d9958c6cc291916010779792f0fbdf6cd5ba368Mark Andrews /* RFC 1918 */
1d9958c6cc291916010779792f0fbdf6cd5ba368Mark Andrews "10.IN-ADDR.ARPA",
11d732daac76a24a0f3e5948a2758a4b866a0825David Lawrence "16.172.IN-ADDR.ARPA",
ff8cd3afa7f900d7986ccbc3638235cb8ad6f1ecAndreas Gustafsson "17.172.IN-ADDR.ARPA",
ff8cd3afa7f900d7986ccbc3638235cb8ad6f1ecAndreas Gustafsson "18.172.IN-ADDR.ARPA",
ff8cd3afa7f900d7986ccbc3638235cb8ad6f1ecAndreas Gustafsson "19.172.IN-ADDR.ARPA",
ff8cd3afa7f900d7986ccbc3638235cb8ad6f1ecAndreas Gustafsson "20.172.IN-ADDR.ARPA",
ff8cd3afa7f900d7986ccbc3638235cb8ad6f1ecAndreas Gustafsson "21.172.IN-ADDR.ARPA",
b38ab99bdc833da490c0ca0cbd05fb9d54dff997Andreas Gustafsson "22.172.IN-ADDR.ARPA",
b38ab99bdc833da490c0ca0cbd05fb9d54dff997Andreas Gustafsson "23.172.IN-ADDR.ARPA",
6ebd91a0c7f4c62a501b67adce4a6800d8b7dfacAutomatic Updater "24.172.IN-ADDR.ARPA",
ff8cd3afa7f900d7986ccbc3638235cb8ad6f1ecAndreas Gustafsson "25.172.IN-ADDR.ARPA",
ff8cd3afa7f900d7986ccbc3638235cb8ad6f1ecAndreas Gustafsson "26.172.IN-ADDR.ARPA",
b38ab99bdc833da490c0ca0cbd05fb9d54dff997Andreas Gustafsson "27.172.IN-ADDR.ARPA",
fcb54ce0a4f7377486df5bec83b3aa4711bf4131Mark Andrews "28.172.IN-ADDR.ARPA",
fcb54ce0a4f7377486df5bec83b3aa4711bf4131Mark Andrews "29.172.IN-ADDR.ARPA",
b38ab99bdc833da490c0ca0cbd05fb9d54dff997Andreas Gustafsson "30.172.IN-ADDR.ARPA",
b38ab99bdc833da490c0ca0cbd05fb9d54dff997Andreas Gustafsson "31.172.IN-ADDR.ARPA",
6ebd91a0c7f4c62a501b67adce4a6800d8b7dfacAutomatic Updater "168.192.IN-ADDR.ARPA",
b38ab99bdc833da490c0ca0cbd05fb9d54dff997Andreas Gustafsson /* RFC 6598 */
6ebd91a0c7f4c62a501b67adce4a6800d8b7dfacAutomatic Updater "64.100.IN-ADDR.ARPA",
a6f0e9c985220f0e4509777e6528afb64e0ad576Mukund Sivaraman "65.100.IN-ADDR.ARPA",
a6f0e9c985220f0e4509777e6528afb64e0ad576Mukund Sivaraman "66.100.IN-ADDR.ARPA",
a6f0e9c985220f0e4509777e6528afb64e0ad576Mukund Sivaraman "67.100.IN-ADDR.ARPA",
a6f0e9c985220f0e4509777e6528afb64e0ad576Mukund Sivaraman "68.100.IN-ADDR.ARPA",
ff8cd3afa7f900d7986ccbc3638235cb8ad6f1ecAndreas Gustafsson "69.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "70.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "71.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "72.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "73.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "74.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "75.100.IN-ADDR.ARPA",
6ebd91a0c7f4c62a501b67adce4a6800d8b7dfacAutomatic Updater "76.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "77.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "78.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "79.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "80.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "81.100.IN-ADDR.ARPA",
99bf6a57d9f6b55da6de9c22fb6883a4bf7d569eEvan Hunt "82.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "83.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "84.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "85.100.IN-ADDR.ARPA",
6ebd91a0c7f4c62a501b67adce4a6800d8b7dfacAutomatic Updater "86.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "87.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "88.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "89.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "90.100.IN-ADDR.ARPA",
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews "91.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "92.100.IN-ADDR.ARPA",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "93.100.IN-ADDR.ARPA",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "94.100.IN-ADDR.ARPA",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "95.100.IN-ADDR.ARPA",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "96.100.IN-ADDR.ARPA",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "97.100.IN-ADDR.ARPA",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "98.100.IN-ADDR.ARPA",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "99.100.IN-ADDR.ARPA",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "100.100.IN-ADDR.ARPA",
a147de10fe5e19e593d42152ffd6879eca69860dEvan Hunt "101.100.IN-ADDR.ARPA",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "102.100.IN-ADDR.ARPA",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "103.100.IN-ADDR.ARPA",
a147de10fe5e19e593d42152ffd6879eca69860dEvan Hunt "104.100.IN-ADDR.ARPA",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "105.100.IN-ADDR.ARPA",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "106.100.IN-ADDR.ARPA",
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt "107.100.IN-ADDR.ARPA",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "108.100.IN-ADDR.ARPA",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "109.100.IN-ADDR.ARPA",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "110.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "111.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "112.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "113.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "114.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "115.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "116.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "117.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "118.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "119.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "120.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "121.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "122.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "123.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "124.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "125.100.IN-ADDR.ARPA",
8a6f41d86ac80fd1397ffee65bed5131129a84e2Mark Andrews "126.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt "127.100.IN-ADDR.ARPA",
aeff7de836558fa8002ab5db35292d2bb6450da8Evan Hunt /* RFC 5735 and RFC 5737 */
ISC_PLATFORM_NORETURN_PRE static void
static isc_result_t
static isc_result_t
static isc_result_t
static isc_result_t
static isc_result_t
static isc_result_t
static inline isc_result_t
static isc_result_t
static isc_result_t
static inline isc_result_t
static isc_result_t
return (ISC_R_SUCCESS);
return (result);
static isc_result_t
return (ISC_R_SUCCESS);
return (result);
static isc_result_t
isc_buffer_t b;
const char *str;
return (ISC_R_SUCCESS);
return (ISC_R_SUCCESS);
return (result);
* we have foo.example.com and bar.example.com, we'd get a match
* for baz.example.com, which is not the expected result.
goto cleanup;
return (result);
return (result);
static isc_result_t
isc_region_t r;
if (managed) {
const char *initmethod;
goto cleanup;
&viewclass));
return (ISC_R_SUCCESS);
return (result);
static isc_result_t
goto cleanup;
return (result);
static isc_result_t
const char *directory;
return (ISC_R_SUCCESS);
&view_keys);
return (ISC_R_UNEXPECTED);
return (ISC_R_UNEXPECTED);
&builtin_keys);
&builtin_keys);
&builtin_keys);
&builtin_keys);
mctx));
goto cleanup;
return (result);
static isc_result_t
const char *str;
isc_buffer_t b;
return (result);
static isc_result_t
switch (af) {
case AF_INET:
case AF_INET6:
INSIST(0);
switch (af) {
case AF_INET:
case AF_INET6:
INSIST(0);
return (ISC_R_SUCCESS);
attrs = 0;
switch (af) {
case AF_INET:
case AF_INET6:
if (is_firstview) {
attrmask = 0;
switch (af) {
case AF_INET:
case AF_INET6:
return (ISC_R_SUCCESS);
buf);
return (result);
return (ISC_R_SUCCESS);
static isc_result_t
unsigned int mode = 0;
const char *str;
isc_buffer_t b;
return (result);
return (result);
return (result);
mode = 0;
mode = 0;
INSIST(0);
if (addroot) {
return (result);
static isc_result_t
const char *str;
unsigned int prefixlen;
return (result);
#ifdef ISC_PLATFORM_USESIT
INSIST(0);
goto cleanup;
goto cleanup;
goto cleanup;
goto cleanup;
goto cleanup;
goto cleanup;
goto cleanup;
return (ISC_R_SUCCESS);
return (result);
static isc_result_t
const char *str;
isc_buffer_t b;
return (result);
static isc_result_t
const char *str;
isc_buffer_t b;
return (result);
static isc_boolean_t
const char *str;
isc_buffer_t b;
0, NULL);
return (ISC_TRUE);
return (ISC_FALSE);
static isc_result_t
for (i = 0; i < dbtypec; i++)
return (result);
static isc_result_t
return (result);
return (ISC_R_SUCCESS);
static ns_cache_t *
return (nsc);
return (NULL);
static isc_boolean_t
return (ISC_FALSE);
return (ISC_TRUE);
static isc_boolean_t
unsigned int new_cleaning_interval,
return (ISC_FALSE);
return (ISC_FALSE);
return (ISC_TRUE);
static isc_result_t
return (result);
static isc_result_t
const char *contact)
char *cp;
const unsigned char *s6;
isc_buffer_t b;
while (prefixlen > 0) {
return (result);
static isc_result_t
return (result);
static isc_result_t
return (result);
static isc_result_t
const char *str;
return (ISC_R_FAILURE);
return (ISC_R_NOMEMORY);
return (result);
return (result);
return (DNS_R_EMPTYLABEL);
return (result);
return (result);
return (result);
return (result);
return (result);
return (result);
return (result);
return (result);
return (result);
return (ISC_R_SUCCESS);
static isc_result_t
return (ISC_R_SUCCESS);
return (result);
return (result);
if (*old_rpz_okp) {
return (ISC_R_SUCCESS);
if (!(cond)) { \
goto cleanup; \
static isc_result_t
int min_entries, i, j;
return (result);
i, min_entries);
i, DNS_RRL_MAX_PREFIX);
return (ISC_R_SUCCESS);
return (result);
static isc_result_t
return (result);
static isc_result_t
isc_buffer_t b;
&ns, &b));
return (result);
static isc_result_t
const char *str;
int order;
unsigned int nlabels;
0, NULL));
0, NULL));
unsigned int typec;
const char **dbargv;
empty_dbtype));
return (result);
static isc_result_t
unsigned int dlzargc;
char **dlzargv;
unsigned int cleaning_interval;
const char *str;
unsigned int resopts = 0;
max_acache_size = 0;
namebuf);
goto cleanup;
if (s == NULL) {
goto cleanup;
goto cleanup;
&dlzdb);
goto cleanup;
goto cleanup;
max_cache_size = 0;
INSIST(0);
unsigned int prefixlen;
unsigned int dns64options = 0;
&prefixlen);
goto cleanup;
goto cleanup;
goto cleanup;
goto cleanup;
goto cleanup;
goto cleanup;
&pview);
goto cleanup;
zero_no_soattl)) {
&cache));
goto cleanup;
== NULL)));
== NULL)));
goto cleanup;
max_adb_size = 0;
if (max_cache_size != 0U) {
if (max_adb_size == 0U)
#ifdef ISC_PLATFORM_USESIT
if (need_hints)
goto cleanup;
INSIST(0);
* configured in named.conf.
#ifdef ISC_PLATFORM_USESIT
#ifdef ALLOW_FILTER_AAAA
INSIST(0);
INSIST(0);
const char *dom;
const char *str;
isc_buffer_t b;
isc_buffer_t b;
const char *str;
0, NULL));
name));
const char *empty;
int empty_zone = 0;
const char *str;
NULL));
NULL));
INSIST(0);
NULL));
&forwarders);
&pview);
goto cleanup;
statlevel));
goto cleanup;
return (result);
static isc_result_t
return (result);
static isc_result_t
return (ISC_R_RANGE);
NULL));
val);
return (ISC_R_RANGE);
NULL, 0));
return (result);
static isc_result_t
return (ISC_R_RANGE);
return (ISC_R_RANGE);
goto cleanup;
INSIST(0);
goto cleanup;
return (result);
static isc_result_t
const char *viewname;
&viewclass);
return (result);
static isc_result_t
return (result);
return (result);
return (ISC_R_SUCCESS);
static isc_result_t
return (result);
return (ISC_R_EXISTS);
return (result);
return (result);
return (result);
#ifdef HAVE_GEOIP
return (ISC_R_SUCCESS);
static isc_result_t
const char *zname;
const char *ztypestr;
goto cleanup;
goto cleanup;
&otherview);
goto cleanup;
goto cleanup;
goto cleanup;
goto cleanup;
zname);
goto cleanup;
&only);
zname);
goto cleanup;
forwardtype));
goto cleanup;
goto cleanup;
goto cleanup;
goto cleanup;
&zone));
zone));
goto cleanup;
goto cleanup;
goto cleanup;
goto cleanup;
zname);
goto cleanup;
forwardtype));
return (result);
static isc_result_t
&pview);
return (result);
return (ISC_R_SUCCESS);
return (result);
static isc_result_t
const char *directory;
return (result);
return (ISC_R_SUCCESS);
static isc_result_t
#ifdef HAVE_GEOIP
#ifdef HAVE_GEOIP
return (result);
static isc_result_t
return (result);
goto clean;
goto clean;
return (ISC_R_SUCCESS);
return (result);
goto fail;
goto fail;
goto fail;
goto fail;
fail:
goto clean;
static unsigned int oldrequests = 0;
static isc_result_t
char *copy;
return (ISC_R_NOMEMORY);
return (ISC_R_SUCCESS);
static isc_result_t
const char *resource;
if (positive)
if (positive)
hiport);
static isc_result_t
const char *type;
return (ISC_R_SUCCESS);
case dns_zone_master:
case dns_zone_slave:
case dns_zone_stub:
case dns_zone_staticstub:
case dns_zone_redirect:
return (ISC_R_SUCCESS);
static isc_result_t
return (result);
&tsigkey));
goto cleanup;
return (ISC_R_SUCCESS);
return (result);
static isc_result_t
unsigned int algtype;
return (result);
return (result);
if (need_deleteold) {
if (need_createnew) {
goto cleanup;
goto cleanup;
return (result);
return (result);
static isc_result_t
if (!allow) {
return (ISC_R_SUCCESS);
return (ISC_R_NOMEMORY);
return (ISC_R_SUCCESS);
static isc_result_t
int num_zones = 0;
unsigned int maxsocks;
if (first_time) {
filename);
* option where the above parsing failed, parse resolv.conf.
if (ns_g_lwresdonly &&
&config);
&bindkeys_parser));
if (!exclusive) {
maxsocks = 0;
if (maxsocks != 0) {
reserved = 0;
#ifdef HAVE_GEOIP
char *dir;
&udpport_high),
if (!ns_g_disable4)
&udpport_high),
if (!ns_g_disable6)
if (ns_g_port != 0)
&listenon);
} else if (!ns_g_lwresdonly) {
listenon);
&listenon);
} else if (!ns_g_lwresdonly) {
listenon);
goto cleanup;
if (interface_interval == 0) {
if (heartbeat_interval == 0) {
else if (ns_g_lwresdonly)
if (first_time) {
#ifdef PATH_RANDOMDEV
&ns_g_entropy);
if (first_time)
* files specified in named.conf get created by the
if (ns_g_logstderr) {
goto cleanup;
if (first_time) {
&categories);
const char *str;
else if (ns_g_memstatistics)
#ifdef ISC_PLATFORM_USESIT
isc_buffer_t b;
goto cleanup;
#ifdef AES_SIT
#ifdef HMAC_SHA1_SIT
#ifdef HMAC_SHA256_SIT
NULL,
goto cleanup;
if (exclusive)
return (result);
static isc_result_t
unsigned int refs;
if (refs != 0)
return (ISC_R_SUCCESS);
return (ISC_R_SUCCESS);
static isc_result_t
unsigned int refs = 0;
return (ISC_R_NOMEMORY);
goto cleanup;
goto cleanup;
if (refs == 0) {
} else if (init) {
return (result);
static isc_result_t
return (result);
if (ns_g_lwresdonly)
ISC_TRUE),
if (flush)
#ifdef HAVE_GEOIP
#ifdef HAVE_GEOIP
sizeof(isc_event_t));
goto cleanup;
attrs = 0;
case AF_INET:
case AF_INET6:
goto cleanup;
attrmask = 0;
goto cleanup;
static isc_result_t
return (result);
static isc_result_t
return (result);
cleanup: ;
char *res;
return (res);
static isc_result_t
char *classtxt;
if (skip) {
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_SUCCESS);
zonetxt);
zonetxt);
goto report;
return (result);
return (result);
return (ISC_R_UNEXPECTEDEND);
return (result);
return (result);
switch (result) {
case ISC_R_SUCCESS:
case DNS_R_CONTINUE:
case DNS_R_UPTODATE:
return (result);
return (ISC_R_SUCCESS);
return (result);
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_SUCCESS);
return (result);
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_SUCCESS);
return (ISC_R_FAILURE);
char *ptr;
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_NOTFOUND);
return (ISC_R_SUCCESS);
return (ISC_R_SUCCESS);
static isc_result_t
return (result);
goto cleanup;
return (ISC_R_SUCCESS);
return (result);
static isc_result_t
if (ns_g_port != 0) {
return (result);
return (ISC_R_RANGE);
return (ISC_R_RANGE);
return (result);
return (result);
return (ISC_R_SUCCESS);
return (result);
static isc_result_t
return (ISC_R_NOMEMORY);
return (ISC_R_SUCCESS);
static isc_result_t
return (ISC_R_SUCCESS);
return (ISC_R_NOMEMORY);
return (result);
goto cleanup;
goto done;
goto resume;
goto cleanup;
goto nextzone;
goto nextzone;
goto cleanup;
goto nextview;
done:
char *ptr;
const char *sep;
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_NOMEMORY);
goto nextview;
return (ISC_R_SUCCESS);
return (result);
char *ptr;
return (ISC_R_UNEXPECTEDEND);
return (result);
return (result);
char *ptr;
char *levelstr;
char *endp;
long newlevel;
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_RANGE);
return (ISC_R_SUCCESS);
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_UNEXPECTEDEND);
return (DNS_R_SYNTAX);
if (set) {
if (!first)
if (!set)
else if (changed)
return (result);
return (ISC_R_UNEXPECTEDEND);
viewname);
if (!found) {
return (result);
isc_buffer_t b;
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_UNEXPECTEDEND);
return (result);
target);
if (!found)
return (result);
unsigned int automatic;
sizeof(boottime));
sizeof(configtime));
#ifdef ISC_PLATFORM_USETHREADS
return (ISC_R_SUCCESS);
return (result);
char *ptr;
unsigned long count;
return (ISC_R_UNEXPECTEDEND);
for (i = 0; i < count; i++)
return (result);
static isc_result_t
unsigned int *foundkeys)
origin);
return (ISC_R_SUCCESS);
return (result);
goto nextkey;
(*foundkeys)++;
goto again;
return (result);
return (ISC_R_SUCCESS);
unsigned int foundkeys = 0;
return (ISC_R_UNEXPECTEDEND);
&foundkeys);
return (result);
return (result);
static isc_result_t
unsigned int *foundkeys)
const char *viewname;
origin);
return (ISC_R_SUCCESS);
return (result);
sizeof(creatorstr));
if (*foundkeys != 0)
if (*foundkeys != 0)
(*foundkeys)++;
return (ISC_R_SUCCESS);
return (result);
unsigned int foundkeys = 0;
&foundkeys);
return (result);
&foundkeys);
return (result);
if (foundkeys == 0)
return (result);
return (result);
return (DNS_R_NOTMASTER);
return (result);
static isc_result_t
char *journal;
if (cleanup) {
return (result);
return (result);
return (tresult);
sizeof(classstr));
return (result);
return (result);
return (tresult);
return (DNS_R_NOTMASTER);
return (DNS_R_NOTDYNAMIC);
if (freeze) {
if (frozen) {
if (frozen) {
switch (result) {
case ISC_R_SUCCESS:
case DNS_R_UPTODATE:
case DNS_R_CONTINUE:
sizeof(classstr));
return (result);
#ifdef HAVE_LIBSCF
return (result);
const char *zonename;
const char *argp;
goto cleanup;
goto cleanup;
goto cleanup;
goto cleanup;
goto cleanup;
if (offset == 0)
goto cleanup;
cfg_obj_t *p;
goto cleanup;
NULL));
return (result);
static isc_boolean_t
if (first)
return (ISC_FALSE);
return (first);
static isc_result_t
size_t n;
p += znamelen;
if (isspace((unsigned char)*p) ||
found = p;
if (found) {
p = buf;
goto cleanup;
return (result);
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_UNEXPECTEDEND);
goto cleanup;
if (!added) {
} else if (cleanup) {
if (exclusive)
return (result);
static const cfg_obj_t *
const char *map_key_for_list,
const char *name)
const char *vname;
return (result);
goto cleanup;
goto cleanup;
if (exclusive)
return (result);
static isc_result_t
} rnd;
isc_region_t r;
return (ISC_R_RANGE);
return (ISC_R_SUCCESS);
const char *ptr;
size_t n;
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_UNEXPECTEDEND);
hash = 0;
return (ISC_R_UNEXPECTEDEND);
if (n == sizeof(nbuf))
return (ISC_R_NOSPACE);
return (ISC_R_BADNUMBER);
return (ISC_R_RANGE);
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_UNEXPECTEDEND);
if (clear) {
} else if (chain) {
ISC_TRUE));
} else if (setserial) {
} else if (list) {
goto cleanup;
if (!first)
if (!first)
return (result);
static isc_result_t
return (ISC_R_NOSPACE);
return (ISC_R_SUCCESS);
static inline isc_result_t
static isc_result_t
return (ISC_R_NOSPACE);
return (ISC_R_SUCCESS);
static inline isc_result_t
return (putuint8(b, 0));
int nfiles = 0;
goto cleanup;
switch (zonetype) {
case dns_zone_master:
case dns_zone_slave:
case dns_zone_stub:
case dns_zone_staticstub:
case dns_zone_redirect:
case dns_zone_key:
case dns_zone_dlz:
if (hasraw)
if (hasraw) {
DNS_ZONEKEY_MAINTAIN) != 0);
sizeof(kbuf));
sizeof(rtbuf));
for (i = 0; i < nfiles; i++) {
if (hasraw) {
if (secure) {
if (hasraw)
if (maintain) {
} else if (allow)
if (dynamic) {
if (frozen)
for (i = 0; i < nfiles; i++)
return (result);
static inline isc_boolean_t
size_t l;
return (ISC_FALSE);
cmd++;
return (ISC_FALSE);
return (ISC_TRUE);
isc_time_t t;
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_UNEXPECTEDEND);
ntattl = 0;
if (dump) {
goto cleanup;
return (ISC_R_UNEXPECTEDEND);
isc_buffer_t b;
if (!ttlset)
if (ntattl != 0) {
if (excl)
return (result);