diff --git a/lib/dns/config/confctx.c b/lib/dns/config/confctx.c index aabe1f2583..88f39f3ef9 100644 --- a/lib/dns/config/confctx.c +++ b/lib/dns/config/confctx.c @@ -15,7 +15,7 @@ * SOFTWARE. */ -/* $Id: confctx.c,v 1.38 2000/03/28 22:58:14 brister Exp $ */ +/* $Id: confctx.c,v 1.39 2000/03/29 15:00:58 brister Exp $ */ #include @@ -32,54 +32,174 @@ #include "confpvt.h" -/* - * Bit positions in the flags fields of the dns_c_options_t structure. - */ -#define MAX_NCACHE_TTL_BIT 0 -#define TRANSFERS_IN_BIT 1 -#define TRANSFERS_PER_NS_BIT 2 -#define TRANSFERS_OUT_BIT 3 -#define MAX_LOG_SIZE_IXFR_BIT 4 -#define CLEAN_INTERVAL_BIT 5 -#define INTERFACE_INTERVAL_BIT 6 -#define STATS_INTERVAL_BIT 7 -#define HEARTBEAT_INTERVAL_BIT 8 -#define MAX_TRANSFER_TIME_IN_BIT 9 -#define MAX_TRANSFER_TIME_OUT_BIT 10 -#define MAX_TRANSFER_IDLE_IN_BIT 11 -#define MAX_TRANSFER_IDLE_OUT_BIT 12 -#define DATA_SIZE_BIT 13 -#define STACK_SIZE_BIT 14 -#define CORE_SIZE_BIT 15 -#define FILES_BIT 16 -#define QUERY_SOURCE_BIT 17 -#define QUERY_SOURCE_V6_BIT 18 -#define FAKE_IQUERY_BIT 19 -#define RECURSION_BIT 20 -#define FETCH_GLUE_BIT 21 -#define NOTIFY_BIT 22 -#define HOST_STATISTICS_BIT 23 -#define DEALLOC_ON_EXIT_BIT 24 -#define USE_IXFR_BIT 25 -#define MAINTAIN_IXFR_BASE_BIT 26 -#define HAS_OLD_CLIENTS_BIT 27 -#define AUTH_NX_DOMAIN_BIT 28 -#define MULTIPLE_CNAMES_BIT 29 -#define USE_ID_POOL_BIT 30 -#define DIALUP_BIT 31 -#define CHECKNAME_PRIM_BIT 32 -#define CHECKNAME_SEC_BIT 33 -#define CHECKNAME_RESP_BIT 34 -#define OPTIONS_TRANSFER_FORMAT_BIT 35 -#define FORWARD_BIT 36 -#define EXPERT_MODE_BIT 37 -#define RFC2308_TYPE1_BIT 38 -#define TCP_CLIENTS_BIT 39 -#define RECURSIVE_CLIENTS_BIT 40 -#define TRANSFER_SOURCE_BIT 41 -#define TRANSFER_SOURCE_V6_BIT 42 -#define REQUEST_IXFR_BIT 43 -#define PROVIDE_IXFR_BIT 44 +#define SETBOOL(FUNC, FIELD) SETBYTYPE(isc_boolean_t, FUNC, FIELD) +#define GETBOOL(FUNC, FIELD) GETBYTYPE(isc_boolean_t, FUNC, FIELD) +#define UNSETBOOL(FUNC, FIELD) UNSETBYTYPE(isc_boolean_t, FUNC, FIELD) + +#define SETINT32(FUNC, FIELD) SETBYTYPE(isc_int32_t, FUNC, FIELD) +#define GETINT32(FUNC, FIELD) GETBYTYPE(isc_int32_t, FUNC, FIELD) +#define UNSETINT32(FUNC, FIELD) UNSETBYTYPE(isc_int32_t, FUNC, FIELD) + +#define SETUINT32(FUNC, FIELD) SETBYTYPE(isc_uint32_t, FUNC, FIELD) +#define GETUINT32(FUNC, FIELD) GETBYTYPE(isc_uint32_t, FUNC, FIELD) +#define UNSETUINT32(FUNC, FIELD) UNSETBYTYPE(isc_uint32_t, FUNC, FIELD) + +#define SETSOCKADDR(FUNC, FIELD) SETBYTYPE(isc_sockaddr_t, FUNC, FIELD) +#define GETSOCKADDR(FUNC, FIELD) GETBYTYPE(isc_sockaddr_t, FUNC, FIELD) +#define UNSETSOCKADDR(FUNC, FIELD) UNSETBYTYPE(isc_sockaddr_t, FUNC, FIELD) + +#ifdef PVT_CONCAT +#undef PVT_CONCAT +#endif + +#define PVT_CONCAT(x,y) x ## y + +#define SETBYTYPE(TYPE, FUNCNAME, FIELDNAME) \ +isc_result_t \ +PVT_CONCAT(dns_c_ctx_set, FUNCNAME)(dns_c_ctx_t *cfg, TYPE newval) \ +{ \ + isc_result_t result; \ + isc_boolean_t existed = ISC_FALSE; \ + dns_c_options_t *options; \ + \ + REQUIRE(DNS_C_CONFCTX_VALID(cfg)); \ + if (cfg->options == NULL) { \ + result = dns_c_ctx_optionsnew(cfg->mem, &cfg->options); \ + if (result != ISC_R_SUCCESS) { \ + return (result); \ + } \ + } \ + \ + REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); \ + options = cfg->options; \ + \ + if (options->FIELDNAME == NULL) { \ + options->FIELDNAME = isc_mem_get(options->mem, \ + sizeof (TYPE)); \ + if (options->FIELDNAME == NULL) { \ + return (ISC_R_NOMEMORY); \ + } \ + } else { \ + existed = ISC_TRUE; \ + } \ + \ + *options->FIELDNAME = newval; \ + \ + return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); \ +} + +#define GETBYTYPE(TYPE, FUNCNAME, FIELDNAME) \ +isc_result_t \ +PVT_CONCAT(dns_c_ctx_get, FUNCNAME)(dns_c_ctx_t *cfg, TYPE *retval) \ +{ \ + dns_c_options_t *options; \ + \ + REQUIRE(DNS_C_CONFCTX_VALID(cfg)); \ + REQUIRE(retval != NULL); \ + \ + options = cfg->options; \ + \ + if (options == NULL) { \ + return (ISC_R_NOTFOUND); \ + } \ + \ + REQUIRE(DNS_C_CONFOPT_VALID(options)); \ + \ + if (options->FIELDNAME == NULL) { \ + return (ISC_R_NOTFOUND); \ + } else { \ + *retval = *options->FIELDNAME; \ + return (ISC_R_SUCCESS); \ + } \ +} + +#define UNSETBYTYPE(TYPE, FUNCNAME, FIELDNAME) \ +isc_result_t \ +PVT_CONCAT(dns_c_ctx_unset, FUNCNAME)(dns_c_ctx_t *cfg) \ +{ \ + dns_c_options_t *options; \ + \ + REQUIRE(DNS_C_CONFCTX_VALID(cfg)); \ + \ + options = cfg->options; \ + \ + if (options == NULL) { \ + return (ISC_R_NOTFOUND); \ + } \ + \ + REQUIRE(DNS_C_CONFOPT_VALID(options)); \ + \ + if (options->FIELDNAME == NULL) { \ + return (ISC_R_NOTFOUND); \ + } else { \ + isc_mem_put(options->mem, options->FIELDNAME, \ + sizeof (options->FIELDNAME)); \ + options->FIELDNAME = NULL; \ + \ + return (ISC_R_SUCCESS); \ + } \ +} + + + +#define SETSTRING(FUNC, FIELD) \ +isc_result_t \ +PVT_CONCAT(dns_c_ctx_set, FUNC)(dns_c_ctx_t *cfg, const char *newval) \ +{ \ + isc_result_t res; \ + \ + REQUIRE(DNS_C_CONFCTX_VALID(cfg)); \ + REQUIRE(newval != NULL); \ + REQUIRE(*newval != '\0'); \ + \ + res = make_options(cfg); \ + if (res != ISC_R_SUCCESS) { \ + return (res); \ + } \ + \ + return (cfg_set_string(cfg->options, &cfg->options->FIELD, newval)); \ +} + + +#define GETSTRING(FUNC, FIELD) \ +isc_result_t \ +PVT_CONCAT(dns_c_ctx_get, FUNC)(dns_c_ctx_t *cfg, char **retval) \ +{ \ + REQUIRE(DNS_C_CONFCTX_VALID(cfg)); \ + REQUIRE(retval != NULL); \ + \ + if (cfg->options == NULL) { \ + return (ISC_R_NOTFOUND); \ + } \ + \ + REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); \ + \ + *retval = cfg->options->FIELD; \ + \ + return (*retval == NULL ? ISC_R_NOTFOUND : ISC_R_SUCCESS); \ +} + + +#define UNSETSTRING(FUNC, FIELD) \ +isc_result_t \ +PVT_CONCAT(dns_c_ctx_unset, FUNC)(dns_c_ctx_t *cfg) \ +{ \ + REQUIRE(DNS_C_CONFCTX_VALID(cfg)); \ + \ + if (cfg->options == NULL) { \ + return (ISC_R_NOTFOUND); \ + } \ + \ + REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); \ + \ + if (cfg->options->FIELD == NULL) { \ + return (ISC_R_NOTFOUND); \ + } \ + \ + isc_mem_free(cfg->options->mem, cfg->options->FIELD); \ + \ + return (ISC_R_SUCCESS); \ +} static isc_result_t cfg_set_iplist(dns_c_options_t *options, @@ -90,40 +210,12 @@ static isc_result_t cfg_set_ipmatchlist(dns_c_options_t *options, dns_c_ipmatchlist_t **fieldaddr, dns_c_ipmatchlist_t *newval, isc_boolean_t copy); -static isc_result_t cfg_set_boolean(dns_c_options_t *options, - isc_boolean_t *fieldaddr, - isc_boolean_t newval, - dns_c_setbits_t *setfield, - isc_uint32_t bitnumber); -static isc_result_t cfg_set_int32(dns_c_options_t *options, - isc_int32_t *fieldaddr, - isc_int32_t newval, - dns_c_setbits_t *setfield, - isc_uint32_t bitnumber); -static isc_result_t cfg_set_uint32(dns_c_options_t *options, - isc_uint32_t *fieldaddr, - isc_uint32_t newval, - dns_c_setbits_t *setfield, - isc_uint32_t bitnumber); + static isc_result_t cfg_set_string(dns_c_options_t *options, char **field, const char *newval); -static isc_result_t cfg_get_uint32(dns_c_options_t *options, - isc_uint32_t *field, - isc_uint32_t *result, - dns_c_setbits_t *setfield, - isc_uint32_t bitnumber); -static isc_result_t cfg_get_int32(dns_c_options_t *options, - isc_int32_t *field, - isc_int32_t *result, - dns_c_setbits_t *setfield, - isc_uint32_t bitnumber); -static isc_result_t cfg_get_boolean(dns_c_options_t *options, - isc_boolean_t *field, - isc_boolean_t *result, - dns_c_setbits_t *setfield, - isc_uint32_t bitnumber); + static isc_result_t cfg_get_ipmatchlist(dns_c_options_t *options, dns_c_ipmatchlist_t *field, dns_c_ipmatchlist_t **resval); @@ -132,12 +224,12 @@ static isc_result_t cfg_get_iplist(dns_c_options_t *options, dns_c_iplist_t **resval); static isc_result_t acl_init(dns_c_ctx_t *cfg); static isc_result_t logging_init (dns_c_ctx_t *cfg); -static isc_result_t make_options(dns_c_ctx_t *cfg); +static isc_result_t make_options(dns_c_ctx_t *cfg); isc_result_t -dns_c_checkconfig(dns_c_ctx_t *ctx) +dns_c_checkconfig(dns_c_ctx_t *cfg) { isc_boolean_t bval; char *cpval; @@ -145,88 +237,88 @@ dns_c_checkconfig(dns_c_ctx_t *ctx) isc_int32_t intval; dns_c_ipmatchlist_t *ipml; - if (dns_c_ctx_getnamedxfer(ctx, &cpval) != ISC_R_NOTFOUND) { + if (dns_c_ctx_getnamedxfer(cfg, &cpval) != ISC_R_NOTFOUND) { isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, "named-xfer is now obsolete"); } - if (dns_c_ctx_getdumpfilename(ctx, &cpval) != ISC_R_NOTFOUND) { + if (dns_c_ctx_getdumpfilename(cfg, &cpval) != ISC_R_NOTFOUND) { isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, "dump-file is not yet implemented."); } - if (dns_c_ctx_getmemstatsfilename(ctx, &cpval) != ISC_R_NOTFOUND) { + if (dns_c_ctx_getmemstatsfilename(cfg, &cpval) != ISC_R_NOTFOUND) { isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, "memstatistics-file is not yet implemented."); } - if ((dns_c_ctx_getauthnxdomain(ctx, &bval)) == ISC_R_NOTFOUND) { + if ((dns_c_ctx_getauthnxdomain(cfg, &bval)) == ISC_R_NOTFOUND) { isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, "the default for auth-nxdomain is now 'no'"); } - if (dns_c_ctx_getdealloconexit(ctx, &bval) != ISC_R_NOTFOUND) { + if (dns_c_ctx_getdealloconexit(cfg, &bval) != ISC_R_NOTFOUND) { isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, "deallocate-on-exit is obsolete."); } - if (dns_c_ctx_getfakeiquery(ctx, &bval) != ISC_R_NOTFOUND) { + if (dns_c_ctx_getfakeiquery(cfg, &bval) != ISC_R_NOTFOUND) { isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, "fake-iquery is obsolete."); } - if (dns_c_ctx_getfetchglue(ctx, &bval) != ISC_R_NOTFOUND) { + if (dns_c_ctx_getfetchglue(cfg, &bval) != ISC_R_NOTFOUND) { isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, "fetch-glue is not yet implemented."); } - if (dns_c_ctx_gethasoldclients(ctx, &bval) != ISC_R_NOTFOUND) { + if (dns_c_ctx_gethasoldclients(cfg, &bval) != ISC_R_NOTFOUND) { isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, "has-old-clients is obsolete."); } - if (dns_c_ctx_gethoststatistics(ctx, &bval) != ISC_R_NOTFOUND) { + if (dns_c_ctx_gethoststatistics(cfg, &bval) != ISC_R_NOTFOUND) { isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, "host-statistics is not yet implemented."); } - if (dns_c_ctx_getmultiplecnames(ctx, &bval) != ISC_R_NOTFOUND) { + if (dns_c_ctx_getmultiplecnames(cfg, &bval) != ISC_R_NOTFOUND) { isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, "multiple-cnames is obsolete."); } - if (dns_c_ctx_getuseidpool(ctx, &bval) != ISC_R_NOTFOUND) { + if (dns_c_ctx_getuseidpool(cfg, &bval) != ISC_R_NOTFOUND) { isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, "use-id-pool is obsolete."); } - if ((dns_c_ctx_getchecknames(ctx, dns_trans_primary, + if ((dns_c_ctx_getchecknames(cfg, dns_trans_primary, &severity) != ISC_R_NOTFOUND) || - (dns_c_ctx_getchecknames(ctx, dns_trans_secondary, + (dns_c_ctx_getchecknames(cfg, dns_trans_secondary, &severity) != ISC_R_NOTFOUND) || - (dns_c_ctx_getchecknames(ctx, dns_trans_response, + (dns_c_ctx_getchecknames(cfg, dns_trans_response, &severity) != ISC_R_NOTFOUND)) { isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, @@ -234,28 +326,28 @@ dns_c_checkconfig(dns_c_ctx_t *ctx) } - if (dns_c_ctx_getmaxlogsizeixfr(ctx, &intval) != ISC_R_NOTFOUND) { + if (dns_c_ctx_getmaxlogsizeixfr(cfg, &intval) != ISC_R_NOTFOUND) { isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, "max-ixfr-log-size is not yet implemented."); } - if (dns_c_ctx_getstatsinterval(ctx, &intval) != ISC_R_NOTFOUND) { + if (dns_c_ctx_getstatsinterval(cfg, &intval) != ISC_R_NOTFOUND) { isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, "statistics-interval is not yet implemented."); } - if (dns_c_ctx_gettopology(ctx, &ipml) != ISC_R_NOTFOUND) { + if (dns_c_ctx_gettopology(cfg, &ipml) != ISC_R_NOTFOUND) { dns_c_ipmatchlist_detach(&ipml); isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, "topology is deprecated."); } - if (dns_c_ctx_getsortlist(ctx, &ipml) != ISC_R_NOTFOUND) { + if (dns_c_ctx_getsortlist(cfg, &ipml) != ISC_R_NOTFOUND) { dns_c_ipmatchlist_detach(&ipml); isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, @@ -263,7 +355,7 @@ dns_c_checkconfig(dns_c_ctx_t *ctx) } - if (dns_c_ctx_getrfc2308type1(ctx, &bval) != ISC_R_NOTFOUND) { + if (dns_c_ctx_getrfc2308type1(cfg, &bval) != ISC_R_NOTFOUND) { isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG, DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING, "rfc2308-type-1 is not yet implemented."); @@ -302,59 +394,59 @@ dns_c_checkconfig(dns_c_ctx_t *ctx) /* ************************************************************************ */ isc_result_t -dns_c_ctx_new(isc_mem_t *mem, dns_c_ctx_t **ctx) +dns_c_ctx_new(isc_mem_t *mem, dns_c_ctx_t **cfg) { - dns_c_ctx_t *cfg; + dns_c_ctx_t *tmpcfg; isc_result_t r; REQUIRE(mem != NULL); - cfg = isc_mem_get(mem, sizeof *cfg); - if (cfg == NULL) { + tmpcfg = isc_mem_get(mem, sizeof *tmpcfg); + if (tmpcfg == NULL) { return (ISC_R_NOMEMORY); } - cfg->magic = DNS_C_CONFIG_MAGIC; - cfg->mem = mem; - cfg->warnings = 0; - cfg->errors = 0; - cfg->acls = NULL; - cfg->options = NULL; - cfg->zlist = NULL; - cfg->peers = NULL; - cfg->acls = NULL; - cfg->keydefs = NULL; - cfg->trusted_keys = NULL; - cfg->logging = NULL; - cfg->resolver = NULL; - cfg->cache = NULL; - cfg->views = NULL; + tmpcfg->magic = DNS_C_CONFIG_MAGIC; + tmpcfg->mem = mem; + tmpcfg->warnings = 0; + tmpcfg->errors = 0; + tmpcfg->acls = NULL; + tmpcfg->options = NULL; + tmpcfg->zlist = NULL; + tmpcfg->peers = NULL; + tmpcfg->acls = NULL; + tmpcfg->keydefs = NULL; + tmpcfg->trusted_keys = NULL; + tmpcfg->logging = NULL; + tmpcfg->resolver = NULL; + tmpcfg->cache = NULL; + tmpcfg->views = NULL; - cfg->currview = NULL; - cfg->currzone = NULL; + tmpcfg->currview = NULL; + tmpcfg->currzone = NULL; - r = acl_init(cfg); + r = acl_init(tmpcfg); if (r != ISC_R_SUCCESS) { return (r); } - r = logging_init(cfg); + r = logging_init(tmpcfg); if (r != ISC_R_SUCCESS) { return (r); } #if 1 /* XXX brister */ - cfg->controls = NULL; + tmpcfg->controls = NULL; #else - r = dns_c_ctrllist_new(mem, &cfg->controls); + r = dns_c_ctrllist_new(mem, &tmpcfg->controls); if (r != ISC_R_SUCCESS) { - dns_c_ctx_delete(&cfg); + dns_c_ctx_delete(&tmpcfg); return r; } #endif - *ctx = cfg; + *cfg = tmpcfg; return (ISC_R_SUCCESS); } @@ -555,6 +647,225 @@ dns_c_ctx_print(FILE *fp, int indent, dns_c_ctx_t *cfg) } + +void +dns_c_ctx_optionsprint(FILE *fp, int indent, dns_c_options_t *options) +{ + dns_severity_t nameseverity; + in_port_t port; + + REQUIRE(fp != NULL); + + if (options == NULL) { + return; + } + + REQUIRE(DNS_C_CONFOPT_VALID(options)); + +#define PRINT_INTEGER(field, name) \ + if (options->field != NULL) { \ + dns_c_printtabs(fp, indent + 1); \ + fprintf(fp, "%s %d;\n",name,(int)*options->field); \ + } + +#define PRINT_AS_MINUTES(field, name) \ + if (options->field != NULL) { \ + dns_c_printtabs(fp, indent + 1); \ + fprintf(fp, "%s %lu;\n",name, \ + (unsigned long)(*options->field / 60)); \ + } + +#define PRINT_AS_BOOLEAN(field, name) \ + if (options->field != NULL) { \ + dns_c_printtabs(fp, indent + 1); \ + fprintf(fp, "%s %s;\n",name, \ + (*options->field ? "true" : "false")); \ + } + +#define PRINT_AS_SIZE_CLAUSE(field, name) \ + if (options->field != NULL) { \ + dns_c_printtabs(fp, indent + 1); \ + fprintf(fp, "%s ",name); \ + if (*options->field == DNS_C_SIZE_SPEC_DEFAULT) { \ + fprintf(fp, "default"); \ + } else { \ + dns_c_printinunits(fp, *options->field); \ + } \ + fprintf(fp, ";\n"); \ + } + +#define PRINT_CHAR_P(field, name) \ + if (options->field != NULL) { \ + dns_c_printtabs(fp, indent + 1); \ + fprintf(fp, "%s \"%s\";\n", name, options->field); \ + } + +#define PRINT_IPANDPORT(FIELD, NAME) \ + if (options->FIELD != NULL) { \ + port = isc_sockaddr_getport(options->FIELD); \ + \ + dns_c_printtabs(fp, indent + 1); \ + fprintf(fp, NAME " address "); \ + \ + dns_c_print_ipaddr(fp, options->FIELD); \ + \ + if (port == 0) { \ + fprintf(fp, " port *"); \ + } else { \ + fprintf(fp, " port %d", port); \ + } \ + fprintf(fp, " ;\n"); \ + } + +#define PRINT_IP(FIELD, NAME) \ + if (options->FIELD != NULL) { \ + dns_c_printtabs(fp, indent + 1); \ + fprintf(fp, NAME " "); \ + dns_c_print_ipaddr(fp, options->FIELD); \ + fprintf(fp, ";\n"); \ + } + +#define PRINT_CHECKNAME(INDEX) \ + if (options->check_names[INDEX] != NULL) { \ + nameseverity = *options->check_names[INDEX]; \ + dns_c_printtabs(fp, indent + 1); \ + fprintf(fp, "check-names %s %s;\n", \ + dns_c_transport2string(INDEX, ISC_TRUE), \ + dns_c_nameseverity2string(nameseverity, ISC_TRUE)); \ + } + + +#define PRINT_IPMLIST(FIELD, NAME) \ + if (options->FIELD != NULL) { \ + dns_c_printtabs(fp, indent + 1); \ + fprintf(fp, NAME " "); \ + dns_c_ipmatchlist_print(fp, 2, options->FIELD); \ + fprintf(fp, ";\n"); \ + } + + + dns_c_printtabs(fp, indent); + fprintf (fp, "options {\n"); + + PRINT_CHAR_P(version, "version"); + PRINT_CHAR_P(directory, "directory"); + PRINT_CHAR_P(dump_filename, "dump-file"); + PRINT_CHAR_P(pid_filename, "pid-file"); + PRINT_CHAR_P(stats_filename, "statistics-file"); + PRINT_CHAR_P(memstats_filename, "memstatistics-file"); + PRINT_CHAR_P(named_xfer, "named-xfer"); + + PRINT_INTEGER(transfers_in, "transfers-in"); + PRINT_INTEGER(transfers_per_ns, "transfers-per-ns"); + PRINT_INTEGER(transfers_out, "transfers-out"); + PRINT_INTEGER(max_log_size_ixfr, "max-ixfr-log-size"); + + + PRINT_AS_MINUTES(clean_interval, "cleaning-interval"); + PRINT_AS_MINUTES(interface_interval, "interface-interval"); + PRINT_AS_MINUTES(stats_interval, "statistics-interval"); + PRINT_AS_MINUTES(heartbeat_interval, "heartbeat-interval"); + + PRINT_AS_MINUTES(max_transfer_time_in, "max-transfer-time-in"); + PRINT_AS_MINUTES(max_transfer_time_out, "max-transfer-time-out"); + PRINT_AS_MINUTES(max_transfer_idle_in, "max-transfer-idle-in"); + PRINT_AS_MINUTES(max_transfer_idle_out, "max-transfer-idle-out"); + + /* XXX LAMETTL ??? */ + + PRINT_INTEGER(tcp_clients, "tcp-clients"); + PRINT_INTEGER(recursive_clients, "recursive-clients"); + + PRINT_AS_SIZE_CLAUSE(data_size, "datasize"); + PRINT_AS_SIZE_CLAUSE(stack_size, "stacksize"); + PRINT_AS_SIZE_CLAUSE(core_size, "coresize"); + PRINT_AS_SIZE_CLAUSE(files, "files"); + + PRINT_INTEGER(max_ncache_ttl, "max-ncache-ttl"); + + PRINT_AS_BOOLEAN(expert_mode, "expert-mode"); + PRINT_AS_BOOLEAN(fake_iquery, "fake-iquery"); + PRINT_AS_BOOLEAN(recursion, "recursion"); + PRINT_AS_BOOLEAN(fetch_glue, "fetch-glue"); + PRINT_AS_BOOLEAN(notify, "notify"); + PRINT_AS_BOOLEAN(host_statistics, "host-statistics"); + PRINT_AS_BOOLEAN(dealloc_on_exit, "deallocate-on-exit"); + PRINT_AS_BOOLEAN(use_ixfr, "use-ixfr"); + PRINT_AS_BOOLEAN(maintain_ixfr_base, "maintain-ixfr-base"); + PRINT_AS_BOOLEAN(has_old_clients, "has-old-clients"); + PRINT_AS_BOOLEAN(auth_nx_domain, "auth-nxdomain"); + PRINT_AS_BOOLEAN(multiple_cnames, "multiple-cnames"); + PRINT_AS_BOOLEAN(use_id_pool, "use-id-pool"); + PRINT_AS_BOOLEAN(dialup, "dialup"); + PRINT_AS_BOOLEAN(rfc2308_type1, "rfc2308-type1"); + PRINT_AS_BOOLEAN(request_ixfr, "request-ixfr"); + PRINT_AS_BOOLEAN(provide_ixfr, "provide-ixfr"); + + if (options->transfer_format != NULL) { + dns_c_printtabs(fp, indent + 1); + fprintf(fp, "transfer-format %s;\n", + dns_c_transformat2string(*options->transfer_format, + ISC_TRUE)); + } + + + PRINT_IP(transfer_source, "transfer-source"); + PRINT_IP(transfer_source_v6, "transfer-source-v6"); + + PRINT_IPANDPORT(query_source, "query-source"); + PRINT_IPANDPORT(query_source_v6, "query-source-v6"); + + PRINT_CHECKNAME(dns_trans_primary); + PRINT_CHECKNAME(dns_trans_secondary); + PRINT_CHECKNAME(dns_trans_response); + + fprintf(fp, "\n"); + + PRINT_IPMLIST(queryacl, "allow-query"); + PRINT_IPMLIST(transferacl, "allow-transfer"); + PRINT_IPMLIST(recursionacl, "allow-recursion"); + PRINT_IPMLIST(blackhole, "blackhole"); + PRINT_IPMLIST(topology, "topology"); + PRINT_IPMLIST(sortlist, "sortlist"); + + if (options->listens != NULL) { + dns_c_lstnlist_print(fp, indent + 1, + options->listens); + } + + dns_c_ctx_forwarderprint(fp, indent + 1, options); + + if (options->ordering != NULL) { + dns_c_rrsolist_print(fp, indent + 1, options->ordering); + } + + if (options->also_notify != NULL) { + dns_c_printtabs(fp, indent + 1); + fprintf(fp, "also-notify ") ; + dns_c_iplist_print(fp, indent + 2, options->also_notify); + fprintf(fp, ";\n"); + } + + PRINT_CHAR_P(tkeydomain, "tkey-domain"); + + if (options->tkeydhkeycp != NULL) { + dns_c_printtabs(fp, indent + 1); + fprintf(fp, "tkey-dhkey \"%s\" %d ;\n", + options->tkeydhkeycp, options->tkeydhkeyi); + } + + + dns_c_printtabs(fp, indent); + fprintf(fp,"};\n"); + +#undef PRINT_INTEGER +#undef PRINT_AS_MINUTES +#undef PRINT_AS_BOOLEAN +#undef PRINT_AS_SIZE_CLAUSE +#undef PRINT_CHAR_P + +} + void dns_c_ctx_forwarderprint(FILE *fp, int indent, dns_c_options_t *options) { @@ -567,10 +878,10 @@ dns_c_ctx_forwarderprint(FILE *fp, int indent, dns_c_options_t *options) REQUIRE(DNS_C_CONFOPT_VALID(options)); - if (DNS_C_CHECKBIT(FORWARD_BIT, &options->setflags1)) { + if (options->forward != NULL) { dns_c_printtabs(fp, indent); fprintf(fp, "forward %s;\n", - dns_c_forward2string(options->forward, ISC_TRUE)); + dns_c_forward2string(*options->forward, ISC_TRUE)); } if (options->forwarders != NULL) { @@ -583,6 +894,8 @@ dns_c_ctx_forwarderprint(FILE *fp, int indent, dns_c_options_t *options) } + + isc_result_t dns_c_ctx_getoptions(dns_c_ctx_t *cfg, dns_c_options_t **options) { @@ -598,6 +911,23 @@ dns_c_ctx_getoptions(dns_c_ctx_t *cfg, dns_c_options_t **options) return (cfg->options == NULL ? ISC_R_NOTFOUND : ISC_R_SUCCESS); } +isc_result_t +dns_c_ctx_unsetoptions(dns_c_ctx_t *cfg) +{ + REQUIRE(DNS_C_CONFCTX_VALID(cfg)); + + if (cfg->options == NULL) { + return (ISC_R_NOTFOUND); + } + + REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); + + dns_c_ctx_optionsdelete(&cfg->options); + + return (ISC_R_SUCCESS); +} + + isc_result_t @@ -638,6 +968,20 @@ dns_c_ctx_setlogging(dns_c_ctx_t *cfg, dns_c_logginglist_t *newval, } +isc_result_t +dns_c_ctx_unsetlogging(dns_c_ctx_t *cfg) +{ + REQUIRE(DNS_C_CONFCTX_VALID(cfg)); + + if (cfg->logging == NULL) { + return (ISC_R_NOTFOUND); + } + + return (dns_c_logginglist_delete(&cfg->logging)); +} + + + isc_result_t dns_c_ctx_getkdeflist(dns_c_ctx_t *cfg, dns_c_kdeflist_t **retval) @@ -845,137 +1189,477 @@ dns_c_ctx_currcategory(dns_c_ctx_t *cfg, dns_c_logcat_t **category) } + +/* ***************************************************************** */ +/* *********** OPTIONS *********** */ +/* ***************************************************************** */ + + +isc_result_t +dns_c_ctx_optionsnew(isc_mem_t *mem, dns_c_options_t **options) +{ + dns_c_options_t *opts = NULL; + + REQUIRE(mem != NULL); + REQUIRE(options != NULL); + + *options = NULL; + + opts = isc_mem_get(mem, sizeof *opts); + if (opts == NULL) { + return (ISC_R_NOMEMORY); + } + + opts->mem = mem; + opts->magic = DNS_C_OPTION_MAGIC; + + opts->directory = NULL; + opts->version = NULL; + opts->dump_filename = NULL; + opts->pid_filename = NULL; + opts->stats_filename = NULL; + opts->memstats_filename = NULL; + opts->named_xfer = NULL; + + opts->transfers_in = NULL; + opts->transfers_per_ns = NULL; + opts->transfers_out = NULL; + opts->max_log_size_ixfr = NULL; + opts->clean_interval = NULL; + opts->interface_interval = NULL; + opts->stats_interval = NULL; + opts->heartbeat_interval = NULL; + + opts->max_transfer_time_in = NULL; + opts->max_transfer_time_out = NULL; + opts->max_transfer_idle_in = NULL; + opts->max_transfer_idle_out = NULL; + opts->lamettl = NULL; + opts->tcp_clients = NULL; + opts->recursive_clients = NULL; + + opts->data_size = NULL; + opts->stack_size = NULL; + opts->core_size = NULL; + opts->files = NULL; + opts->max_ncache_ttl = NULL; + + opts->expert_mode = NULL; + opts->fake_iquery = NULL; + opts->recursion = NULL; + opts->fetch_glue = NULL; + opts->notify = NULL; + opts->host_statistics = NULL; + opts->dealloc_on_exit = NULL; + opts->use_ixfr = NULL; + opts->maintain_ixfr_base = NULL; + opts->has_old_clients = NULL; + opts->auth_nx_domain = NULL; + opts->multiple_cnames = NULL; + opts->use_id_pool = NULL; + opts->dialup = NULL; + opts->rfc2308_type1 = NULL; + opts->request_ixfr = NULL; + opts->provide_ixfr = NULL; + + opts->transfer_source = NULL; + opts->transfer_source_v6 = NULL; + opts->query_source = NULL; + opts->query_source_v6 = NULL; + + opts->forward = NULL; + + opts->tkeydhkeycp = NULL; + opts->tkeydhkeyi = 0; + opts->tkeydomain = NULL; + + opts->also_notify = NULL; + + opts->check_names[dns_trans_primary] = NULL; + opts->check_names[dns_trans_secondary] = NULL; + opts->check_names[dns_trans_response] = NULL; + + opts->transfer_format = NULL; + + opts->queryacl = NULL; + opts->transferacl = NULL; + opts->recursionacl = NULL; + opts->blackhole = NULL; + opts->topology = NULL; + opts->sortlist = NULL; + + opts->listens = NULL; + opts->ordering = NULL; + + opts->forwarders = NULL; + + *options = opts; + + return (ISC_R_SUCCESS); +} + + +isc_result_t +dns_c_ctx_optionsdelete(dns_c_options_t **opts) +{ + dns_c_options_t *options; + isc_result_t r, result; + + REQUIRE(opts != NULL); + + options = *opts; + if (options == NULL) { + return (ISC_R_SUCCESS); + } + + REQUIRE(DNS_C_CONFOPT_VALID(options)); + + +#define FREEFIELD(FIELD) \ + if (options->FIELD != NULL) { \ + isc_mem_put(options->mem, options->FIELD, \ + sizeof (*options->FIELD)); \ + options->FIELD = NULL; \ + } + +#define FREESTRING(FIELD) \ + if (options->FIELD != NULL) { \ + isc_mem_free(options->mem, options->FIELD); \ + } + +#define FREEIPMLIST(FIELD) \ + if (options->FIELD != NULL) { \ + (void)dns_c_ipmatchlist_detach(&options->FIELD); \ + } + + + + FREESTRING(directory); + FREESTRING(version); + FREESTRING(dump_filename); + FREESTRING(pid_filename); + FREESTRING(stats_filename); + FREESTRING(memstats_filename); + FREESTRING(named_xfer); + + + FREEFIELD(expert_mode); + FREEFIELD(fake_iquery); + FREEFIELD(recursion); + FREEFIELD(fetch_glue); + FREEFIELD(notify); + FREEFIELD(host_statistics); + FREEFIELD(dealloc_on_exit); + FREEFIELD(use_ixfr); + FREEFIELD(maintain_ixfr_base); + FREEFIELD(has_old_clients); + FREEFIELD(auth_nx_domain); + FREEFIELD(multiple_cnames); + FREEFIELD(use_id_pool); + FREEFIELD(dialup); + FREEFIELD(rfc2308_type1); + FREEFIELD(request_ixfr); + FREEFIELD(provide_ixfr); + + FREEFIELD(transfers_in); + FREEFIELD(transfers_per_ns); + FREEFIELD(transfers_out); + FREEFIELD(max_log_size_ixfr); + FREEFIELD(clean_interval); + FREEFIELD(interface_interval); + FREEFIELD(stats_interval); + FREEFIELD(heartbeat_interval); + FREEFIELD(max_transfer_time_in); + FREEFIELD(max_transfer_time_out); + FREEFIELD(max_transfer_idle_in); + FREEFIELD(max_transfer_idle_out); + FREEFIELD(lamettl); + FREEFIELD(tcp_clients); + FREEFIELD(recursive_clients); + + + FREEFIELD(data_size); + FREEFIELD(stack_size); + FREEFIELD(core_size); + FREEFIELD(files); + FREEFIELD(max_ncache_ttl); + + FREEFIELD(transfer_source); + FREEFIELD(transfer_source_v6); + FREEFIELD(query_source); + FREEFIELD(query_source_v6); + + FREEFIELD(forward); + + FREESTRING(tkeydomain); + FREESTRING(tkeydhkeycp); + + if (options->also_notify != NULL) { + dns_c_iplist_detach(&options->also_notify); + } + + FREEFIELD(check_names[dns_trans_primary]); + FREEFIELD(check_names[dns_trans_secondary]); + FREEFIELD(check_names[dns_trans_response]); + + FREEFIELD(transfer_format); + + FREEIPMLIST(queryacl); + FREEIPMLIST(transferacl); + FREEIPMLIST(recursionacl); + FREEIPMLIST(blackhole); + FREEIPMLIST(topology); + FREEIPMLIST(sortlist); + + if (options->listens != NULL) { + r = dns_c_lstnlist_delete(&options->listens); + if (r != ISC_R_SUCCESS) + result = r; + } + + if (options->ordering != NULL) { + r = dns_c_rrsolist_delete(&options->ordering); + if (r != ISC_R_SUCCESS) + result = r; + } + + if (options->forwarders != NULL) { + r = dns_c_iplist_detach(&options->forwarders); + if (r != ISC_R_SUCCESS) + result = r; + } + + *opts = NULL; + options->magic = 0; + + isc_mem_put(options->mem, options, sizeof *options); + + return (result); + +#undef FREEFIELD +#undef FREESTRING +#undef FREEIPMLIST + +} + + + +SETSTRING(directory, directory) +GETSTRING(directory, directory) +UNSETSTRING(directory, directory) + +SETSTRING(version, version) +GETSTRING(version, version) +UNSETSTRING(version, version) + +SETSTRING(dumpfilename, dump_filename) +GETSTRING(dumpfilename, dump_filename) +UNSETSTRING(dumpfilename, dump_filename) + +SETSTRING(pidfilename, pid_filename) +GETSTRING(pidfilename, pid_filename) +UNSETSTRING(pidfilename, pid_filename) + +SETSTRING(statsfilename, stats_filename) +GETSTRING(statsfilename, stats_filename) +UNSETSTRING(statsfilename, stats_filename) + +SETSTRING(memstatsfilename, memstats_filename) +GETSTRING(memstatsfilename, memstats_filename) +UNSETSTRING(memstatsfilename, memstats_filename) + +SETSTRING(namedxfer, named_xfer) +GETSTRING(namedxfer, named_xfer) +UNSETSTRING(namedxfer, named_xfer) + + + +GETBOOL(expertmode, expert_mode) +SETBOOL(expertmode, expert_mode) +UNSETBOOL(expertmode, expert_mode) + +GETBOOL(fakeiquery, fake_iquery) +SETBOOL(fakeiquery, fake_iquery) +UNSETBOOL(fakeiquery, fake_iquery) + +GETBOOL(recursion, recursion) +SETBOOL(recursion, recursion) +UNSETBOOL(recursion, recursion) + +GETBOOL(fetchglue, fetch_glue) +SETBOOL(fetchglue, fetch_glue) +UNSETBOOL(fetchglue, fetch_glue) + +GETBOOL(notify, notify) +SETBOOL(notify, notify) +UNSETBOOL(notify, notify) + +GETBOOL(hoststatistics, host_statistics) +SETBOOL(hoststatistics, host_statistics) +UNSETBOOL(hoststatistics, host_statistics) + +GETBOOL(dealloconexit, dealloc_on_exit) +SETBOOL(dealloconexit, dealloc_on_exit) +UNSETBOOL(dealloconexit, dealloc_on_exit) + +GETBOOL(useixfr, use_ixfr) +SETBOOL(useixfr, use_ixfr) +UNSETBOOL(useixfr, use_ixfr) + +GETBOOL(maintainixfrbase, maintain_ixfr_base) +SETBOOL(maintainixfrbase, maintain_ixfr_base) +UNSETBOOL(maintainixfrbase, maintain_ixfr_base) + +GETBOOL(hasoldclients, has_old_clients) +SETBOOL(hasoldclients, has_old_clients) +UNSETBOOL(hasoldclients, has_old_clients) + +GETBOOL(authnxdomain, auth_nx_domain) +SETBOOL(authnxdomain, auth_nx_domain) +UNSETBOOL(authnxdomain, auth_nx_domain) + +GETBOOL(multiplecnames, multiple_cnames) +SETBOOL(multiplecnames, multiple_cnames) +UNSETBOOL(multiplecnames, multiple_cnames) + +GETBOOL(useidpool, use_id_pool) +SETBOOL(useidpool, use_id_pool) +UNSETBOOL(useidpool, use_id_pool) + +GETBOOL(dialup, dialup) +SETBOOL(dialup, dialup) +UNSETBOOL(dialup, dialup) + +GETBOOL(rfc2308type1, rfc2308_type1) +SETBOOL(rfc2308type1, rfc2308_type1) +UNSETBOOL(rfc2308type1, rfc2308_type1) + +GETBOOL(requestixfr, request_ixfr) +SETBOOL(requestixfr, request_ixfr) +UNSETBOOL(requestixfr, request_ixfr) + +GETBOOL(provideixfr, provide_ixfr) +SETBOOL(provideixfr, provide_ixfr) +UNSETBOOL(provideixfr, provide_ixfr) + + +GETUINT32(maxncachettl, max_ncache_ttl) +SETUINT32(maxncachettl, max_ncache_ttl) +UNSETUINT32(maxncachettl, max_ncache_ttl) + +GETINT32(transfersin, transfers_in) +SETINT32(transfersin, transfers_in) +UNSETINT32(transfersin, transfers_in) + +GETINT32(transfersperns, transfers_per_ns) +SETINT32(transfersperns, transfers_per_ns) +UNSETINT32(transfersperns, transfers_per_ns) + +GETINT32(transfersout, transfers_out) +SETINT32(transfersout, transfers_out) +UNSETINT32(transfersout, transfers_out) + +GETINT32(maxlogsizeixfr, max_log_size_ixfr) +SETINT32(maxlogsizeixfr, max_log_size_ixfr) +UNSETINT32(maxlogsizeixfr, max_log_size_ixfr) + +GETINT32(cleaninterval, clean_interval) +SETINT32(cleaninterval, clean_interval) +UNSETINT32(cleaninterval, clean_interval) + +GETINT32(interfaceinterval, interface_interval) +SETINT32(interfaceinterval, interface_interval) +UNSETINT32(interfaceinterval, interface_interval) + +GETINT32(statsinterval, stats_interval) +SETINT32(statsinterval, stats_interval) +UNSETINT32(statsinterval, stats_interval) + +GETINT32(heartbeatinterval, heartbeat_interval) +SETINT32(heartbeatinterval, heartbeat_interval) +UNSETINT32(heartbeatinterval, heartbeat_interval) + +GETINT32(maxtransfertimein, max_transfer_time_in) +SETINT32(maxtransfertimein, max_transfer_time_in) +UNSETINT32(maxtransfertimein, max_transfer_time_in) + +GETINT32(maxtransfertimeout, max_transfer_time_out) +SETINT32(maxtransfertimeout, max_transfer_time_out) +UNSETINT32(maxtransfertimeout, max_transfer_time_out) + +GETINT32(maxtransferidlein, max_transfer_idle_in) +SETINT32(maxtransferidlein, max_transfer_idle_in) +UNSETINT32(maxtransferidlein, max_transfer_idle_in) + +GETINT32(maxtransferidleout, max_transfer_idle_out) +SETINT32(maxtransferidleout, max_transfer_idle_out) +UNSETINT32(maxtransferidleout, max_transfer_idle_out) + +GETINT32(lamettl, lamettl) +SETINT32(lamettl, lamettl) +UNSETINT32(lamettl, lamettl) + +GETINT32(tcpclients, tcp_clients) +SETINT32(tcpclients, tcp_clients) +UNSETINT32(tcpclients, tcp_clients) + +GETINT32(recursiveclients, recursive_clients) +SETINT32(recursiveclients, recursive_clients) +UNSETINT32(recursiveclients, recursive_clients) + +GETUINT32(datasize, data_size) +SETUINT32(datasize, data_size) +UNSETUINT32(datasize, data_size) + +GETUINT32(stacksize, stack_size) +SETUINT32(stacksize, stack_size) +UNSETUINT32(stacksize, stack_size) + +GETUINT32(coresize, core_size) +SETUINT32(coresize, core_size) +UNSETUINT32(coresize, core_size) + +GETUINT32(files, files) +SETUINT32(files, files) +UNSETUINT32(files, files) + +GETSOCKADDR(transfersource, transfer_source) +SETSOCKADDR(transfersource, transfer_source) +UNSETSOCKADDR(transfersource, transfer_source) + +GETSOCKADDR(transfersourcev6, transfer_source_v6) +SETSOCKADDR(transfersourcev6, transfer_source_v6) +UNSETSOCKADDR(transfersourcev6, transfer_source_v6) + +GETSOCKADDR(querysource, query_source) +SETSOCKADDR(querysource, query_source) +UNSETSOCKADDR(querysource, query_source) + +GETSOCKADDR(querysourcev6, query_source_v6) +SETSOCKADDR(querysourcev6, query_source_v6) +UNSETSOCKADDR(querysourcev6, query_source_v6) + +GETBYTYPE(dns_c_forw_t, forward, forward) +SETBYTYPE(dns_c_forw_t, forward, forward) +UNSETBYTYPE(dns_c_forw_t, forward, forward) + +GETBYTYPE(dns_transfer_format_t, transferformat, transfer_format) +SETBYTYPE(dns_transfer_format_t, transferformat, transfer_format) +UNSETBYTYPE(dns_transfer_format_t, transferformat, transfer_format) + + + + + + + + /* * Modifiers for options. * */ -isc_result_t -dns_c_ctx_setdirectory(dns_c_ctx_t *cfg, const char *newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_string(cfg->options, - &cfg->options->directory, - newval)); -} - - -isc_result_t -dns_c_ctx_setversion(dns_c_ctx_t *cfg, const char *newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_string(cfg->options, - &cfg->options->version, - newval)); -} - - -isc_result_t -dns_c_ctx_setdumpfilename(dns_c_ctx_t *cfg, const char *newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_string(cfg->options, - &cfg->options->dump_filename, - newval)); -} - - -isc_result_t -dns_c_ctx_setpidfilename(dns_c_ctx_t *cfg, const char *newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_string(cfg->options, - &cfg->options->pid_filename, - newval)); -} - - -isc_result_t -dns_c_ctx_setstatsfilename(dns_c_ctx_t *cfg, const char *newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_string(cfg->options, - &cfg->options->stats_filename, - newval)); -} - - -isc_result_t -dns_c_ctx_setmemstatsfilename(dns_c_ctx_t *cfg, const char *newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_string(cfg->options, - &cfg->options->memstats_filename, - newval)); -} - - -isc_result_t -dns_c_ctx_setnamedxfer(dns_c_ctx_t *cfg, const char *newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_string(cfg->options, - &cfg->options->named_xfer, - newval)); -} - isc_result_t dns_c_ctx_settkeydomain(dns_c_ctx_t *cfg, const char *newval) @@ -1015,804 +1699,18 @@ dns_c_ctx_settkeydhkey(dns_c_ctx_t *cfg, } -isc_result_t -dns_c_ctx_setmaxncachettl(dns_c_ctx_t *cfg, isc_uint32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_uint32(cfg->options, - &cfg->options->max_ncache_ttl, - newval, - &cfg->options->setflags1, - MAX_NCACHE_TTL_BIT)); -} -isc_result_t -dns_c_ctx_settransfersin(dns_c_ctx_t *cfg, isc_int32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_int32(cfg->options, - &cfg->options->transfers_in, - newval, - &cfg->options->setflags1, - TRANSFERS_IN_BIT)); -} - - -isc_result_t -dns_c_ctx_settransfersperns(dns_c_ctx_t *cfg, isc_int32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_int32(cfg->options, - &cfg->options->transfers_per_ns, - newval, - &cfg->options->setflags1, - TRANSFERS_PER_NS_BIT)); -} - - -isc_result_t -dns_c_ctx_settransfersout(dns_c_ctx_t *cfg, isc_int32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_int32(cfg->options, - &cfg->options->transfers_out, - newval, - &cfg->options->setflags1, - TRANSFERS_OUT_BIT)); -} - - -isc_result_t -dns_c_ctx_setmaxlogsizeixfr(dns_c_ctx_t *cfg, isc_int32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_int32(cfg->options, - &cfg->options->max_log_size_ixfr, - newval, - &cfg->options->setflags1, - MAX_LOG_SIZE_IXFR_BIT)); -} - - -isc_result_t -dns_c_ctx_setcleaninterval(dns_c_ctx_t *cfg, isc_int32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_int32(cfg->options, - &cfg->options->clean_interval, - newval, - &cfg->options->setflags1, - CLEAN_INTERVAL_BIT)); -} - - -isc_result_t -dns_c_ctx_setinterfaceinterval(dns_c_ctx_t *cfg, isc_int32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_int32(cfg->options, - &cfg->options->interface_interval, - newval, - &cfg->options->setflags1, - INTERFACE_INTERVAL_BIT)); -} - - -isc_result_t -dns_c_ctx_setstatsinterval(dns_c_ctx_t *cfg, isc_int32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_int32(cfg->options, - &cfg->options->stats_interval, - newval, - &cfg->options->setflags1, - STATS_INTERVAL_BIT)); -} - - -isc_result_t -dns_c_ctx_setheartbeat_interval(dns_c_ctx_t *cfg, isc_int32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_int32(cfg->options, - &cfg->options->heartbeat_interval, - newval, - &cfg->options->setflags1, - HEARTBEAT_INTERVAL_BIT)); -} - - -isc_result_t -dns_c_ctx_setmaxtransfertimein(dns_c_ctx_t *cfg, isc_int32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_int32(cfg->options, - &cfg->options->max_transfer_time_in, - newval, - &cfg->options->setflags1, - MAX_TRANSFER_TIME_IN_BIT)); -} - - -isc_result_t -dns_c_ctx_setmaxtransfertimeout(dns_c_ctx_t *cfg, isc_int32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_int32(cfg->options, - &cfg->options->max_transfer_time_out, - newval, - &cfg->options->setflags1, - MAX_TRANSFER_TIME_OUT_BIT)); -} - - -isc_result_t -dns_c_ctx_setmaxtransferidlein(dns_c_ctx_t *cfg, isc_int32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_int32(cfg->options, - &cfg->options->max_transfer_idle_in, - newval, - &cfg->options->setflags1, - MAX_TRANSFER_IDLE_IN_BIT)); -} - - -isc_result_t -dns_c_ctx_setmaxtransferidleout(dns_c_ctx_t *cfg, isc_int32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_int32(cfg->options, - &cfg->options->max_transfer_idle_out, - newval, - &cfg->options->setflags1, - MAX_TRANSFER_IDLE_OUT_BIT)); -} - - -isc_result_t -dns_c_ctx_settcpclients(dns_c_ctx_t *cfg, isc_int32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_int32(cfg->options, - &cfg->options->tcp_clients, - newval, - &cfg->options->setflags1, - TCP_CLIENTS_BIT)); -} - -isc_result_t -dns_c_ctx_setrecursiveclients(dns_c_ctx_t *cfg, isc_int32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_int32(cfg->options, - &cfg->options->recursive_clients, - newval, - &cfg->options->setflags1, - RECURSIVE_CLIENTS_BIT)); -} - - -isc_result_t -dns_c_ctx_setdatasize(dns_c_ctx_t *cfg, isc_uint32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_uint32(cfg->options, - &cfg->options->data_size, - newval, - &cfg->options->setflags1, - DATA_SIZE_BIT)); -} - - -isc_result_t -dns_c_ctx_setstacksize(dns_c_ctx_t *cfg, isc_uint32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_uint32(cfg->options, - &cfg->options->stack_size, - newval, - &cfg->options->setflags1, - STACK_SIZE_BIT)); -} - - -isc_result_t -dns_c_ctx_setcoresize(dns_c_ctx_t *cfg, isc_uint32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_uint32(cfg->options, - &cfg->options->core_size, - newval, - &cfg->options->setflags1, - CORE_SIZE_BIT)); -} - - -isc_result_t -dns_c_ctx_setfiles(dns_c_ctx_t *cfg, isc_uint32_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_uint32(cfg->options, - &cfg->options->files, - newval, - &cfg->options->setflags1, - FILES_BIT)); -} - - -isc_result_t -dns_c_ctx_setexpertmode(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->expert_mode, - newval, - &cfg->options->setflags1, - EXPERT_MODE_BIT)); -} - - -isc_result_t -dns_c_ctx_setfakeiquery(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->fake_iquery, - newval, - &cfg->options->setflags1, - FAKE_IQUERY_BIT)); -} - - -isc_result_t -dns_c_ctx_setrecursion(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->recursion, - newval, - &cfg->options->setflags1, - RECURSION_BIT)); -} - - -isc_result_t -dns_c_ctx_setfetchglue(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->fetch_glue, - newval, - &cfg->options->setflags1, - FETCH_GLUE_BIT)); -} - - -isc_result_t -dns_c_ctx_setnotify(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->notify, - newval, - &cfg->options->setflags1, - NOTIFY_BIT)); -} - - -isc_result_t -dns_c_ctx_sethoststatistics(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->host_statistics, - newval, - &cfg->options->setflags1, - HOST_STATISTICS_BIT)); -} - - -isc_result_t -dns_c_ctx_setdealloconexit(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->dealloc_on_exit, - newval, - &cfg->options->setflags1, - DEALLOC_ON_EXIT_BIT)); -} - - -isc_result_t -dns_c_ctx_setuseixfr(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->use_ixfr, - newval, - &cfg->options->setflags1, - USE_IXFR_BIT)); -} - - -isc_result_t -dns_c_ctx_setmaintainixfrbase(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->maintain_ixfr_base, - newval, - &cfg->options->setflags1, - MAINTAIN_IXFR_BASE_BIT)); -} - - -isc_result_t -dns_c_ctx_sethasoldclients(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->has_old_clients, - newval, - &cfg->options->setflags1, - HAS_OLD_CLIENTS_BIT)); -} - - -isc_result_t -dns_c_ctx_setauthnxdomain(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->auth_nx_domain, - newval, - &cfg->options->setflags1, - AUTH_NX_DOMAIN_BIT)); -} - - -isc_result_t -dns_c_ctx_setmultiplecnames(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->multiple_cnames, - newval, - &cfg->options->setflags1, - MULTIPLE_CNAMES_BIT)); -} - - -isc_result_t -dns_c_ctx_setuseidpool(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->use_id_pool, - newval, - &cfg->options->setflags1, - USE_ID_POOL_BIT)); -} - - -isc_result_t -dns_c_ctx_setrfc2308type1(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->rfc2308_type1, - newval, - &cfg->options->setflags1, - RFC2308_TYPE1_BIT)); -} - - -isc_result_t -dns_c_ctx_setrequestixfr(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->request_ixfr, - newval, - &cfg->options->setflags1, - REQUEST_IXFR_BIT)); -} - - -isc_result_t -dns_c_ctx_setprovideixfr(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->provide_ixfr, - newval, - &cfg->options->setflags1, - PROVIDE_IXFR_BIT)); -} - - -isc_result_t -dns_c_ctx_setdialup(dns_c_ctx_t *cfg, isc_boolean_t newval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - return (cfg_set_boolean(cfg->options, - &cfg->options->dialup, - newval, - &cfg->options->setflags1, - DIALUP_BIT)); -} - - -isc_result_t -dns_c_ctx_setquerysource(dns_c_ctx_t *cfg, isc_sockaddr_t addr) -{ - isc_boolean_t existed; - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(addr.type.sa.sa_family == AF_INET); /* XXX too strong? */ - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - existed = DNS_C_CHECKBIT(QUERY_SOURCE_BIT, - &cfg->options->setflags1); - DNS_C_SETBIT(QUERY_SOURCE_BIT, &cfg->options->setflags1); - - cfg->options->query_source = addr; - - return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); -} - - -isc_result_t -dns_c_ctx_setquerysourcev6(dns_c_ctx_t *cfg, isc_sockaddr_t addr) -{ - isc_boolean_t existed; - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(addr.type.sa.sa_family == AF_INET6); /* XXX too strong? */ - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - existed = DNS_C_CHECKBIT(QUERY_SOURCE_V6_BIT, - &cfg->options->setflags1); - DNS_C_SETBIT(QUERY_SOURCE_V6_BIT, &cfg->options->setflags1); - - cfg->options->query_source_v6 = addr; - - return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); -} - - -isc_result_t -dns_c_ctx_settransferformat(dns_c_ctx_t *cfg, - dns_transfer_format_t newval) -{ - isc_boolean_t existed; - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - existed = DNS_C_CHECKBIT(OPTIONS_TRANSFER_FORMAT_BIT, - &cfg->options->setflags1); - DNS_C_SETBIT(OPTIONS_TRANSFER_FORMAT_BIT, &cfg->options->setflags1); - - cfg->options->transfer_format = newval; - - return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); -} - isc_result_t dns_c_ctx_setchecknames(dns_c_ctx_t *cfg, dns_c_trans_t transtype, - dns_severity_t sever) + dns_severity_t newval) { isc_boolean_t existed = ISC_FALSE; isc_result_t res; + dns_severity_t **ptr = NULL; REQUIRE(DNS_C_CONFCTX_VALID(cfg)); @@ -1820,24 +1718,13 @@ dns_c_ctx_setchecknames(dns_c_ctx_t *cfg, if (res != ISC_R_SUCCESS) { return (res); } - + switch(transtype) { case dns_trans_primary: - existed = DNS_C_CHECKBIT(CHECKNAME_PRIM_BIT, - &cfg->options->setflags1); - DNS_C_SETBIT(CHECKNAME_PRIM_BIT, &cfg->options->setflags1); - break; - case dns_trans_secondary: - existed = DNS_C_CHECKBIT(CHECKNAME_SEC_BIT, - &cfg->options->setflags1); - DNS_C_SETBIT(CHECKNAME_SEC_BIT, &cfg->options->setflags1); - break; - case dns_trans_response: - existed = DNS_C_CHECKBIT(CHECKNAME_RESP_BIT, - &cfg->options->setflags1); - DNS_C_SETBIT(CHECKNAME_RESP_BIT, &cfg->options->setflags1); + ptr = &cfg->options->check_names[transtype]; + existed = ISC_TF(*ptr != NULL); break; default: @@ -1846,13 +1733,101 @@ dns_c_ctx_setchecknames(dns_c_ctx_t *cfg, "bad transport value: %d", transtype); return (ISC_R_FAILURE); } - - cfg->options->check_names[transtype] = sever; + if (!existed) { + *ptr = isc_mem_get(cfg->options->mem, + sizeof (**ptr)); + } + + **ptr = newval; + return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); } +isc_result_t +dns_c_ctx_getchecknames(dns_c_ctx_t *cfg, + dns_c_trans_t transtype, + dns_severity_t *retval) +{ + isc_result_t result; + dns_severity_t **ptr = NULL; + REQUIRE(DNS_C_CONFCTX_VALID(cfg)); + + if (cfg->options == NULL) { + return (ISC_R_NOTFOUND); + } + + REQUIRE(retval != NULL); + + switch (transtype) { + case dns_trans_primary: + case dns_trans_secondary: + case dns_trans_response: + ptr = &cfg->options->check_names[transtype]; + break; + + default: + isc_log_write(dns_lctx, DNS_LOGCATEGORY_CONFIG, + DNS_LOGMODULE_CONFIG, ISC_LOG_CRITICAL, + "bad transport value: %d", transtype); + return (ISC_R_FAILURE); + } + + if (*ptr != NULL) { + *retval = *cfg->options->check_names[transtype]; + result = ISC_R_SUCCESS; + } else { + result = ISC_R_NOTFOUND; + } + + return (result); +} + + +isc_result_t +dns_c_ctx_unsetchecknames(dns_c_ctx_t *cfg, + dns_c_trans_t transtype) +{ + isc_result_t res; + dns_severity_t **ptr = NULL; + + REQUIRE(DNS_C_CONFCTX_VALID(cfg)); + + res = make_options(cfg); + if (res != ISC_R_SUCCESS) { + return (res); + } + + switch(transtype) { + case dns_trans_primary: + case dns_trans_secondary: + case dns_trans_response: + ptr = &cfg->options->check_names[transtype]; + break; + + default: + isc_log_write(dns_lctx, DNS_LOGCATEGORY_CONFIG, + DNS_LOGMODULE_CONFIG, ISC_LOG_CRITICAL, + "bad transport value: %d", transtype); + return (ISC_R_FAILURE); + } + + if (*ptr == NULL) { + return (ISC_R_NOTFOUND); + } + + isc_mem_put(cfg->options->mem, *ptr, sizeof (**ptr)); + + return (ISC_R_SUCCESS); +} + + + + + + + isc_result_t dns_c_ctx_setqueryacl(dns_c_ctx_t *cfg, isc_boolean_t copy, dns_c_ipmatchlist_t *iml) @@ -1985,47 +1960,6 @@ dns_c_ctx_setsortlist(dns_c_ctx_t *cfg, isc_boolean_t copy, } -isc_result_t -dns_c_ctx_setforward(dns_c_ctx_t *cfg, dns_c_forw_t forw) -{ - isc_boolean_t existed; - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - existed = DNS_C_CHECKBIT(FORWARD_BIT, &cfg->options->setflags1); - DNS_C_SETBIT(FORWARD_BIT, &cfg->options->setflags1); - - cfg->options->forward = forw; - - return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); -} - - -isc_result_t -dns_c_ctx_setforwarders(dns_c_ctx_t *cfg, isc_boolean_t copy, - dns_c_iplist_t *ipl) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - res = cfg_set_iplist(cfg->options, &cfg->options->forwarders, - ipl, copy); - - return (res); -} - isc_result_t dns_c_ctx_setrrsetorderlist(dns_c_ctx_t *cfg, isc_boolean_t copy, @@ -2166,136 +2100,6 @@ dns_c_ctx_settrustedkeys(dns_c_ctx_t *cfg, dns_c_tkeylist_t *list, ** Accessors **/ -isc_result_t -dns_c_ctx_getdirectory(dns_c_ctx_t *cfg, char **retval) -{ - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); - - *retval = cfg->options->directory; - - return (*retval == NULL ? ISC_R_NOTFOUND : ISC_R_SUCCESS); -} - - -isc_result_t -dns_c_ctx_getversion(dns_c_ctx_t *cfg, char **retval) -{ - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); - - *retval = cfg->options->version; - - return (*retval == NULL ? ISC_R_NOTFOUND : ISC_R_SUCCESS); -} - - -isc_result_t -dns_c_ctx_getdumpfilename(dns_c_ctx_t *cfg, char **retval) -{ - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); - - *retval = cfg->options->dump_filename; - - return (*retval == NULL ? ISC_R_NOTFOUND : ISC_R_SUCCESS); -} - - -isc_result_t -dns_c_ctx_getpidfilename(dns_c_ctx_t *cfg, char **retval) -{ - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); - - *retval = cfg->options->pid_filename; - - return (*retval == NULL ? ISC_R_NOTFOUND : ISC_R_SUCCESS); -} - - -isc_result_t -dns_c_ctx_getstatsfilename(dns_c_ctx_t *cfg, char **retval) -{ - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); - - *retval = cfg->options->stats_filename; - - return (*retval == NULL ? ISC_R_NOTFOUND : ISC_R_SUCCESS); -} - - -isc_result_t -dns_c_ctx_getmemstatsfilename(dns_c_ctx_t *cfg, char **retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); - - *retval = cfg->options->memstats_filename; - - return (*retval == NULL ? ISC_R_NOTFOUND : ISC_R_SUCCESS); -} - - -isc_result_t -dns_c_ctx_getnamedxfer(dns_c_ctx_t *cfg, char **retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); - - *retval = cfg->options->named_xfer; - - return (*retval == NULL ? ISC_R_NOTFOUND : ISC_R_SUCCESS); -} - isc_result_t dns_c_ctx_gettkeydomain(dns_c_ctx_t *cfg, char **retval) @@ -2343,816 +2147,6 @@ dns_c_ctx_gettkeydhkey(dns_c_ctx_t *cfg, } -isc_result_t -dns_c_ctx_getmaxncachettl(dns_c_ctx_t *cfg, isc_uint32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); - - return (cfg_get_uint32(cfg->options, - &cfg->options->max_ncache_ttl, - retval, - &cfg->options->setflags1, - MAX_NCACHE_TTL_BIT)); -} - - -isc_result_t -dns_c_ctx_gettransfersin(dns_c_ctx_t *cfg, isc_int32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); - - - return (cfg_get_int32(cfg->options, - &cfg->options->transfers_in, - retval, - &cfg->options->setflags1, - TRANSFERS_IN_BIT)); -} - - -isc_result_t -dns_c_ctx_gettransfersperns(dns_c_ctx_t *cfg, isc_int32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); - - return (cfg_get_int32(cfg->options, - &cfg->options->transfers_per_ns, - retval, - &cfg->options->setflags1, - TRANSFERS_PER_NS_BIT)); -} - - -isc_result_t -dns_c_ctx_gettransfersout(dns_c_ctx_t *cfg, isc_int32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); - - return (cfg_get_int32(cfg->options, - &cfg->options->transfers_out, - retval, - &cfg->options->setflags1, - TRANSFERS_OUT_BIT)); -} - - -isc_result_t -dns_c_ctx_getmaxlogsizeixfr(dns_c_ctx_t *cfg, isc_int32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); - - return (cfg_get_int32(cfg->options, - &cfg->options->max_log_size_ixfr, - retval, - &cfg->options->setflags1, - MAX_LOG_SIZE_IXFR_BIT)); -} - - -isc_result_t -dns_c_ctx_getcleaninterval(dns_c_ctx_t *cfg, isc_int32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); - - return (cfg_get_int32(cfg->options, - &cfg->options->clean_interval, - retval, - &cfg->options->setflags1, - CLEAN_INTERVAL_BIT)); -} - - -isc_result_t -dns_c_ctx_getinterfaceinterval(dns_c_ctx_t *cfg, isc_int32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_int32(cfg->options, - &cfg->options->interface_interval, - retval, - &cfg->options->setflags1, - INTERFACE_INTERVAL_BIT)); -} - - -isc_result_t -dns_c_ctx_getstatsinterval(dns_c_ctx_t *cfg, isc_int32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_int32(cfg->options, - &cfg->options->stats_interval, - retval, - &cfg->options->setflags1, - STATS_INTERVAL_BIT)); -} - - -isc_result_t -dns_c_ctx_getheartbeatinterval(dns_c_ctx_t *cfg, isc_int32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_int32(cfg->options, - &cfg->options->heartbeat_interval, - retval, - &cfg->options->setflags1, - HEARTBEAT_INTERVAL_BIT)); -} - - -isc_result_t -dns_c_ctx_getmaxtransfertimein(dns_c_ctx_t *cfg, isc_int32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_int32(cfg->options, - &cfg->options->max_transfer_time_in, - retval, - &cfg->options->setflags1, - MAX_TRANSFER_TIME_IN_BIT)); -} - - -isc_result_t -dns_c_ctx_getmaxtransfertimeout(dns_c_ctx_t *cfg, isc_int32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_int32(cfg->options, - &cfg->options->max_transfer_time_out, - retval, - &cfg->options->setflags1, - MAX_TRANSFER_TIME_OUT_BIT)); -} - - -isc_result_t -dns_c_ctx_getmaxtransferidlein(dns_c_ctx_t *cfg, isc_int32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_int32(cfg->options, - &cfg->options->max_transfer_idle_in, - retval, - &cfg->options->setflags1, - MAX_TRANSFER_IDLE_IN_BIT)); -} - - -isc_result_t -dns_c_ctx_getmaxtransferidleout(dns_c_ctx_t *cfg, isc_int32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_int32(cfg->options, - &cfg->options->max_transfer_idle_out, - retval, - &cfg->options->setflags1, - MAX_TRANSFER_IDLE_OUT_BIT)); -} - - -isc_result_t -dns_c_ctx_gettcpclients(dns_c_ctx_t *cfg, isc_int32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_int32(cfg->options, - &cfg->options->tcp_clients, - retval, - &cfg->options->setflags1, - TCP_CLIENTS_BIT)); -} - - -isc_result_t -dns_c_ctx_getrecursiveclients(dns_c_ctx_t *cfg, isc_int32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_int32(cfg->options, - &cfg->options->recursive_clients, - retval, - &cfg->options->setflags1, - RECURSIVE_CLIENTS_BIT)); -} - - -isc_result_t -dns_c_ctx_getdatasize(dns_c_ctx_t *cfg, isc_uint32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_uint32(cfg->options, - &cfg->options->data_size, - retval, - &cfg->options->setflags1, - DATA_SIZE_BIT)); -} - - -isc_result_t -dns_c_ctx_getstacksize(dns_c_ctx_t *cfg, isc_uint32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_uint32(cfg->options, - &cfg->options->stack_size, - retval, - &cfg->options->setflags1, - STACK_SIZE_BIT)); -} - - -isc_result_t -dns_c_ctx_getcoresize(dns_c_ctx_t *cfg, isc_uint32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_uint32(cfg->options, - &cfg->options->core_size, - retval, - &cfg->options->setflags1, - CORE_SIZE_BIT)); -} - - -isc_result_t -dns_c_ctx_getfiles(dns_c_ctx_t *cfg, isc_uint32_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_uint32(cfg->options, - &cfg->options->files, - retval, - &cfg->options->setflags1, - FILES_BIT)); -} - - -isc_result_t -dns_c_ctx_getexpertmode(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->expert_mode, - retval, - &cfg->options->setflags1, - EXPERT_MODE_BIT)); -} - - -isc_result_t -dns_c_ctx_getfakeiquery(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->fake_iquery, - retval, - &cfg->options->setflags1, - FAKE_IQUERY_BIT)); -} - - -isc_result_t -dns_c_ctx_getrecursion(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->recursion, - retval, - &cfg->options->setflags1, - RECURSION_BIT)); -} - - -isc_result_t -dns_c_ctx_getfetchglue(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->fetch_glue, - retval, - &cfg->options->setflags1, - FETCH_GLUE_BIT)); -} - - -isc_result_t -dns_c_ctx_getnotify(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->notify, - retval, - &cfg->options->setflags1, - NOTIFY_BIT)); -} - - -isc_result_t -dns_c_ctx_gethoststatistics(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->host_statistics, - retval, - &cfg->options->setflags1, - HOST_STATISTICS_BIT)); -} - - -isc_result_t -dns_c_ctx_getdealloconexit(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->dealloc_on_exit, - retval, - &cfg->options->setflags1, - DEALLOC_ON_EXIT_BIT)); -} - - -isc_result_t -dns_c_ctx_getuseixfr(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->use_ixfr, - retval, - &cfg->options->setflags1, - USE_IXFR_BIT)); -} - - -isc_result_t -dns_c_ctx_getmaintainixfrbase(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->maintain_ixfr_base, - retval, - &cfg->options->setflags1, - MAINTAIN_IXFR_BASE_BIT)); -} - - -isc_result_t -dns_c_ctx_gethasoldclients(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->has_old_clients, - retval, - &cfg->options->setflags1, - HAS_OLD_CLIENTS_BIT)); -} - - - -isc_result_t -dns_c_ctx_getauthnxdomain(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->auth_nx_domain, - retval, - &cfg->options->setflags1, - AUTH_NX_DOMAIN_BIT)); -} - - -isc_result_t -dns_c_ctx_getmultiplecnames(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->multiple_cnames, - retval, - &cfg->options->setflags1, - MULTIPLE_CNAMES_BIT)); -} - - -isc_result_t -dns_c_ctx_getuseidpool(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->use_id_pool, - retval, - &cfg->options->setflags1, - USE_ID_POOL_BIT)); -} - - -isc_result_t -dns_c_ctx_getrfc2308type1(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->rfc2308_type1, - retval, - &cfg->options->setflags1, - RFC2308_TYPE1_BIT)); -} - - -isc_result_t -dns_c_ctx_getrequestixfr(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->request_ixfr, - retval, - &cfg->options->setflags1, - REQUEST_IXFR_BIT)); -} - - -isc_result_t -dns_c_ctx_getprovideixfr(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->provide_ixfr, - retval, - &cfg->options->setflags1, - PROVIDE_IXFR_BIT)); -} - - -isc_result_t -dns_c_ctx_getdialup(dns_c_ctx_t *cfg, isc_boolean_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - return (cfg_get_boolean(cfg->options, - &cfg->options->dialup, - retval, - &cfg->options->setflags1, - DIALUP_BIT)); -} - - -isc_result_t -dns_c_ctx_getquerysource(dns_c_ctx_t *cfg, isc_sockaddr_t *addr) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(addr != NULL); - - if (DNS_C_CHECKBIT(QUERY_SOURCE_BIT, &cfg->options->setflags1)) { - *addr = cfg->options->query_source; - res = ISC_R_SUCCESS; - } else { - res = ISC_R_NOTFOUND; - } - - return (res); -} - - -isc_result_t -dns_c_ctx_getquerysourcev6(dns_c_ctx_t *cfg, isc_sockaddr_t *addr) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(addr != NULL); - - if (DNS_C_CHECKBIT(QUERY_SOURCE_V6_BIT, &cfg->options->setflags1)) { - *addr = cfg->options->query_source_v6; - res = ISC_R_SUCCESS; - } else { - res = ISC_R_NOTFOUND; - } - - return (res); -} - - -isc_result_t -dns_c_ctx_gettransferformat(dns_c_ctx_t *cfg, - dns_transfer_format_t *retval) -{ - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(retval != NULL); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - - if (DNS_C_CHECKBIT(OPTIONS_TRANSFER_FORMAT_BIT, - &cfg->options->setflags1)) { - *retval = cfg->options->transfer_format; - return (ISC_R_SUCCESS); - } else { - return (ISC_R_NOTFOUND); - } -} - - -isc_result_t -dns_c_ctx_getchecknames(dns_c_ctx_t *cfg, - dns_c_trans_t transtype, - dns_severity_t *sever) -{ - isc_boolean_t isset = ISC_FALSE; - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); - } - - REQUIRE(sever != NULL); - - switch (transtype) { - case dns_trans_primary: - isset = DNS_C_CHECKBIT(CHECKNAME_PRIM_BIT, - &cfg->options->setflags1); - break; - - case dns_trans_secondary: - isset = DNS_C_CHECKBIT(CHECKNAME_SEC_BIT, - &cfg->options->setflags1); - break; - - case dns_trans_response: - isset = DNS_C_CHECKBIT(CHECKNAME_RESP_BIT, - &cfg->options->setflags1); - break; - - default: - isc_log_write(dns_lctx, DNS_LOGCATEGORY_CONFIG, - DNS_LOGMODULE_CONFIG, ISC_LOG_CRITICAL, - "bad transport value: %d", transtype); - return (ISC_R_FAILURE); - } - - if (isset) { - *sever = cfg->options->check_names[transtype]; - res = ISC_R_SUCCESS; - } else { - res = ISC_R_NOTFOUND; - } - - return (res); -} isc_result_t @@ -3272,25 +2266,22 @@ dns_c_ctx_getlistenlist(dns_c_ctx_t *cfg, dns_c_lstnlist_t **ll) } + isc_result_t -dns_c_ctx_getforward(dns_c_ctx_t *cfg, dns_c_forw_t *forw) +dns_c_ctx_setforwarders(dns_c_ctx_t *cfg, isc_boolean_t copy, + dns_c_iplist_t *ipl) { isc_result_t res; - + REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - if (cfg->options == NULL) { - return (ISC_R_NOTFOUND); + res = make_options(cfg); + if (res != ISC_R_SUCCESS) { + return (res); } - REQUIRE(forw != NULL); - - if (DNS_C_CHECKBIT(FORWARD_BIT, &cfg->options->setflags1)) { - *forw = cfg->options->forward; - res = ISC_R_SUCCESS; - } else { - return (ISC_R_NOTFOUND); - } + res = cfg_set_iplist(cfg->options, &cfg->options->forwarders, + ipl, copy); return (res); } @@ -3312,6 +2303,24 @@ dns_c_ctx_getforwarders(dns_c_ctx_t *cfg, dns_c_iplist_t **list) } +isc_result_t +dns_c_ctx_unsetforwarders(dns_c_ctx_t *cfg) +{ + REQUIRE(DNS_C_CONFCTX_VALID(cfg)); + + if (cfg->options == NULL) { + return (ISC_R_NOTFOUND); + } + + if (cfg->options->forwarders != NULL) { + return (dns_c_iplist_detach(&cfg->options->forwarders)); + } else { + return (ISC_R_SUCCESS); + } +} + + + isc_result_t dns_c_ctx_getrrsetorderlist(dns_c_ctx_t *cfg, dns_c_rrsolist_t **retval) { @@ -3343,557 +2352,7 @@ dns_c_ctx_gettrustedkeys(dns_c_ctx_t *cfg, dns_c_tkeylist_t **retval) -isc_result_t -dns_c_ctx_optionsnew(isc_mem_t *mem, dns_c_options_t **options) -{ - int i; - dns_c_options_t *opts = NULL; - REQUIRE(mem != NULL); - REQUIRE(options != NULL); - - *options = NULL; - - opts = isc_mem_get(mem, sizeof *opts); - if (opts == NULL) { - return (ISC_R_NOMEMORY); - } - - opts->directory = NULL; - opts->version = NULL; - opts->dump_filename = NULL; - opts->pid_filename = NULL; - opts->stats_filename = NULL; - opts->memstats_filename = NULL; - opts->named_xfer = NULL; - opts->tkeydomain = NULL; - opts->also_notify = NULL; - opts->tkeydhkeycp = NULL; - opts->tkeydhkeyi = 0; - - opts->mem = mem; - opts->magic = DNS_C_OPTION_MAGIC; - opts->flags = 0; - opts->max_ncache_ttl = 0; - - opts->transfers_in = 0; - opts->transfers_per_ns = 0; - opts->transfers_out = 0; - opts->max_log_size_ixfr = 0; - opts->clean_interval = 0; - opts->interface_interval = 0; - opts->stats_interval = 0; - opts->heartbeat_interval = 0; - - opts->fake_iquery = ISC_FALSE; - opts->recursion = ISC_FALSE; - opts->fetch_glue = ISC_FALSE; - opts->notify = ISC_FALSE; - opts->host_statistics = ISC_FALSE; - opts->dealloc_on_exit = ISC_FALSE; - opts->use_ixfr = ISC_FALSE; - opts->maintain_ixfr_base = ISC_FALSE; - opts->has_old_clients = ISC_FALSE; - opts->expert_mode = ISC_FALSE; - opts->auth_nx_domain = ISC_FALSE; - opts->multiple_cnames = ISC_FALSE; - opts->use_id_pool = ISC_FALSE; - opts->rfc2308_type1 = ISC_FALSE; - opts->request_ixfr = ISC_FALSE; - opts->provide_ixfr = ISC_FALSE; - opts->dialup = ISC_FALSE; - - opts->tcp_clients = 0; - opts->recursive_clients = 0; - - opts->max_transfer_time_in = 0; - opts->max_transfer_time_out = 0; - opts->max_transfer_idle_in = 0; - opts->max_transfer_idle_out = 0; - - opts->data_size = 0; - opts->stack_size = 0; - opts->core_size = 0; - opts->files = 0; - - opts->transfer_format = dns_one_answer; - - for (i = 0 ; i < DNS_C_TRANSCOUNT ; i++) { - opts->check_names[i] = dns_severity_fail; - } - - opts->queryacl = NULL; - opts->transferacl = NULL; - opts->recursionacl = NULL; - opts->blackhole = NULL; - opts->topology = NULL; - opts->sortlist = NULL; - opts->listens = NULL; - opts->ordering = NULL; - - opts->forward = dns_c_forw_only; - opts->forwarders = NULL; - - memset(&opts->setflags1, 0x0, sizeof opts->setflags1); - - *options = opts; - - return (ISC_R_SUCCESS); -} - - -isc_result_t -dns_c_ctx_optionsdelete(dns_c_options_t **opts) -{ - dns_c_options_t *options; - isc_result_t r, result; - - REQUIRE(opts != NULL); - - options = *opts; - if (options == NULL) { - return (ISC_R_SUCCESS); - } - - REQUIRE(DNS_C_CONFOPT_VALID(options)); - - if (options->directory != NULL) { - isc_mem_free(options->mem, options->directory); - } - - if (options->version != NULL) { - isc_mem_free(options->mem, options->version); - } - - if (options->dump_filename != NULL) { - isc_mem_free(options->mem, options->dump_filename); - } - - if (options->pid_filename != NULL) { - isc_mem_free(options->mem, options->pid_filename); - } - - if (options->stats_filename != NULL) { - isc_mem_free(options->mem, options->stats_filename); - } - - if (options->memstats_filename != NULL) { - isc_mem_free(options->mem, options->memstats_filename); - } - - if (options->named_xfer != NULL) { - isc_mem_free(options->mem, options->named_xfer); - } - - if (options->also_notify != NULL) { - dns_c_iplist_detach(&options->also_notify); - } - - if (options->tkeydomain != NULL) { - isc_mem_free(options->mem, options->tkeydomain); - } - - if (options->tkeydhkeycp != NULL) { - isc_mem_free(options->mem, options->tkeydhkeycp); - } - - result = ISC_R_SUCCESS; - - if (options->queryacl != NULL) { - r = dns_c_ipmatchlist_detach(&options->queryacl); - if (r != ISC_R_SUCCESS) - result = r; - } - - if (options->transferacl != NULL) { - r = dns_c_ipmatchlist_detach(&options->transferacl); - if (r != ISC_R_SUCCESS) - result = r; - } - - if (options->recursionacl != NULL) { - r = dns_c_ipmatchlist_detach(&options->recursionacl); - if (r != ISC_R_SUCCESS) - result = r; - } - - if (options->blackhole != NULL) { - r = dns_c_ipmatchlist_detach(&options->blackhole); - if (r != ISC_R_SUCCESS) - result = r; - } - - if (options->topology != NULL) { - r = dns_c_ipmatchlist_detach(&options->topology); - if (r != ISC_R_SUCCESS) - result = r; - } - - if (options->sortlist != NULL) { - r = dns_c_ipmatchlist_detach(&options->sortlist); - if (r != ISC_R_SUCCESS) - result = r; - } - - if (options->listens != NULL) { - r = dns_c_lstnlist_delete(&options->listens); - if (r != ISC_R_SUCCESS) - result = r; - } - - if (options->ordering != NULL) { - r = dns_c_rrsolist_delete(&options->ordering); - if (r != ISC_R_SUCCESS) - result = r; - } - - if (options->forwarders != NULL) { - r = dns_c_iplist_detach(&options->forwarders); - if (r != ISC_R_SUCCESS) - result = r; - } - - *opts = NULL; - options->magic = 0; - - isc_mem_put(options->mem, options, sizeof *options); - - return (result); -} - - -void -dns_c_ctx_optionsprint(FILE *fp, int indent, dns_c_options_t *options) -{ - dns_severity_t nameseverity; - in_port_t port; - - REQUIRE(fp != NULL); - - if (options == NULL) { - return; - } - - REQUIRE(DNS_C_CONFOPT_VALID(options)); - -#define PRINT_INTEGER(field, bit, name, bitfield) \ - if (DNS_C_CHECKBIT(bit, &options->bitfield)) { \ - dns_c_printtabs(fp, indent + 1); \ - fprintf(fp, "%s %d;\n",name,(int)options->field); \ - } - -#define PRINT_AS_MINUTES(field, bit, name, bitfield) \ - if (DNS_C_CHECKBIT(bit, &options->bitfield)) { \ - dns_c_printtabs(fp, indent + 1); \ - fprintf(fp, "%s %lu;\n",name, \ - (unsigned long)options->field / 60); \ - } - -#define PRINT_AS_BOOLEAN(field, bit, name, bitfield) \ - if (DNS_C_CHECKBIT(bit, &options->bitfield)) { \ - dns_c_printtabs(fp, indent + 1); \ - fprintf(fp, "%s %s;\n",name, \ - (options->field ? "true" : "false")); \ - } - -#define PRINT_AS_SIZE_CLAUSE(field, bit, name, bitfield) \ - if (DNS_C_CHECKBIT(bit, &options->bitfield)) { \ - dns_c_printtabs(fp, indent + 1); \ - fprintf(fp, "%s ",name); \ - if (options->field == DNS_C_SIZE_SPEC_DEFAULT) { \ - fprintf(fp, "default"); \ - } else { \ - dns_c_printinunits(fp, options->field); \ - } \ - fprintf(fp, ";\n"); \ - } - -#define PRINT_CHAR_P(field, name) \ - if (options->field != NULL) { \ - dns_c_printtabs(fp, indent + 1); \ - fprintf(fp, "%s \"%s\";\n", name, options->field); \ - } - - - - dns_c_printtabs(fp, indent); - fprintf (fp, "options {\n"); - - PRINT_CHAR_P(version, "version"); - PRINT_CHAR_P(directory, "directory"); - PRINT_CHAR_P(dump_filename, "dump-file"); - PRINT_CHAR_P(pid_filename, "pid-file"); - PRINT_CHAR_P(stats_filename, "statistics-file"); - PRINT_CHAR_P(memstats_filename, "memstatistics-file"); - PRINT_CHAR_P(named_xfer, "named-xfer"); - PRINT_CHAR_P(tkeydomain, "tkey-domain"); - - if (options->tkeydhkeycp != NULL) { - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "tkey-dhkey \"%s\" %d ;\n", - options->tkeydhkeycp, options->tkeydhkeyi); - } - - PRINT_INTEGER(transfers_in, TRANSFERS_IN_BIT, - "transfers-in", setflags1); - PRINT_INTEGER(transfers_per_ns, TRANSFERS_PER_NS_BIT, - "transfers-per-ns", setflags1); - PRINT_INTEGER(transfers_out, TRANSFERS_OUT_BIT, - "transfers-out", setflags1); - PRINT_INTEGER(max_log_size_ixfr, MAX_LOG_SIZE_IXFR_BIT, - "max-ixfr-log-size", setflags1); - PRINT_INTEGER(tcp_clients, TCP_CLIENTS_BIT, - "tcp-clients", setflags1); - PRINT_INTEGER(recursive_clients, RECURSIVE_CLIENTS_BIT, - "recursive-clients", setflags1); - - - PRINT_INTEGER(max_ncache_ttl, MAX_NCACHE_TTL_BIT, - "max-ncache-ttl", setflags1); - - PRINT_AS_MINUTES(clean_interval, CLEAN_INTERVAL_BIT, - "cleaning-interval", setflags1); - PRINT_AS_MINUTES(interface_interval, INTERFACE_INTERVAL_BIT, - "interface-interval", setflags1); - PRINT_AS_MINUTES(stats_interval, STATS_INTERVAL_BIT, - "statistics-interval", setflags1); - PRINT_AS_MINUTES(heartbeat_interval, HEARTBEAT_INTERVAL_BIT, - "heartbeat-interval", setflags1); - PRINT_AS_MINUTES(max_transfer_time_in, MAX_TRANSFER_TIME_IN_BIT, - "max-transfer-time-in", setflags1); - PRINT_AS_MINUTES(max_transfer_time_out, MAX_TRANSFER_TIME_OUT_BIT, - "max-transfer-time-out", setflags1); - PRINT_AS_MINUTES(max_transfer_idle_in, MAX_TRANSFER_IDLE_IN_BIT, - "max-transfer-idle-in", setflags1); - PRINT_AS_MINUTES(max_transfer_idle_out, MAX_TRANSFER_IDLE_OUT_BIT, - "max-transfer-idle-out", setflags1); - - PRINT_AS_SIZE_CLAUSE(data_size, DATA_SIZE_BIT, "datasize", - setflags1); - PRINT_AS_SIZE_CLAUSE(stack_size, STACK_SIZE_BIT, "stacksize", - setflags1); - PRINT_AS_SIZE_CLAUSE(core_size, CORE_SIZE_BIT, "coresize", - setflags1); - PRINT_AS_SIZE_CLAUSE(files, FILES_BIT, "files", - setflags1); - - PRINT_AS_BOOLEAN(expert_mode, EXPERT_MODE_BIT, - "expert-mode", setflags1); - PRINT_AS_BOOLEAN(fake_iquery, FAKE_IQUERY_BIT, - "fake-iquery", setflags1); - PRINT_AS_BOOLEAN(recursion, RECURSION_BIT, - "recursion", setflags1); - PRINT_AS_BOOLEAN(fetch_glue, FETCH_GLUE_BIT, - "fetch-glue", setflags1); - PRINT_AS_BOOLEAN(notify, NOTIFY_BIT, - "notify", setflags1); - PRINT_AS_BOOLEAN(host_statistics, HOST_STATISTICS_BIT, - "host-statistics", setflags1); - PRINT_AS_BOOLEAN(dealloc_on_exit, DEALLOC_ON_EXIT_BIT, - "deallocate-on-exit", setflags1); - PRINT_AS_BOOLEAN(use_ixfr, USE_IXFR_BIT, - "use-ixfr", setflags1); - PRINT_AS_BOOLEAN(maintain_ixfr_base, MAINTAIN_IXFR_BASE_BIT, - "maintain-ixfr-base", setflags1); - PRINT_AS_BOOLEAN(has_old_clients, HAS_OLD_CLIENTS_BIT, - "has-old-clients", setflags1); - PRINT_AS_BOOLEAN(auth_nx_domain, AUTH_NX_DOMAIN_BIT, - "auth-nxdomain", setflags1); - PRINT_AS_BOOLEAN(multiple_cnames, MULTIPLE_CNAMES_BIT, - "multiple-cnames", setflags1); - PRINT_AS_BOOLEAN(use_id_pool, USE_ID_POOL_BIT, - "use-id-pool", setflags1); - PRINT_AS_BOOLEAN(rfc2308_type1, RFC2308_TYPE1_BIT, - "rfc2308-type1", setflags1); - PRINT_AS_BOOLEAN(request_ixfr, REQUEST_IXFR_BIT, - "request-ixfr", setflags1); - PRINT_AS_BOOLEAN(provide_ixfr, PROVIDE_IXFR_BIT, - "provide-ixfr", setflags1); - PRINT_AS_BOOLEAN(dialup, DIALUP_BIT, - "dialup", setflags1); - -#undef PRINT_INTEGER -#undef PRINT_AS_MINUTES -#undef PRINT_AS_BOOLEAN -#undef PRINT_AS_SIZE_CLAUSE -#undef PRINT_CHAR_P - - - if (DNS_C_CHECKBIT(OPTIONS_TRANSFER_FORMAT_BIT, &options->setflags1)) { - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "transfer-format %s;\n", - dns_c_transformat2string(options->transfer_format, - ISC_TRUE)); - } - - - if (DNS_C_CHECKBIT(QUERY_SOURCE_BIT, &options->setflags1)) { - port = isc_sockaddr_getport(&options->query_source); - - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "query-source address "); - - dns_c_print_ipaddr(fp, &options->query_source); - - if (port == 0) { - fprintf(fp, " port *"); - } else { - fprintf(fp, " port %d", port); - } - fprintf(fp, " ;\n"); - } - - - if (DNS_C_CHECKBIT(QUERY_SOURCE_V6_BIT, &options->setflags1)) { - port = isc_sockaddr_getport(&options->query_source_v6); - - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "query-source-v6 address "); - - dns_c_print_ipaddr(fp, &options->query_source_v6); - - if (port == 0) { - fprintf(fp, " port *"); - } else { - fprintf(fp, " port %d", port); - } - fprintf(fp, " ;\n"); - } - - - if (DNS_C_CHECKBIT(CHECKNAME_PRIM_BIT, &options->setflags1)) { - nameseverity = options->check_names[dns_trans_primary]; - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "check-names %s %s;\n", - dns_c_transport2string(dns_trans_primary, - ISC_TRUE), - dns_c_nameseverity2string(nameseverity, - ISC_TRUE)); - } - - if (DNS_C_CHECKBIT(CHECKNAME_SEC_BIT, &options->setflags1)) { - nameseverity = options->check_names[dns_trans_secondary]; - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "check-names %s %s;\n", - dns_c_transport2string(dns_trans_secondary, - ISC_TRUE), - dns_c_nameseverity2string(nameseverity, - ISC_TRUE)); - } - - if (DNS_C_CHECKBIT(CHECKNAME_RESP_BIT, &options->setflags1)) { - nameseverity = options->check_names[dns_trans_response]; - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "check-names %s %s;\n", - dns_c_transport2string(dns_trans_response, - ISC_TRUE), - dns_c_nameseverity2string(nameseverity, - ISC_TRUE)); - } - - fprintf(fp, "\n"); - - if (options->queryacl != NULL) { - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "allow-query "); - dns_c_ipmatchlist_print(fp, 2, options->queryacl); - fprintf(fp, ";\n"); - } - - if (options->transferacl != NULL) { - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "allow-transfer "); - dns_c_ipmatchlist_print(fp, 2, options->transferacl); - fprintf(fp, ";\n"); - } - - if (options->recursionacl != NULL) { - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "allow-recursion "); - dns_c_ipmatchlist_print(fp, 2, options->recursionacl); - fprintf(fp, ";\n"); - } - - if (options->blackhole != NULL) { - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "blackhole "); - dns_c_ipmatchlist_print(fp, 2, options->blackhole); - fprintf(fp, ";\n"); - } - - if (options->topology != NULL) { - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "topology "); - dns_c_ipmatchlist_print(fp, 2, options->topology); - fprintf(fp, ";\n"); - } - - if (options->sortlist != NULL) { - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "sortlist "); - dns_c_ipmatchlist_print(fp, 2, options->sortlist); - fprintf(fp, ";\n"); - } - - if (options->listens != NULL) { - dns_c_lstnlist_print(fp, indent + 1, - options->listens); - } - - dns_c_ctx_forwarderprint(fp, indent + 1, options); - - if (options->ordering != NULL) { - dns_c_rrsolist_print(fp, indent + 1, options->ordering); - } - - if (options->also_notify != NULL) { - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "also-notify ") ; - dns_c_iplist_print(fp, indent + 2, options->also_notify); - fprintf(fp, ";\n"); - } - - if (DNS_C_CHECKBIT(TRANSFER_SOURCE_BIT, &options->setflags1)) { - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "transfer-source "); - dns_c_print_ipaddr(fp, &options->transfer_source); - fprintf(fp, ";\n"); - } - - - if (DNS_C_CHECKBIT(TRANSFER_SOURCE_V6_BIT, &options->setflags1)) { - dns_c_printtabs(fp, indent + 1); - fprintf(fp, "transfer-source-v6 "); - dns_c_print_ipaddr(fp, &options->transfer_source_v6); - fprintf(fp, ";\n"); - } - - - dns_c_printtabs(fp, indent); - fprintf(fp,"};\n"); -} - - -isc_boolean_t -dns_c_ctx_keydefinedp(dns_c_ctx_t *ctx, const char *keyname) -{ - dns_c_kdef_t *keyid; - isc_result_t res; - isc_boolean_t rval = ISC_FALSE; - - REQUIRE(DNS_C_CONFCTX_VALID(ctx)); - REQUIRE(keyname != NULL); - REQUIRE(*keyname != '\0'); - - if (ctx->keydefs != NULL) { - res = dns_c_kdeflist_find(ctx->keydefs, keyname, &keyid); - if (res == ISC_R_SUCCESS) { - rval = ISC_TRUE; - } - } - - return rval; -} isc_result_t @@ -3901,21 +2360,21 @@ dns_c_ctx_setalsonotify(dns_c_ctx_t *cfg, dns_c_iplist_t *iml, isc_boolean_t copy) { - isc_result_t res; + isc_result_t result; REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); + result = make_options(cfg); + if (result != ISC_R_SUCCESS) { + return (result); } REQUIRE(iml != NULL); - res = cfg_set_iplist(cfg->options, &cfg->options->also_notify, - iml, copy); + result = cfg_set_iplist(cfg->options, &cfg->options->also_notify, + iml, copy); - return (res); + return (result); } @@ -3935,99 +2394,49 @@ dns_c_ctx_getalsonotify(dns_c_ctx_t *cfg, dns_c_iplist_t **ret) isc_result_t -dns_c_ctx_settransfersource(dns_c_ctx_t *cfg, isc_sockaddr_t newval) +dns_c_ctx_unsetalsonotify(dns_c_ctx_t *cfg) { - isc_boolean_t existed; - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - existed = DNS_C_CHECKBIT(TRANSFER_SOURCE_BIT, - &cfg->options->setflags1); - DNS_C_SETBIT(TRANSFER_SOURCE_BIT, &cfg->options->setflags1); - - cfg->options->transfer_source = newval; - - return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); -} - - -isc_result_t -dns_c_ctx_gettransfersource(dns_c_ctx_t *cfg, isc_sockaddr_t *retval) -{ - isc_result_t res; - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); if (cfg->options == NULL) { return (ISC_R_NOTFOUND); } - - REQUIRE(retval != NULL); - if (DNS_C_CHECKBIT(TRANSFER_SOURCE_BIT, &cfg->options->setflags1)) { - *retval = cfg->options->transfer_source; - res = ISC_R_SUCCESS; + REQUIRE(DNS_C_CONFOPT_VALID(cfg->options)); + + if (cfg->options->also_notify != NULL) { + dns_c_iplist_detach(&cfg->options->also_notify); + return (ISC_R_SUCCESS); } else { - res = ISC_R_NOTFOUND; - } - - return (res); -} - - -isc_result_t -dns_c_ctx_settransfersourcev6(dns_c_ctx_t *cfg, isc_sockaddr_t newval) -{ - isc_boolean_t existed; - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - REQUIRE(newval.type.sa.sa_family == AF_INET6); /* XXX too strong? */ - - res = make_options(cfg); - if (res != ISC_R_SUCCESS) { - return (res); - } - - existed = DNS_C_CHECKBIT(TRANSFER_SOURCE_V6_BIT, - &cfg->options->setflags1); - DNS_C_SETBIT(TRANSFER_SOURCE_V6_BIT, &cfg->options->setflags1); - - cfg->options->transfer_source_v6 = newval; - - return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); -} - - -isc_result_t -dns_c_ctx_gettransfersourcev6(dns_c_ctx_t *cfg, isc_sockaddr_t *retval) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFCTX_VALID(cfg)); - - if (cfg->options == NULL) { return (ISC_R_NOTFOUND); } - - REQUIRE(retval != NULL); +} - if (DNS_C_CHECKBIT(TRANSFER_SOURCE_V6_BIT, &cfg->options->setflags1)) { - *retval = cfg->options->transfer_source_v6; - res = ISC_R_SUCCESS; - } else { - res = ISC_R_NOTFOUND; + + + +isc_boolean_t +dns_c_ctx_keydefinedp(dns_c_ctx_t *cfg, const char *keyname) +{ + dns_c_kdef_t *keyid; + isc_result_t res; + isc_boolean_t rval = ISC_FALSE; + + REQUIRE(DNS_C_CONFCTX_VALID(cfg)); + REQUIRE(keyname != NULL); + REQUIRE(*keyname != '\0'); + + if (cfg->keydefs != NULL) { + res = dns_c_kdeflist_find(cfg->keydefs, keyname, &keyid); + if (res == ISC_R_SUCCESS) { + rval = ISC_TRUE; + } } - return (res); + return rval; } - + + @@ -4176,74 +2585,6 @@ cfg_set_ipmatchlist(dns_c_options_t *options, -static isc_result_t -cfg_set_boolean(dns_c_options_t *options, - isc_boolean_t *fieldaddr, - isc_boolean_t newval, - dns_c_setbits_t *setfield, - isc_uint32_t bitnumber) -{ - isc_boolean_t existed; - - REQUIRE(DNS_C_CONFOPT_VALID(options)); - REQUIRE(setfield != NULL); - REQUIRE(fieldaddr != NULL); - REQUIRE(bitnumber < DNS_C_SETBITS_SIZE); - - *fieldaddr = newval; - - existed = DNS_C_CHECKBIT(bitnumber, setfield); - DNS_C_SETBIT(bitnumber, setfield); - - return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); -} - - -static isc_result_t -cfg_set_int32(dns_c_options_t *options, - isc_int32_t *fieldaddr, - isc_int32_t newval, - dns_c_setbits_t *setfield, - isc_uint32_t bitnumber) -{ - isc_boolean_t existed; - - REQUIRE(DNS_C_CONFOPT_VALID(options)); - REQUIRE(setfield != NULL); - REQUIRE(fieldaddr != NULL); - REQUIRE(bitnumber < DNS_C_SETBITS_SIZE); - - *fieldaddr = newval; - - existed = DNS_C_CHECKBIT(bitnumber, setfield); - DNS_C_SETBIT(bitnumber, setfield); - - return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); -} - - -static isc_result_t -cfg_set_uint32(dns_c_options_t *options, - isc_uint32_t *fieldaddr, - isc_uint32_t newval, - dns_c_setbits_t *setfield, - isc_uint32_t bitnumber) -{ - isc_boolean_t existed; - - REQUIRE(DNS_C_CONFOPT_VALID(options)); - REQUIRE(setfield != NULL); - REQUIRE(fieldaddr != NULL); - REQUIRE(bitnumber < DNS_C_SETBITS_SIZE); - - *fieldaddr = newval; - - existed = DNS_C_CHECKBIT(bitnumber, setfield); - DNS_C_SETBIT(bitnumber, setfield); - - return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); -} - static isc_result_t cfg_get_ipmatchlist(dns_c_options_t *options, @@ -4289,83 +2630,6 @@ cfg_get_iplist(dns_c_options_t *options, } -static isc_result_t -cfg_get_boolean(dns_c_options_t *options, - isc_boolean_t *field, - isc_boolean_t *result, - dns_c_setbits_t *setfield, - isc_uint32_t bitnumber) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFOPT_VALID(options)); - REQUIRE(result != NULL); - REQUIRE(field != NULL); - REQUIRE(setfield != NULL); - REQUIRE(bitnumber < DNS_C_SETBITS_SIZE); - - if (DNS_C_CHECKBIT(bitnumber,setfield)) { - *result = *field; - res = ISC_R_SUCCESS; - } else { - res = ISC_R_NOTFOUND; - } - - return (res); -} - - -static isc_result_t -cfg_get_int32(dns_c_options_t *options, - isc_int32_t *field, - isc_int32_t *result, - dns_c_setbits_t *setfield, - isc_uint32_t bitnumber) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFOPT_VALID(options)); - REQUIRE(result != NULL); - REQUIRE(field != NULL); - REQUIRE(setfield != NULL); - REQUIRE(bitnumber < DNS_C_SETBITS_SIZE); - - if (DNS_C_CHECKBIT(bitnumber,setfield)) { - *result = *field; - res = ISC_R_SUCCESS; - } else { - res = ISC_R_NOTFOUND; - } - - return (res); -} - - -static isc_result_t -cfg_get_uint32(dns_c_options_t *options, - isc_uint32_t *field, - isc_uint32_t *result, - dns_c_setbits_t *setfield, - isc_uint32_t bitnumber) -{ - isc_result_t res; - - REQUIRE(DNS_C_CONFOPT_VALID(options)); - REQUIRE(result != NULL); - REQUIRE(field != NULL); - REQUIRE(setfield != NULL); - REQUIRE(bitnumber < DNS_C_SETBITS_SIZE); - - if (DNS_C_CHECKBIT(bitnumber,setfield)) { - *result = *field; - res = ISC_R_SUCCESS; - } else { - res = ISC_R_NOTFOUND; - } - - return (res); -} - static isc_result_t acl_init(dns_c_ctx_t *cfg) @@ -4386,10 +2650,6 @@ static isc_result_t logging_init (dns_c_ctx_t *cfg) { isc_result_t res; -#if 0 - dns_c_logcat_t *cat; - dns_c_logchan_t *chan; -#endif REQUIRE(DNS_C_CONFCTX_VALID(cfg)); REQUIRE(cfg->logging == NULL); @@ -4399,89 +2659,6 @@ logging_init (dns_c_ctx_t *cfg) return (res); } -#if 0 - /* default_syslog channel */ - chan = NULL; - res = dns_c_ctx_addsyslogchannel(cfg, DNS_C_DEFAULT_SYSLOG, - &chan); - if (res != ISC_R_SUCCESS) { - return (res); - } - dns_c_logchan_setpredef(chan, ISC_TRUE); - dns_c_logchan_setfacility(chan, LOG_DAEMON); - dns_c_logchan_setseverity(chan, dns_c_log_info); - - - /* default_debug channel */ - chan = NULL; - res = dns_c_ctx_addfile_channel(cfg, DNS_C_DEFAULT_DEBUG, &chan); - if (res != ISC_R_SUCCESS) { - return (res); - } - dns_c_logchan_setpredef(chan, ISC_TRUE); - dns_c_logchan_setpath(chan, DNS_C_DEFAULT_DEBUG_PATH); - dns_c_logchan_setseverity(chan, dns_c_log_dynamic); - - - /* null channel */ - chan = NULL; - res = dns_c_ctx_addnullchannel(cfg, DNS_C_NULL, &chan); - dns_c_logchan_setpredef(chan, ISC_TRUE); - - - /* default_stderr channel */ - chan = NULL; - res = dns_c_ctx_addfile_channel(cfg, DNS_C_DEFAULT_STDERR, - &chan); - if (res != ISC_R_SUCCESS) { - return (res); - } - dns_c_logchan_setpredef(chan, ISC_TRUE); - dns_c_logchan_setpath(chan, DNS_C_STDERR_PATH); - dns_c_logchan_setseverity(chan, dns_c_log_info); - - - /* default category */ - cat = NULL; - res = dns_c_ctx_addcategory(cfg, "default", &cat); - if (res != ISC_R_SUCCESS) { - return (res); - } - dns_c_logcat_setpredef(cat, ISC_TRUE); - dns_c_logcat_addname(cat, DNS_C_DEFAULT_SYSLOG); - dns_c_logcat_addname(cat, DNS_C_DEFAULT_DEBUG); - - - /* panic category */ - cat = NULL; - res = dns_c_ctx_addcategory(cfg, "panic", &cat); - if (res != ISC_R_SUCCESS) { - return (res); - } - dns_c_logcat_setpredef(cat, ISC_TRUE); - dns_c_logcat_addname(cat, DNS_C_DEFAULT_SYSLOG); - dns_c_logcat_addname(cat, DNS_C_DEFAULT_DEBUG); - - - /* eventlib category */ - cat = NULL; - res = dns_c_ctx_addcategory(cfg, "eventlib", &cat); - if (res != ISC_R_SUCCESS) { - return (res); - } - dns_c_logcat_setpredef(cat, ISC_TRUE); - dns_c_logcat_addname(cat, DNS_C_DEFAULT_DEBUG); - - - /* packet category */ - cat = NULL; - res = dns_c_ctx_addcategory(cfg, "packet", &cat); - if (res != ISC_R_SUCCESS) { - return (res); - } - dns_c_logcat_setpredef(cat, ISC_TRUE); - dns_c_logcat_addname(cat, DNS_C_DEFAULT_DEBUG); -#endif return (ISC_R_SUCCESS); } @@ -4504,5 +2681,3 @@ make_options(dns_c_ctx_t *cfg) return (res); } - - diff --git a/lib/dns/config/confparser.y b/lib/dns/config/confparser.y index 0ab4503696..fadb702255 100644 --- a/lib/dns/config/confparser.y +++ b/lib/dns/config/confparser.y @@ -16,7 +16,7 @@ * SOFTWARE. */ -/* $Id: confparser.y,v 1.55 2000/03/28 22:58:20 brister Exp $ */ +/* $Id: confparser.y,v 1.56 2000/03/29 15:01:03 brister Exp $ */ #include @@ -1076,7 +1076,7 @@ option: /* Empty */ YYABORT; } - tmpres = dns_c_ctx_setheartbeat_interval(currcfg, $2 * 60); + tmpres = dns_c_ctx_setheartbeatinterval(currcfg, $2 * 60); if (tmpres == ISC_R_EXISTS) { parser_warning(ISC_FALSE, "redefining heartbeat-interval."); diff --git a/lib/dns/include/dns/confctx.h b/lib/dns/include/dns/confctx.h index eea7e57122..f09823974d 100644 --- a/lib/dns/include/dns/confctx.h +++ b/lib/dns/include/dns/confctx.h @@ -118,7 +118,7 @@ struct dns_c_ctx /* * This structure holds all the values defined by a config file 'options' - * statement + * statement. If a field is NULL then it has never been set. */ struct dns_c_options { @@ -132,84 +132,76 @@ struct dns_c_options char *stats_filename; char *memstats_filename; char *named_xfer; - char *tkeydomain; + + isc_int32_t *transfers_in; + isc_int32_t *transfers_per_ns; + isc_int32_t *transfers_out; + isc_int32_t *max_log_size_ixfr; + isc_int32_t *clean_interval; + isc_int32_t *interface_interval; + isc_int32_t *stats_interval; + isc_int32_t *heartbeat_interval; + + isc_int32_t *max_transfer_time_in; + isc_int32_t *max_transfer_time_out; + isc_int32_t *max_transfer_idle_in; + isc_int32_t *max_transfer_idle_out; + isc_int32_t *lamettl; + isc_int32_t *tcp_clients; + isc_int32_t *recursive_clients; + + isc_uint32_t *data_size; + isc_uint32_t *stack_size; + isc_uint32_t *core_size; + isc_uint32_t *files; + isc_uint32_t *max_ncache_ttl; + + isc_boolean_t *expert_mode; + isc_boolean_t *fake_iquery; + isc_boolean_t *recursion; + isc_boolean_t *fetch_glue; + isc_boolean_t *notify; + isc_boolean_t *host_statistics; + isc_boolean_t *dealloc_on_exit; + isc_boolean_t *use_ixfr; + isc_boolean_t *maintain_ixfr_base; + isc_boolean_t *has_old_clients; + isc_boolean_t *auth_nx_domain; + isc_boolean_t *multiple_cnames; + isc_boolean_t *use_id_pool; + isc_boolean_t *dialup; + isc_boolean_t *rfc2308_type1; + isc_boolean_t *request_ixfr; + isc_boolean_t *provide_ixfr; + + isc_sockaddr_t *transfer_source; + isc_sockaddr_t *transfer_source_v6; + isc_sockaddr_t *query_source; + isc_sockaddr_t *query_source_v6; + + dns_c_forw_t *forward; char *tkeydhkeycp; isc_int32_t tkeydhkeyi; + char *tkeydomain; - isc_uint32_t flags; - isc_uint32_t max_ncache_ttl; - - isc_int32_t transfers_in; - isc_int32_t transfers_per_ns; - isc_int32_t transfers_out; - isc_int32_t max_log_size_ixfr; - isc_int32_t clean_interval; - isc_int32_t interface_interval; - isc_int32_t stats_interval; - isc_int32_t heartbeat_interval; - - isc_int32_t max_transfer_time_in; - isc_int32_t max_transfer_time_out; - isc_int32_t max_transfer_idle_in; - isc_int32_t max_transfer_idle_out; - isc_int32_t lamettl; /* XXX not implemented yet */ - isc_int32_t tcp_clients; - isc_int32_t recursive_clients; - - isc_uint32_t data_size; - isc_uint32_t stack_size; - isc_uint32_t core_size; - isc_uint32_t files; - - isc_boolean_t expert_mode; - isc_boolean_t fake_iquery; - isc_boolean_t recursion; - isc_boolean_t fetch_glue; - isc_boolean_t notify; - isc_boolean_t host_statistics; - isc_boolean_t dealloc_on_exit; - isc_boolean_t use_ixfr; - isc_boolean_t maintain_ixfr_base; - isc_boolean_t has_old_clients; - isc_boolean_t auth_nx_domain; - isc_boolean_t multiple_cnames; - isc_boolean_t use_id_pool; - isc_boolean_t dialup; - isc_boolean_t rfc2308_type1; - isc_boolean_t request_ixfr; - isc_boolean_t provide_ixfr; - - isc_sockaddr_t transfer_source; - isc_sockaddr_t transfer_source_v6; - isc_sockaddr_t query_source; - isc_sockaddr_t query_source_v6; - dns_c_iplist_t *also_notify; - dns_severity_t check_names[DNS_C_TRANSCOUNT]; + dns_severity_t *check_names[DNS_C_TRANSCOUNT]; - dns_transfer_format_t transfer_format; + dns_transfer_format_t *transfer_format; - dns_c_ipmatchlist_t *queryacl; - dns_c_ipmatchlist_t *transferacl; - dns_c_ipmatchlist_t *recursionacl; - dns_c_ipmatchlist_t *blackhole; - dns_c_ipmatchlist_t *topology; - dns_c_ipmatchlist_t *sortlist; + dns_c_ipmatchlist_t *queryacl; + dns_c_ipmatchlist_t *transferacl; + dns_c_ipmatchlist_t *recursionacl; + dns_c_ipmatchlist_t *blackhole; + dns_c_ipmatchlist_t *topology; + dns_c_ipmatchlist_t *sortlist; - dns_c_lstnlist_t *listens; + dns_c_lstnlist_t *listens; + dns_c_rrsolist_t *ordering; - dns_c_forw_t forward; - dns_c_iplist_t *forwarders; - - dns_c_rrsolist_t *ordering; - - /* - * For the non-pointer fields of the struct a bit will be set in - * this field if a field value was explicitly set. - */ - dns_c_setbits_t setflags1; + dns_c_iplist_t *forwarders; }; @@ -236,12 +228,11 @@ isc_result_t dns_c_ctx_getcontrols(dns_c_ctx_t *cfg, dns_c_ctrllist_t **ctrls); isc_result_t dns_c_ctx_setcontrols(dns_c_ctx_t *cfg, dns_c_ctrllist_t *ctrls); + isc_result_t dns_c_ctx_getoptions(dns_c_ctx_t *cfg, dns_c_options_t **options); +isc_result_t dns_c_ctx_unsetoptions(dns_c_ctx_t *cfg); -isc_result_t dns_c_ctx_setlogging(dns_c_ctx_t *cfg, - dns_c_logginglist_t *newval, - isc_boolean_t deepcopy); isc_result_t dns_c_ctx_getlogging(dns_c_ctx_t *cfg, dns_c_logginglist_t **retval); @@ -292,103 +283,34 @@ isc_result_t dns_c_ctx_optionsdelete(dns_c_options_t **options); */ isc_result_t dns_c_ctx_setcurrzone(dns_c_ctx_t *cfg, dns_c_zone_t *zone); isc_result_t dns_c_ctx_setcurrview(dns_c_ctx_t *cfg, dns_c_view_t *view); -isc_result_t dns_c_ctx_setdirectory(dns_c_ctx_t *cfg, const char *newval); -isc_result_t dns_c_ctx_setversion(dns_c_ctx_t *cfg, const char *newval); -isc_result_t dns_c_ctx_setdumpfilename(dns_c_ctx_t *cfg, - const char *newval); -isc_result_t dns_c_ctx_setpidfilename(dns_c_ctx_t *cfg, - const char *newval); -isc_result_t dns_c_ctx_setstatsfilename(dns_c_ctx_t *cfg, - const char *newval); -isc_result_t dns_c_ctx_setmemstatsfilename(dns_c_ctx_t *cfg, - const char *newval); -isc_result_t dns_c_ctx_setnamedxfer(dns_c_ctx_t *cfg, const char *newval); + + isc_result_t dns_c_ctx_settkeydomain(dns_c_ctx_t *cfg, const char *newval); isc_result_t dns_c_ctx_settkeydhkey(dns_c_ctx_t *cfg, const char *newcpval, isc_int32_t newival); -isc_result_t dns_c_ctx_setmaxncachettl(dns_c_ctx_t *cfg, - isc_uint32_t newval); -isc_result_t dns_c_ctx_settransfersin(dns_c_ctx_t *cfg, - isc_int32_t newval); -isc_result_t dns_c_ctx_settransfersperns(dns_c_ctx_t *cfg, - isc_int32_t newval); -isc_result_t dns_c_ctx_settransfersout(dns_c_ctx_t *cfg, - isc_int32_t newval); -isc_result_t dns_c_ctx_setmaxlogsizeixfr(dns_c_ctx_t *cfg, - isc_int32_t newval); -isc_result_t dns_c_ctx_setcleaninterval(dns_c_ctx_t *cfg, - isc_int32_t newval); -isc_result_t dns_c_ctx_setinterfaceinterval(dns_c_ctx_t *cfg, - isc_int32_t newval); -isc_result_t dns_c_ctx_setstatsinterval(dns_c_ctx_t *cfg, - isc_int32_t newval); -isc_result_t dns_c_ctx_setheartbeat_interval(dns_c_ctx_t *cfg, - isc_int32_t newval); -isc_result_t dns_c_ctx_setmaxtransfertimein(dns_c_ctx_t *cfg, - isc_int32_t newval); -isc_result_t dns_c_ctx_setmaxtransfertimeout(dns_c_ctx_t *cfg, - isc_int32_t newval); -isc_result_t dns_c_ctx_setmaxtransferidlein(dns_c_ctx_t *cfg, - isc_int32_t newval); -isc_result_t dns_c_ctx_setmaxtransferidleout(dns_c_ctx_t *cfg, - isc_int32_t newval); -isc_result_t dns_c_ctx_settcpclients(dns_c_ctx_t *cfg, isc_int32_t newval); -isc_result_t dns_c_ctx_setrecursiveclients(dns_c_ctx_t *cfg, - isc_int32_t newval); -isc_result_t dns_c_ctx_setdatasize(dns_c_ctx_t *cfg, isc_uint32_t newval); -isc_result_t dns_c_ctx_setstacksize(dns_c_ctx_t *cfg, - isc_uint32_t newval); -isc_result_t dns_c_ctx_setcoresize(dns_c_ctx_t *cfg, isc_uint32_t newval); -isc_result_t dns_c_ctx_setfiles(dns_c_ctx_t *cfg, isc_uint32_t newval); -isc_result_t dns_c_ctx_setexpertmode(dns_c_ctx_t *cfg, - isc_boolean_t newval); -isc_result_t dns_c_ctx_setfakeiquery(dns_c_ctx_t *cfg, - isc_boolean_t newval); -isc_result_t dns_c_ctx_setrecursion(dns_c_ctx_t *cfg, - isc_boolean_t newval); -isc_result_t dns_c_ctx_setfetchglue(dns_c_ctx_t *cfg, - isc_boolean_t newval); -isc_result_t dns_c_ctx_setnotify(dns_c_ctx_t *cfg, isc_boolean_t newval); -isc_result_t dns_c_ctx_sethoststatistics(dns_c_ctx_t *cfg, - isc_boolean_t newval); -isc_result_t dns_c_ctx_setdealloconexit(dns_c_ctx_t *cfg, - isc_boolean_t newval); -isc_result_t dns_c_ctx_setuseixfr(dns_c_ctx_t *cfg, isc_boolean_t newval); -isc_result_t dns_c_ctx_setmaintainixfrbase(dns_c_ctx_t *cfg, - isc_boolean_t newval); -isc_result_t dns_c_ctx_sethasoldclients(dns_c_ctx_t *cfg, - isc_boolean_t newval); -isc_result_t dns_c_ctx_setauthnxdomain(dns_c_ctx_t *cfg, - isc_boolean_t newval); -isc_result_t dns_c_ctx_setmultiplecnames(dns_c_ctx_t *cfg, - isc_boolean_t newval); -isc_result_t dns_c_ctx_setuseidpool(dns_c_ctx_t *cfg, - isc_boolean_t newval); -isc_result_t dns_c_ctx_setrfc2308type1(dns_c_ctx_t *cfg, - isc_boolean_t newval); -isc_result_t dns_c_ctx_setrequestixfr(dns_c_ctx_t *cfg, - isc_boolean_t newval); -isc_result_t dns_c_ctx_setprovideixfr(dns_c_ctx_t *cfg, - isc_boolean_t newval); -isc_result_t dns_c_ctx_setdialup(dns_c_ctx_t *cfg, isc_boolean_t newval); -isc_result_t dns_c_ctx_setalsonotify(dns_c_ctx_t *ctx, - dns_c_iplist_t *newval, - isc_boolean_t deepcopy); + + + +isc_result_t dns_c_ctx_setchecknames(dns_c_ctx_t *cfg, + dns_c_trans_t transtype, + dns_severity_t newval); +isc_result_t dns_c_ctx_getchecknames(dns_c_ctx_t *cfg, + dns_c_trans_t transtype, + dns_severity_t *retval); +isc_result_t dns_c_ctx_unsetchecknames(dns_c_ctx_t *cfg, + dns_c_trans_t transtype); + + + + isc_result_t dns_c_ctx_settransfersource(dns_c_ctx_t *ctx, isc_sockaddr_t newval); isc_result_t dns_c_ctx_settransfersourcev6(dns_c_ctx_t *ctx, isc_sockaddr_t newval); -isc_result_t dns_c_ctx_setquerysource(dns_c_ctx_t *cfg, - isc_sockaddr_t addr); -isc_result_t dns_c_ctx_setquerysourcev6(dns_c_ctx_t *cfg, - isc_sockaddr_t addr); -isc_result_t dns_c_ctx_setchecknames(dns_c_ctx_t *cfg, - dns_c_trans_t transtype, - dns_severity_t sever); isc_result_t dns_c_ctx_settransferformat(dns_c_ctx_t *cfg, dns_transfer_format_t newval); isc_result_t dns_c_ctx_setqueryacl(dns_c_ctx_t *cfg, isc_boolean_t copy, @@ -403,9 +325,6 @@ isc_result_t dns_c_ctx_settopology(dns_c_ctx_t *cfg, isc_boolean_t copy, dns_c_ipmatchlist_t *iml); isc_result_t dns_c_ctx_setsortlist(dns_c_ctx_t *cfg, isc_boolean_t copy, dns_c_ipmatchlist_t *iml); -isc_result_t dns_c_ctx_setforward(dns_c_ctx_t *cfg, dns_c_forw_t forw); -isc_result_t dns_c_ctx_setforwarders(dns_c_ctx_t *cfg, isc_boolean_t copy, - dns_c_iplist_t *iml); isc_result_t dns_c_ctx_setrrsetorderlist(dns_c_ctx_t *cfg, isc_boolean_t copy, dns_c_rrsolist_t *olist); @@ -439,98 +358,16 @@ isc_result_t dns_c_ctx_settrustedkeys(dns_c_ctx_t *cfg, dns_c_zone_t *dns_c_ctx_getcurrzone(dns_c_ctx_t *cfg); dns_c_view_t *dns_c_ctx_getcurrview(dns_c_ctx_t *cfg); -isc_result_t dns_c_ctx_getdirectory(dns_c_ctx_t *cfg, char **retval); -isc_result_t dns_c_ctx_getversion(dns_c_ctx_t *cfg, char **retval); -isc_result_t dns_c_ctx_getdumpfilename(dns_c_ctx_t *cfg, char **retval); -isc_result_t dns_c_ctx_getpidfilename(dns_c_ctx_t *cfg, char **retval); -isc_result_t dns_c_ctx_getstatsfilename(dns_c_ctx_t *cfg, char **retval); -isc_result_t dns_c_ctx_getmemstatsfilename(dns_c_ctx_t *cfg, - char **retval); -isc_result_t dns_c_ctx_getnamedxfer(dns_c_ctx_t *cfg, char **retval); isc_result_t dns_c_ctx_gettkeydomain(dns_c_ctx_t *cfg, char **retval); isc_result_t dns_c_ctx_gettkeydhkey(dns_c_ctx_t *cfg, char **retcpval, isc_int32_t *retival); -isc_result_t dns_c_ctx_getmaxncachettl(dns_c_ctx_t *cfg, - isc_uint32_t *retval); -isc_result_t dns_c_ctx_gettransfersin(dns_c_ctx_t *cfg, - isc_int32_t *retval); -isc_result_t dns_c_ctx_gettransfersperns(dns_c_ctx_t *cfg, - isc_int32_t *retval); -isc_result_t dns_c_ctx_gettransfersout(dns_c_ctx_t *cfg, - isc_int32_t *retval); -isc_result_t dns_c_ctx_getmaxlogsizeixfr(dns_c_ctx_t *cfg, - isc_int32_t *retval); -isc_result_t dns_c_ctx_getcleaninterval(dns_c_ctx_t *cfg, - isc_int32_t *retval); -isc_result_t dns_c_ctx_getinterfaceinterval(dns_c_ctx_t *cfg, - isc_int32_t *retval); -isc_result_t dns_c_ctx_getstatsinterval(dns_c_ctx_t *cfg, - isc_int32_t *retval); -isc_result_t dns_c_ctx_getheartbeatinterval(dns_c_ctx_t *cfg, - isc_int32_t *retval); -isc_result_t dns_c_ctx_getmaxtransfertimein(dns_c_ctx_t *cfg, - isc_int32_t *retval); -isc_result_t dns_c_ctx_getmaxtransfertimeout(dns_c_ctx_t *cfg, - isc_int32_t *retval); -isc_result_t dns_c_ctx_getmaxtransferidlein(dns_c_ctx_t *cfg, - isc_int32_t *retval); -isc_result_t dns_c_ctx_getmaxtransferidleout(dns_c_ctx_t *cfg, - isc_int32_t *retval); -isc_result_t dns_c_ctx_gettcpclients(dns_c_ctx_t *cfg, - isc_int32_t *retval); -isc_result_t dns_c_ctx_getrecursiveclients(dns_c_ctx_t *cfg, - isc_int32_t *retval); -isc_result_t dns_c_ctx_getdatasize(dns_c_ctx_t *cfg, - isc_uint32_t *retval); -isc_result_t dns_c_ctx_getstacksize(dns_c_ctx_t *cfg, - isc_uint32_t *retval); -isc_result_t dns_c_ctx_getcoresize(dns_c_ctx_t *cfg, - isc_uint32_t *retval); -isc_result_t dns_c_ctx_getfiles(dns_c_ctx_t *cfg, isc_uint32_t *retval); -isc_result_t dns_c_ctx_getexpertmode(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -isc_result_t dns_c_ctx_getfakeiquery(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -isc_result_t dns_c_ctx_getrecursion(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -isc_result_t dns_c_ctx_getfetchglue(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -isc_result_t dns_c_ctx_getnotify(dns_c_ctx_t *cfg, isc_boolean_t *retval); -isc_result_t dns_c_ctx_gethoststatistics(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -isc_result_t dns_c_ctx_getdealloconexit(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -isc_result_t dns_c_ctx_getuseixfr(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -isc_result_t dns_c_ctx_getmaintainixfrbase(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -isc_result_t dns_c_ctx_gethasoldclients(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -isc_result_t dns_c_ctx_getauthnxdomain(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -isc_result_t dns_c_ctx_getmultiplecnames(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -isc_result_t dns_c_ctx_getuseidpool(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -isc_result_t dns_c_ctx_getrfc2308type1(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -isc_result_t dns_c_ctx_getrequestixfr(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -isc_result_t dns_c_ctx_getprovideixfr(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -isc_result_t dns_c_ctx_getdialup(dns_c_ctx_t *cfg, isc_boolean_t *retval); -isc_result_t dns_c_ctx_getalsonotify(dns_c_ctx_t *ctx, - dns_c_iplist_t **ret); + isc_result_t dns_c_ctx_gettransfersource(dns_c_ctx_t *ctx, isc_sockaddr_t *retval); isc_result_t dns_c_ctx_gettransfersourcev6(dns_c_ctx_t *ctx, isc_sockaddr_t *retval); -isc_result_t dns_c_ctx_getquerysource(dns_c_ctx_t *cfg, - isc_sockaddr_t *addr); -isc_result_t dns_c_ctx_getquerysourcev6(dns_c_ctx_t *cfg, - isc_sockaddr_t *addr); isc_result_t dns_c_ctx_getchecknames(dns_c_ctx_t *cfg, dns_c_trans_t transtype, dns_severity_t *sever); @@ -550,18 +387,371 @@ isc_result_t dns_c_ctx_getsortlist(dns_c_ctx_t *cfg, dns_c_ipmatchlist_t **list); isc_result_t dns_c_ctx_getlistenlist(dns_c_ctx_t *cfg, dns_c_lstnlist_t **ll); -isc_result_t dns_c_ctx_getforward(dns_c_ctx_t *cfg, dns_c_forw_t *forw); -isc_result_t dns_c_ctx_getforwarders(dns_c_ctx_t *cfg, - dns_c_iplist_t **list); isc_result_t dns_c_ctx_getrrsetorderlist(dns_c_ctx_t *cfg, dns_c_rrsolist_t **olist); isc_result_t dns_c_ctx_gettrustedkeys(dns_c_ctx_t *cfg, dns_c_tkeylist_t **retval); + + + +isc_result_t dns_c_ctx_setlogging(dns_c_ctx_t *cfg, + dns_c_logginglist_t *newval, + isc_boolean_t deepcopy); isc_result_t dns_c_ctx_getlogging(dns_c_ctx_t *cfg, dns_c_logginglist_t **retval); +isc_result_t dns_c_ctx_unsetlogging(dns_c_ctx_t *cfg); +isc_result_t dns_c_ctx_setforwarders(dns_c_ctx_t *cfg, isc_boolean_t copy, + dns_c_iplist_t *iml); +isc_result_t dns_c_ctx_getforwarders(dns_c_ctx_t *cfg, + dns_c_iplist_t **list); +isc_result_t dns_c_ctx_unsetforwarders(dns_c_ctx_t *cfg); + + +/* Prootypes for the functions defined via macros */ + +isc_result_t dns_c_ctx_setdirectory(dns_c_ctx_t *ctx, const char *newval); +isc_result_t dns_c_ctx_getdirectory(dns_c_ctx_t *ctx, char **retval); +isc_result_t dns_c_ctx_unsetdirectory(dns_c_ctx_t *ctx); + + +isc_result_t dns_c_ctx_setversion(dns_c_ctx_t *ctx, const char *newval); +isc_result_t dns_c_ctx_getversion(dns_c_ctx_t *ctx, char **retval); +isc_result_t dns_c_ctx_unsetversion(dns_c_ctx_t *ctx); + + +isc_result_t dns_c_ctx_setdumpfilename(dns_c_ctx_t *ctx, + const char *newval); +isc_result_t dns_c_ctx_getdumpfilename(dns_c_ctx_t *ctx, + char **retval); +isc_result_t dns_c_ctx_unsetdumpfilename(dns_c_ctx_t *ctx); + + +isc_result_t dns_c_ctx_setpidfilename(dns_c_ctx_t *ctx, + const char *newval); +isc_result_t dns_c_ctx_getpidfilename(dns_c_ctx_t *ctx, + char **retval); +isc_result_t dns_c_ctx_unsetpidfilename(dns_c_ctx_t *ctx); + + +isc_result_t dns_c_ctx_setstatsfilename(dns_c_ctx_t *ctx, + const char *newval); +isc_result_t dns_c_ctx_getstatsfilename(dns_c_ctx_t *ctx, + char **retval); +isc_result_t dns_c_ctx_unsetstatsfilename(dns_c_ctx_t *ctx); + + +isc_result_t dns_c_ctx_setmemstatsfilename(dns_c_ctx_t *ctx, + const char *newval); +isc_result_t dns_c_ctx_getmemstatsfilename(dns_c_ctx_t *ctx, + char **retval); +isc_result_t dns_c_ctx_unsetmemstatsfilename(dns_c_ctx_t *ctx); + + +isc_result_t dns_c_ctx_setnamedxfer(dns_c_ctx_t *ctx, + const char *newval); +isc_result_t dns_c_ctx_getnamedxfer(dns_c_ctx_t *ctx, + char **retval); +isc_result_t dns_c_ctx_unsetnamedxfer(dns_c_ctx_t *ctx); + + + +isc_result_t dns_c_ctx_setexpertmode(dns_c_ctx_t *cfg, + isc_boolean_t newval); +isc_result_t dns_c_ctx_getexpertmode(dns_c_ctx_t *cfg, + isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsetexpertmode(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setfakeiquery(dns_c_ctx_t *cfg, + isc_boolean_t newval); +isc_result_t dns_c_ctx_getfakeiquery(dns_c_ctx_t *cfg, + isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsetfakeiquery(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setrecursion(dns_c_ctx_t *cfg, + isc_boolean_t newval); +isc_result_t dns_c_ctx_getrecursion(dns_c_ctx_t *cfg, + isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsetrecursion(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setfetchglue(dns_c_ctx_t *cfg, + isc_boolean_t newval); +isc_result_t dns_c_ctx_getfetchglue(dns_c_ctx_t *cfg, + isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsetfetchglue(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setnotify(dns_c_ctx_t *cfg, isc_boolean_t newval); +isc_result_t dns_c_ctx_getnotify(dns_c_ctx_t *cfg, isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsetnotify(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_sethoststatistics(dns_c_ctx_t *cfg, + isc_boolean_t newval); +isc_result_t dns_c_ctx_gethoststatistics(dns_c_ctx_t *cfg, + isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsethoststatistics(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setdealloconexit(dns_c_ctx_t *cfg, + isc_boolean_t newval); +isc_result_t dns_c_ctx_getdealloconexit(dns_c_ctx_t *cfg, + isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsetdealloconexit(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setuseixfr(dns_c_ctx_t *cfg, isc_boolean_t newval); +isc_result_t dns_c_ctx_getuseixfr(dns_c_ctx_t *cfg, isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsetuseixfr(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setmaintainixfrbase(dns_c_ctx_t *cfg, + isc_boolean_t newval); +isc_result_t dns_c_ctx_getmaintainixfrbase(dns_c_ctx_t *cfg, + isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsetmaintainixfrbase(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_sethasoldclients(dns_c_ctx_t *cfg, + isc_boolean_t newval); +isc_result_t dns_c_ctx_gethasoldclients(dns_c_ctx_t *cfg, + isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsethasoldclients(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setauthnxdomain(dns_c_ctx_t *cfg, + isc_boolean_t newval); +isc_result_t dns_c_ctx_getauthnxdomain(dns_c_ctx_t *cfg, + isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsetauthnxdomain(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setmultiplecnames(dns_c_ctx_t *cfg, + isc_boolean_t newval); +isc_result_t dns_c_ctx_getmultiplecnames(dns_c_ctx_t *cfg, + isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsetmultiplecnames(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setuseidpool(dns_c_ctx_t *cfg, + isc_boolean_t newval); +isc_result_t dns_c_ctx_getuseidpool(dns_c_ctx_t *cfg, + isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsetuseidpool(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setdialup(dns_c_ctx_t *cfg, isc_boolean_t newval); +isc_result_t dns_c_ctx_getdialup(dns_c_ctx_t *cfg, isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsetdialup(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setrfc2308type1(dns_c_ctx_t *cfg, + isc_boolean_t newval); +isc_result_t dns_c_ctx_getrfc2308type1(dns_c_ctx_t *cfg, + isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsetrfc2308type1(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setrequestixfr(dns_c_ctx_t *cfg, + isc_boolean_t newval); +isc_result_t dns_c_ctx_getrequestixfr(dns_c_ctx_t *cfg, + isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsetrequestixfr(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setprovideixfr(dns_c_ctx_t *cfg, + isc_boolean_t newval); +isc_result_t dns_c_ctx_getprovideixfr(dns_c_ctx_t *cfg, + isc_boolean_t *retval); +isc_result_t dns_c_ctx_unsetprovideixfr(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setmaxncachettl(dns_c_ctx_t *cfg, + isc_uint32_t newval); +isc_result_t dns_c_ctx_getmaxncachettl(dns_c_ctx_t *cfg, + isc_uint32_t *retval); +isc_result_t dns_c_ctx_unsetmaxncachettl(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_settransfersin(dns_c_ctx_t *cfg, + isc_int32_t newval); +isc_result_t dns_c_ctx_gettransfersin(dns_c_ctx_t *cfg, + isc_int32_t *retval); +isc_result_t dns_c_ctx_unsettransfersin(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_settransfersperns(dns_c_ctx_t *cfg, + isc_int32_t newval); +isc_result_t dns_c_ctx_gettransfersperns(dns_c_ctx_t *cfg, + isc_int32_t *retval); +isc_result_t dns_c_ctx_unsettransfersperns(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_settransfersout(dns_c_ctx_t *cfg, + isc_int32_t newval); +isc_result_t dns_c_ctx_gettransfersout(dns_c_ctx_t *cfg, + isc_int32_t *retval); +isc_result_t dns_c_ctx_unsettransfersout(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setmaxlogsizeixfr(dns_c_ctx_t *cfg, + isc_int32_t newval); +isc_result_t dns_c_ctx_getmaxlogsizeixfr(dns_c_ctx_t *cfg, + isc_int32_t *retval); +isc_result_t dns_c_ctx_unsetmaxlogsizeixfr(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setcleaninterval(dns_c_ctx_t *cfg, + isc_int32_t newval); +isc_result_t dns_c_ctx_getcleaninterval(dns_c_ctx_t *cfg, + isc_int32_t *retval); +isc_result_t dns_c_ctx_unsetcleaninterval(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setinterfaceinterval(dns_c_ctx_t *cfg, + isc_int32_t newval); +isc_result_t dns_c_ctx_getinterfaceinterval(dns_c_ctx_t *cfg, + isc_int32_t *retval); +isc_result_t dns_c_ctx_unsetinterfaceinterval(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setstatsinterval(dns_c_ctx_t *cfg, + isc_int32_t newval); +isc_result_t dns_c_ctx_getstatsinterval(dns_c_ctx_t *cfg, + isc_int32_t *retval); +isc_result_t dns_c_ctx_unsetstatsinterval(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setheartbeatinterval(dns_c_ctx_t *cfg, + isc_int32_t newval); +isc_result_t dns_c_ctx_getheartbeatinterval(dns_c_ctx_t *cfg, + isc_int32_t *retval); +isc_result_t dns_c_ctx_unsetheartbeatinterval(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setmaxtransfertimein(dns_c_ctx_t *cfg, + isc_int32_t newval); +isc_result_t dns_c_ctx_getmaxtransfertimein(dns_c_ctx_t *cfg, + isc_int32_t *retval); +isc_result_t dns_c_ctx_unsetmaxtransfertimein(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setmaxtransfertimeout(dns_c_ctx_t *cfg, + isc_int32_t newval); +isc_result_t dns_c_ctx_getmaxtransfertimeout(dns_c_ctx_t *cfg, + isc_int32_t *retval); +isc_result_t dns_c_ctx_unsetmaxtransfertimeout(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setmaxtransferidlein(dns_c_ctx_t *cfg, + isc_int32_t newval); +isc_result_t dns_c_ctx_getmaxtransferidlein(dns_c_ctx_t *cfg, + isc_int32_t *retval); +isc_result_t dns_c_ctx_unsetmaxtransferidlein(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setmaxtransferidleout(dns_c_ctx_t *cfg, + isc_int32_t newval); +isc_result_t dns_c_ctx_getmaxtransferidleout(dns_c_ctx_t *cfg, + isc_int32_t *retval); +isc_result_t dns_c_ctx_unsetmaxtransferidleout(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setlamettl(dns_c_ctx_t *cfg, isc_int32_t newval); +isc_result_t dns_c_ctx_getlamettl(dns_c_ctx_t *cfg, isc_int32_t *retval); +isc_result_t dns_c_ctx_unsetlamettl(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_settcpclients(dns_c_ctx_t *cfg, + isc_int32_t newval); +isc_result_t dns_c_ctx_gettcpclients(dns_c_ctx_t *cfg, + isc_int32_t *retval); +isc_result_t dns_c_ctx_unsettcpclients(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setrecursiveclients(dns_c_ctx_t *cfg, + isc_int32_t newval); +isc_result_t dns_c_ctx_getrecursiveclients(dns_c_ctx_t *cfg, + isc_int32_t *retval); +isc_result_t dns_c_ctx_unsetrecursiveclients(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setdatasize(dns_c_ctx_t *cfg, isc_uint32_t newval); +isc_result_t dns_c_ctx_getdatasize(dns_c_ctx_t *cfg, isc_uint32_t *retval); +isc_result_t dns_c_ctx_unsetdatasize(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setstacksize(dns_c_ctx_t *cfg, + isc_uint32_t newval); +isc_result_t dns_c_ctx_getstacksize(dns_c_ctx_t *cfg, + isc_uint32_t *retval); +isc_result_t dns_c_ctx_unsetstacksize(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setcoresize(dns_c_ctx_t *cfg, isc_uint32_t newval); +isc_result_t dns_c_ctx_getcoresize(dns_c_ctx_t *cfg, isc_uint32_t *retval); +isc_result_t dns_c_ctx_unsetcoresize(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setfiles(dns_c_ctx_t *cfg, isc_uint32_t newval); +isc_result_t dns_c_ctx_getfiles(dns_c_ctx_t *cfg, isc_uint32_t *retval); +isc_result_t dns_c_ctx_unsetfiles(dns_c_ctx_t *cfg); + + + + +isc_result_t dns_c_ctx_setquerysource(dns_c_ctx_t *ctx, + isc_sockaddr_t query_source); +isc_result_t dns_c_ctx_getquerysource(dns_c_ctx_t *ctx, + isc_sockaddr_t *query_source); +isc_result_t dns_c_ctx_unsetquerysource(dns_c_ctx_t *ctx); + + +isc_result_t dns_c_ctx_setquerysourcev6(dns_c_ctx_t *ctx, + isc_sockaddr_t query_source_v6); +isc_result_t dns_c_ctx_getquerysourcev6(dns_c_ctx_t *ctx, + isc_sockaddr_t *query_source_v6); +isc_result_t dns_c_ctx_unsetquerysourcev6(dns_c_ctx_t *ctx); + + +isc_result_t dns_c_ctx_settransfersource(dns_c_ctx_t *ctx, + isc_sockaddr_t transfer_source); +isc_result_t dns_c_ctx_gettransfersource(dns_c_ctx_t *ctx, + isc_sockaddr_t *transfer_source); +isc_result_t dns_c_ctx_unsettransfersource(dns_c_ctx_t *ctx); + + +isc_result_t dns_c_ctx_settransfersourcev6(dns_c_ctx_t *ctx, + isc_sockaddr_t transfer_source_v6); +isc_result_t dns_c_ctx_gettransfersourcev6(dns_c_ctx_t *ctx, + isc_sockaddr_t *transfer_source_v6); +isc_result_t dns_c_ctx_unsettransfersourcev6(dns_c_ctx_t *ctx); + + +isc_result_t dns_c_ctx_setforward(dns_c_ctx_t *cfg, dns_c_forw_t forward); +isc_result_t dns_c_ctx_getforward(dns_c_ctx_t *cfg, dns_c_forw_t *forward); +isc_result_t dns_c_ctx_unsetforward(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_settransferformat(dns_c_ctx_t *cfg, + dns_transfer_format_t tformat); +isc_result_t dns_c_ctx_gettransferformat(dns_c_ctx_t *cfg, + dns_transfer_format_t *tformat); +isc_result_t dns_c_ctx_unsettransferformat(dns_c_ctx_t *cfg); + + +isc_result_t dns_c_ctx_setalsonotify(dns_c_ctx_t *ctx, + dns_c_iplist_t *newval, + isc_boolean_t deepcopy); +isc_result_t dns_c_ctx_getalsonotify(dns_c_ctx_t *ctx, + dns_c_iplist_t **ret); +isc_result_t dns_c_ctx_unsetalsonotify(dns_c_ctx_t *ctx); #endif /* DNS_CONFIG_CONFCTX_H */ +