mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-03 16:15:27 +00:00
Support new 'tcp-clients' and 'recursive-clients' statements.
This commit is contained in:
@@ -74,6 +74,8 @@
|
|||||||
#define FORWARD_BIT 36
|
#define FORWARD_BIT 36
|
||||||
#define EXPERT_MODE_BIT 37
|
#define EXPERT_MODE_BIT 37
|
||||||
#define RFC2308_TYPE1_BIT 38
|
#define RFC2308_TYPE1_BIT 38
|
||||||
|
#define TCP_CLIENTS_BIT 39
|
||||||
|
#define RECURSIVE_CLIENTS_BIT 40
|
||||||
|
|
||||||
|
|
||||||
static isc_result_t cfg_set_iplist(dns_c_options_t *options,
|
static isc_result_t cfg_set_iplist(dns_c_options_t *options,
|
||||||
@@ -1225,6 +1227,45 @@ 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 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
|
isc_result_t
|
||||||
dns_c_ctx_setdatasize(dns_c_ctx_t *cfg, isc_uint32_t newval)
|
dns_c_ctx_setdatasize(dns_c_ctx_t *cfg, isc_uint32_t newval)
|
||||||
{
|
{
|
||||||
@@ -2466,6 +2507,44 @@ 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)
|
||||||
|
{
|
||||||
|
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
|
isc_result_t
|
||||||
dns_c_ctx_getdatasize(dns_c_ctx_t *cfg, isc_uint32_t *retval)
|
dns_c_ctx_getdatasize(dns_c_ctx_t *cfg, isc_uint32_t *retval)
|
||||||
{
|
{
|
||||||
@@ -3188,6 +3267,9 @@ dns_c_ctx_optionsnew(isc_mem_t *mem, dns_c_options_t **options)
|
|||||||
opts->rfc2308_type1 = ISC_FALSE;
|
opts->rfc2308_type1 = ISC_FALSE;
|
||||||
opts->dialup = ISC_FALSE;
|
opts->dialup = ISC_FALSE;
|
||||||
|
|
||||||
|
opts->tcp_clients = 0;
|
||||||
|
opts->recursive_clients = 0;
|
||||||
|
|
||||||
opts->max_transfer_time_in = 0;
|
opts->max_transfer_time_in = 0;
|
||||||
opts->max_transfer_time_out = 0;
|
opts->max_transfer_time_out = 0;
|
||||||
opts->max_transfer_idle_in = 0;
|
opts->max_transfer_idle_in = 0;
|
||||||
@@ -3419,6 +3501,11 @@ dns_c_ctx_optionsprint(FILE *fp, int indent, dns_c_options_t *options)
|
|||||||
"transfers-out", setflags1);
|
"transfers-out", setflags1);
|
||||||
PRINT_INTEGER(max_log_size_ixfr, MAX_LOG_SIZE_IXFR_BIT,
|
PRINT_INTEGER(max_log_size_ixfr, MAX_LOG_SIZE_IXFR_BIT,
|
||||||
"max-ixfr-log-size", setflags1);
|
"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,
|
PRINT_INTEGER(max_ncache_ttl, MAX_NCACHE_TTL_BIT,
|
||||||
"max-ncache-ttl", setflags1);
|
"max-ncache-ttl", setflags1);
|
||||||
|
@@ -17,7 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if !defined(lint) && !defined(SABER)
|
#if !defined(lint) && !defined(SABER)
|
||||||
static char rcsid[] = "$Id: confparser.y,v 1.32 1999/12/17 18:32:38 brister Exp $";
|
static char rcsid[] = "$Id: confparser.y,v 1.33 2000/01/17 14:41:21 brister Exp $";
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
@@ -243,6 +243,8 @@ static isc_boolean_t int_too_big(isc_uint32_t base, isc_uint32_t mult);
|
|||||||
%token L_MAX_TRANSFER_TIME_OUT
|
%token L_MAX_TRANSFER_TIME_OUT
|
||||||
%token L_MAX_TRANSFER_IDLE_IN
|
%token L_MAX_TRANSFER_IDLE_IN
|
||||||
%token L_MAX_TRANSFER_IDLE_OUT
|
%token L_MAX_TRANSFER_IDLE_OUT
|
||||||
|
%token L_TCP_CLIENTS
|
||||||
|
%token L_RECURSIVE_CLIENTS
|
||||||
%token L_ONE_ANSWER
|
%token L_ONE_ANSWER
|
||||||
%token L_MANY_ANSWERS
|
%token L_MANY_ANSWERS
|
||||||
%token L_NOTIFY
|
%token L_NOTIFY
|
||||||
@@ -847,7 +849,31 @@ option: /* Empty */
|
|||||||
YYABORT;
|
YYABORT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
| L_CLEAN_INTERVAL L_INTEGER
|
| L_TCP_CLIENTS L_INTEGER
|
||||||
|
{
|
||||||
|
tmpres = dns_c_ctx_settcpclients(currcfg, $2);
|
||||||
|
if (tmpres == ISC_R_EXISTS) {
|
||||||
|
parser_error(ISC_FALSE,
|
||||||
|
"Redefining tcp-clients.");
|
||||||
|
} else if (tmpres != ISC_R_SUCCESS) {
|
||||||
|
parser_error(ISC_FALSE,
|
||||||
|
"Failed to set tcp-clients.");
|
||||||
|
YYABORT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
| L_RECURSIVE_CLIENTS L_INTEGER
|
||||||
|
{
|
||||||
|
tmpres = dns_c_ctx_setrecursiveclients(currcfg, $2);
|
||||||
|
if (tmpres == ISC_R_EXISTS) {
|
||||||
|
parser_error(ISC_FALSE,
|
||||||
|
"Redefining recursive-clients.");
|
||||||
|
} else if (tmpres != ISC_R_SUCCESS) {
|
||||||
|
parser_error(ISC_FALSE,
|
||||||
|
"Failed to set recursive-clients.");
|
||||||
|
YYABORT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
| L_CLEAN_INTERVAL L_INTEGER
|
||||||
{
|
{
|
||||||
if ( int_too_big($2, 60) ) {
|
if ( int_too_big($2, 60) ) {
|
||||||
parser_error(ISC_FALSE,
|
parser_error(ISC_FALSE,
|
||||||
@@ -2678,6 +2704,7 @@ zone_option_list: zone_option L_EOS
|
|||||||
zone_non_type_keywords: L_FILE | L_FILE_IXFR | L_IXFR_TMP | L_MASTERS |
|
zone_non_type_keywords: L_FILE | L_FILE_IXFR | L_IXFR_TMP | L_MASTERS |
|
||||||
L_TRANSFER_SOURCE | L_CHECK_NAMES | L_ALLOW_UPDATE | L_ALLOW_QUERY |
|
L_TRANSFER_SOURCE | L_CHECK_NAMES | L_ALLOW_UPDATE | L_ALLOW_QUERY |
|
||||||
L_ALLOW_TRANSFER | L_FORWARD | L_FORWARDERS | L_MAX_TRANSFER_TIME_IN |
|
L_ALLOW_TRANSFER | L_FORWARD | L_FORWARDERS | L_MAX_TRANSFER_TIME_IN |
|
||||||
|
L_TCP_CLIENTS | L_RECURSIVE_CLIENTS |
|
||||||
L_MAX_TRANSFER_TIME_OUT | L_MAX_TRANSFER_IDLE_IN |
|
L_MAX_TRANSFER_TIME_OUT | L_MAX_TRANSFER_IDLE_IN |
|
||||||
L_MAX_TRANSFER_IDLE_OUT | L_MAX_LOG_SIZE_IXFR | L_NOTIFY |
|
L_MAX_TRANSFER_IDLE_OUT | L_MAX_LOG_SIZE_IXFR | L_NOTIFY |
|
||||||
L_MAINTAIN_IXFR_BASE | L_PUBKEY | L_ALSO_NOTIFY | L_DIALUP
|
L_MAINTAIN_IXFR_BASE | L_PUBKEY | L_ALSO_NOTIFY | L_DIALUP
|
||||||
@@ -3539,6 +3566,7 @@ static struct token keyword_tokens [] = {
|
|||||||
{ "rfc2308-type1", L_RFC2308_TYPE1 },
|
{ "rfc2308-type1", L_RFC2308_TYPE1 },
|
||||||
{ "rrset-order", L_RRSET_ORDER },
|
{ "rrset-order", L_RRSET_ORDER },
|
||||||
{ "recursion", L_RECURSION },
|
{ "recursion", L_RECURSION },
|
||||||
|
{ "recursive-clients", L_RECURSIVE_CLIENTS },
|
||||||
{ "response", L_RESPONSE },
|
{ "response", L_RESPONSE },
|
||||||
{ "secret", L_SECRET },
|
{ "secret", L_SECRET },
|
||||||
{ "server", L_SERVER },
|
{ "server", L_SERVER },
|
||||||
@@ -3552,6 +3580,7 @@ static struct token keyword_tokens [] = {
|
|||||||
{ "stub", L_STUB },
|
{ "stub", L_STUB },
|
||||||
{ "support-ixfr", L_SUPPORT_IXFR },
|
{ "support-ixfr", L_SUPPORT_IXFR },
|
||||||
{ "syslog", L_SYSLOG },
|
{ "syslog", L_SYSLOG },
|
||||||
|
{ "tcp-clients", L_TCP_CLIENTS },
|
||||||
{ "tkey-domain", L_TKEY_DOMAIN },
|
{ "tkey-domain", L_TKEY_DOMAIN },
|
||||||
{ "tkey-dhkey", L_TKEY_DHKEY },
|
{ "tkey-dhkey", L_TKEY_DHKEY },
|
||||||
{ "topology", L_TOPOLOGY },
|
{ "topology", L_TOPOLOGY },
|
||||||
|
@@ -154,8 +154,9 @@ struct dns_c_options
|
|||||||
isc_int32_t max_transfer_idle_in;
|
isc_int32_t max_transfer_idle_in;
|
||||||
isc_int32_t max_transfer_idle_out;
|
isc_int32_t max_transfer_idle_out;
|
||||||
isc_int32_t lamettl; /* XXX not implemented yet */
|
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 data_size;
|
||||||
isc_uint32_t stack_size;
|
isc_uint32_t stack_size;
|
||||||
isc_uint32_t core_size;
|
isc_uint32_t core_size;
|
||||||
@@ -323,6 +324,10 @@ isc_result_t dns_c_ctx_setmaxtransferidlein(dns_c_ctx_t *cfg,
|
|||||||
isc_int32_t newval);
|
isc_int32_t newval);
|
||||||
isc_result_t dns_c_ctx_setmaxtransferidleout(dns_c_ctx_t *cfg,
|
isc_result_t dns_c_ctx_setmaxtransferidleout(dns_c_ctx_t *cfg,
|
||||||
isc_int32_t newval);
|
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_setdatasize(dns_c_ctx_t *cfg, isc_uint32_t newval);
|
||||||
isc_result_t dns_c_ctx_setstacksize(dns_c_ctx_t *cfg,
|
isc_result_t dns_c_ctx_setstacksize(dns_c_ctx_t *cfg,
|
||||||
isc_uint32_t newval);
|
isc_uint32_t newval);
|
||||||
@@ -449,6 +454,11 @@ isc_result_t dns_c_ctx_getmaxtransferidlein(dns_c_ctx_t *cfg,
|
|||||||
isc_int32_t *retval);
|
isc_int32_t *retval);
|
||||||
isc_result_t dns_c_ctx_getmaxtransferidleout(dns_c_ctx_t *cfg,
|
isc_result_t dns_c_ctx_getmaxtransferidleout(dns_c_ctx_t *cfg,
|
||||||
isc_int32_t *retval);
|
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_result_t dns_c_ctx_getdatasize(dns_c_ctx_t *cfg,
|
||||||
isc_uint32_t *retval);
|
isc_uint32_t *retval);
|
||||||
isc_result_t dns_c_ctx_getstacksize(dns_c_ctx_t *cfg,
|
isc_result_t dns_c_ctx_getstacksize(dns_c_ctx_t *cfg,
|
||||||
|
Reference in New Issue
Block a user