Merge branch 'feature/configure-outbound_msg_retry' of git://github.com/countsudoku/unbound into countsudoku-feature/configure-outbound_msg_retry

This commit is contained in:
W.C.A. Wijngaards 2021-09-08 14:38:36 +02:00
commit 204edd229e
16 changed files with 5489 additions and 5389 deletions

View file

@ -1,3 +1,7 @@
8 September 2021: Wouter
- Merged #41 from Moritz Schneider: made outbound-msg-retry
configurable.
3 September 2021: Wouter 3 September 2021: Wouter
- Fix #538: Fix subnetcache statistics. - Fix #538: Fix subnetcache statistics.

View file

@ -1704,6 +1704,11 @@ This can make ordinary queries complete (if repeatedly queried for),
and enter the cache, whilst also mitigating the traffic flow by the and enter the cache, whilst also mitigating the traffic flow by the
factor given. factor given.
.TP 5 .TP 5
.B outbound\-msg\-retry: \fI<number>
The number of retries unbound will do in case of a non positive response is
received. If a forward nameserver is used, this is the number of retries per
forward nameserver in case of throwaway response.
.TP 5
.B fast\-server\-permil: \fI<number> .B fast\-server\-permil: \fI<number>
Specify how many times out of 1000 to pick from the set of fastest servers. Specify how many times out of 1000 to pick from the set of fastest servers.
0 turns the feature off. A value of 900 would pick from the fastest 0 turns the feature off. A value of 900 would pick from the fastest

View file

@ -176,6 +176,7 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg)
} }
iter_env->supports_ipv6 = cfg->do_ip6; iter_env->supports_ipv6 = cfg->do_ip6;
iter_env->supports_ipv4 = cfg->do_ip4; iter_env->supports_ipv4 = cfg->do_ip4;
iter_env->outbound_msg_retry = cfg->outbound_msg_retry;
return 1; return 1;
} }
@ -592,7 +593,7 @@ iter_server_selection(struct iter_env* iter_env,
if(num == 1) { if(num == 1) {
a = dp->result_list; a = dp->result_list;
if(++a->attempts < OUTBOUND_MSG_RETRY) if(++a->attempts < iter_env->outbound_msg_retry)
return a; return a;
dp->result_list = a->next_result; dp->result_list = a->next_result;
return a; return a;
@ -612,7 +613,7 @@ iter_server_selection(struct iter_env* iter_env,
} }
if(!a) /* robustness */ if(!a) /* robustness */
return NULL; return NULL;
if(++a->attempts < OUTBOUND_MSG_RETRY) if(++a->attempts < iter_env->outbound_msg_retry)
return a; return a;
/* remove it from the delegation point result list */ /* remove it from the delegation point result list */
if(prev) if(prev)
@ -1284,11 +1285,11 @@ iter_scrub_nxdomain(struct dns_msg* msg)
msg->rep->an_numrrsets = 0; msg->rep->an_numrrsets = 0;
} }
void iter_dec_attempts(struct delegpt* dp, int d) void iter_dec_attempts(struct delegpt* dp, int d, size_t outbound_msg_retry)
{ {
struct delegpt_addr* a; struct delegpt_addr* a;
for(a=dp->target_list; a; a = a->next_target) { for(a=dp->target_list; a; a = a->next_target) {
if(a->attempts >= OUTBOUND_MSG_RETRY) { if(a->attempts >= outbound_msg_retry) {
/* add back to result list */ /* add back to result list */
a->next_result = dp->result_list; a->next_result = dp->result_list;
dp->result_list = a; dp->result_list = a;
@ -1299,7 +1300,7 @@ void iter_dec_attempts(struct delegpt* dp, int d)
} }
} }
void iter_merge_retry_counts(struct delegpt* dp, struct delegpt* old) void iter_merge_retry_counts(struct delegpt* dp, struct delegpt* old, size_t outbound_msg_retry)
{ {
struct delegpt_addr* a, *o, *prev; struct delegpt_addr* a, *o, *prev;
for(a=dp->target_list; a; a = a->next_target) { for(a=dp->target_list; a; a = a->next_target) {
@ -1313,7 +1314,7 @@ void iter_merge_retry_counts(struct delegpt* dp, struct delegpt* old)
prev = NULL; prev = NULL;
a = dp->usable_list; a = dp->usable_list;
while(a) { while(a) {
if(a->attempts >= OUTBOUND_MSG_RETRY) { if(a->attempts >= outbound_msg_retry) {
log_addr(VERB_ALGO, "remove from usable list dp", log_addr(VERB_ALGO, "remove from usable list dp",
&a->addr, a->addrlen); &a->addr, a->addrlen);
/* remove from result list */ /* remove from result list */

View file

@ -347,16 +347,19 @@ void iter_scrub_nxdomain(struct dns_msg* msg);
* Remove query attempts from all available ips. For 0x20. * Remove query attempts from all available ips. For 0x20.
* @param dp: delegpt. * @param dp: delegpt.
* @param d: decrease. * @param d: decrease.
* @param outbound_msg_retry: number of retries of outgoing queries
*/ */
void iter_dec_attempts(struct delegpt* dp, int d); void iter_dec_attempts(struct delegpt* dp, int d, size_t outbound_msg_retry);
/** /**
* Add retry counts from older delegpt to newer delegpt. * Add retry counts from older delegpt to newer delegpt.
* Does not waste time on timeout'd (or other failing) addresses. * Does not waste time on timeout'd (or other failing) addresses.
* @param dp: new delegationpoint. * @param dp: new delegationpoint.
* @param old: old delegationpoint. * @param old: old delegationpoint.
* @param outbound_msg_retry: number of retries of outgoing queries
*/ */
void iter_merge_retry_counts(struct delegpt* dp, struct delegpt* old); void iter_merge_retry_counts(struct delegpt* dp, struct delegpt* old,
size_t outbound_msg_retry);
/** /**
* See if a DS response (type ANSWER) is too low: a nodata answer with * See if a DS response (type ANSWER) is too low: a nodata answer with

View file

@ -2298,7 +2298,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq,
iq->minimise_count++; iq->minimise_count++;
iq->timeout_count = 0; iq->timeout_count = 0;
iter_dec_attempts(iq->dp, 1); iter_dec_attempts(iq->dp, 1, ie->outbound_msg_retry);
/* Limit number of iterations for QNAMEs with more /* Limit number of iterations for QNAMEs with more
* than MAX_MINIMISE_COUNT labels. Send first MINIMISE_ONE_LAB * than MAX_MINIMISE_COUNT labels. Send first MINIMISE_ONE_LAB
@ -2500,7 +2500,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq,
(int)iq->caps_server+1, (int)naddr*3); (int)iq->caps_server+1, (int)naddr*3);
iq->response = iq->caps_response; iq->response = iq->caps_response;
iq->caps_fallback = 0; iq->caps_fallback = 0;
iter_dec_attempts(iq->dp, 3); /* space for fallback */ iter_dec_attempts(iq->dp, 3, ie->outbound_msg_retry); /* space for fallback */
iq->num_current_queries++; /* RespState decrements it*/ iq->num_current_queries++; /* RespState decrements it*/
iq->referral_count++; /* make sure we don't loop */ iq->referral_count++; /* make sure we don't loop */
iq->sent_count = 0; iq->sent_count = 0;
@ -2605,7 +2605,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq,
(int)iq->caps_server+1); (int)iq->caps_server+1);
iq->response = iq->caps_response; iq->response = iq->caps_response;
iq->caps_fallback = 0; iq->caps_fallback = 0;
iter_dec_attempts(iq->dp, 3); /* space for fallback */ iter_dec_attempts(iq->dp, 3, ie->outbound_msg_retry); /* space for fallback */
iq->num_current_queries++; /* RespState decrements it*/ iq->num_current_queries++; /* RespState decrements it*/
iq->referral_count++; /* make sure we don't loop */ iq->referral_count++; /* make sure we don't loop */
iq->sent_count = 0; iq->sent_count = 0;
@ -2732,7 +2732,7 @@ find_NS(struct reply_info* rep, size_t from, size_t to)
*/ */
static int static int
processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq,
int id) int id, size_t outbound_msg_retry)
{ {
int dnsseclame = 0; int dnsseclame = 0;
enum response_type type; enum response_type type;
@ -3002,7 +3002,7 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq,
} }
if(iq->store_parent_NS && query_dname_compare(iq->dp->name, if(iq->store_parent_NS && query_dname_compare(iq->dp->name,
iq->store_parent_NS->name) == 0) iq->store_parent_NS->name) == 0)
iter_merge_retry_counts(iq->dp, iq->store_parent_NS); iter_merge_retry_counts(iq->dp, iq->store_parent_NS, outbound_msg_retry);
delegpt_log(VERB_ALGO, iq->dp); delegpt_log(VERB_ALGO, iq->dp);
/* Count this as a referral. */ /* Count this as a referral. */
iq->referral_count++; iq->referral_count++;
@ -3746,7 +3746,8 @@ iter_handle(struct module_qstate* qstate, struct iter_qstate* iq,
cont = processQueryTargets(qstate, iq, ie, id); cont = processQueryTargets(qstate, iq, ie, id);
break; break;
case QUERY_RESP_STATE: case QUERY_RESP_STATE:
cont = processQueryResponse(qstate, iq, id); cont = processQueryResponse(
qstate, iq, id, ie->outbound_msg_retry);
break; break;
case PRIME_RESP_STATE: case PRIME_RESP_STATE:
cont = processPrimeResponse(qstate, id); cont = processPrimeResponse(qstate, id);
@ -3816,7 +3817,7 @@ process_response(struct module_qstate* qstate, struct iter_qstate* iq,
iq->num_current_queries--; iq->num_current_queries--;
/* need fresh attempts for the 0x20 fallback, if /* need fresh attempts for the 0x20 fallback, if
* that was the cause for the failure */ * that was the cause for the failure */
iter_dec_attempts(iq->dp, 3); iter_dec_attempts(iq->dp, 3, ie->outbound_msg_retry);
verbose(VERB_DETAIL, "Capsforid: timeouts, starting fallback"); verbose(VERB_DETAIL, "Capsforid: timeouts, starting fallback");
goto handle_it; goto handle_it;
} }

View file

@ -94,8 +94,6 @@ extern int UNKNOWN_SERVER_NICENESS;
* Equals RTT_MAX_TIMEOUT * Equals RTT_MAX_TIMEOUT
*/ */
#define USEFUL_SERVER_TOP_TIMEOUT 120000 #define USEFUL_SERVER_TOP_TIMEOUT 120000
/** number of retries on outgoing queries */
#define OUTBOUND_MSG_RETRY 5
/** RTT band, within this amount from the best, servers are chosen randomly. /** RTT band, within this amount from the best, servers are chosen randomly.
* Chosen so that the UNKNOWN_SERVER_NICENESS falls within the band of a * Chosen so that the UNKNOWN_SERVER_NICENESS falls within the band of a
* fast server, this causes server exploration as a side benefit. msec. */ * fast server, this causes server exploration as a side benefit. msec. */
@ -139,6 +137,9 @@ struct iter_env {
lock_basic_type queries_ratelimit_lock; lock_basic_type queries_ratelimit_lock;
/** number of queries that have been ratelimited */ /** number of queries that have been ratelimited */
size_t num_queries_ratelimited; size_t num_queries_ratelimited;
/** number of retries on outgoing queries */
size_t outbound_msg_retry;
}; };
/** /**

View file

@ -9,7 +9,7 @@ SECTION QUESTION
www.example.com. IN A www.example.com. IN A
ENTRY_END ENTRY_END
; But the pending query fails due to error (say TCP failure or malloc or ...) ; But the pending query fails due to error (say TCP failure or malloc or ...)
; This is iterator/iterator.h OUTBOUND_MSG_RETRY number of errors. ; This is util/config_file.c outbound-msg-retry number of errors.
STEP 2 ERROR STEP 2 ERROR
STEP 3 ERROR STEP 3 ERROR
STEP 4 ERROR STEP 4 ERROR

27
testdata/fwd_error_retries.rpl vendored Normal file
View file

@ -0,0 +1,27 @@
; config options
server:
outbound-msg-retry: 1
forward-zone:
name: "."
forward-addr: 216.0.0.1
CONFIG_END
SCENARIO_BEGIN Test basic forwarding with servfail and retry of 1
STEP 1 QUERY
ENTRY_BEGIN
REPLY RD
SECTION QUESTION
www.example.com. IN A
ENTRY_END
; query fails with servfail, now we make only outgoing-msg-retry=1 retries
STEP 2 ERROR
; returns servfail
STEP 14 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode qname qtype
SECTION QUESTION
REPLY SERVFAIL QR RD RA
MATCH all
www.example.com. IN A
ENTRY_END
SCENARIO_END

View file

@ -9,7 +9,7 @@ SECTION QUESTION
www.example.com. IN A www.example.com. IN A
ENTRY_END ENTRY_END
; But the pending query times out! ; But the pending query times out!
; OUTBOUND_MSG_RETRY times timeout. ; outbound-msg-retry times timeout.
STEP 2 TIMEOUT STEP 2 TIMEOUT
STEP 3 TIMEOUT STEP 3 TIMEOUT
STEP 4 TIMEOUT STEP 4 TIMEOUT

View file

@ -328,6 +328,7 @@ config_create(void)
cfg->ratelimit_size = 4*1024*1024; cfg->ratelimit_size = 4*1024*1024;
cfg->ratelimit_for_domain = NULL; cfg->ratelimit_for_domain = NULL;
cfg->ratelimit_below_domain = NULL; cfg->ratelimit_below_domain = NULL;
cfg->outbound_msg_retry = 5;
cfg->ip_ratelimit_factor = 10; cfg->ip_ratelimit_factor = 10;
cfg->ratelimit_factor = 10; cfg->ratelimit_factor = 10;
cfg->qname_minimisation = 1; cfg->qname_minimisation = 1;
@ -752,6 +753,7 @@ int config_set_option(struct config_file* cfg, const char* opt,
else S_POW2("ratelimit-slabs:", ratelimit_slabs) else S_POW2("ratelimit-slabs:", ratelimit_slabs)
else S_NUMBER_OR_ZERO("ip-ratelimit-factor:", ip_ratelimit_factor) else S_NUMBER_OR_ZERO("ip-ratelimit-factor:", ip_ratelimit_factor)
else S_NUMBER_OR_ZERO("ratelimit-factor:", ratelimit_factor) else S_NUMBER_OR_ZERO("ratelimit-factor:", ratelimit_factor)
else S_SIZET_NONZERO("outbound-msg-retry", outbound_msg_retry)
else S_SIZET_NONZERO("fast-server-num:", fast_server_num) else S_SIZET_NONZERO("fast-server-num:", fast_server_num)
else S_NUMBER_OR_ZERO("fast-server-permil:", fast_server_permil) else S_NUMBER_OR_ZERO("fast-server-permil:", fast_server_permil)
else S_YNO("qname-minimisation:", qname_minimisation) else S_YNO("qname-minimisation:", qname_minimisation)
@ -1195,6 +1197,7 @@ config_get_option(struct config_file* cfg, const char* opt,
else O_LS2(opt, "ratelimit-below-domain", ratelimit_below_domain) else O_LS2(opt, "ratelimit-below-domain", ratelimit_below_domain)
else O_DEC(opt, "ip-ratelimit-factor", ip_ratelimit_factor) else O_DEC(opt, "ip-ratelimit-factor", ip_ratelimit_factor)
else O_DEC(opt, "ratelimit-factor", ratelimit_factor) else O_DEC(opt, "ratelimit-factor", ratelimit_factor)
else O_UNS(opt, "outbound-msg-retry", outbound_msg_retry)
else O_DEC(opt, "fast-server-num", fast_server_num) else O_DEC(opt, "fast-server-num", fast_server_num)
else O_DEC(opt, "fast-server-permil", fast_server_permil) else O_DEC(opt, "fast-server-permil", fast_server_permil)
else O_DEC(opt, "val-sig-skew-min", val_sig_skew_min) else O_DEC(opt, "val-sig-skew-min", val_sig_skew_min)

View file

@ -578,6 +578,8 @@ struct config_file {
struct config_str2list* ratelimit_below_domain; struct config_str2list* ratelimit_below_domain;
/** ratelimit factor, 0 blocks all, 10 allows 1/10 of traffic */ /** ratelimit factor, 0 blocks all, 10 allows 1/10 of traffic */
int ratelimit_factor; int ratelimit_factor;
/** number of retries on outgoing queries */
size_t outbound_msg_retry;
/** minimise outgoing QNAME and hide original QTYPE if possible */ /** minimise outgoing QNAME and hide original QTYPE if possible */
int qname_minimisation; int qname_minimisation;
/** minimise QNAME in strict mode, minimise according to RFC. /** minimise QNAME in strict mode, minimise according to RFC.

File diff suppressed because it is too large Load diff

View file

@ -501,6 +501,7 @@ ratelimit-for-domain{COLON} { YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
ratelimit-below-domain{COLON} { YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } ratelimit-below-domain{COLON} { YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
ip-ratelimit-factor{COLON} { YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } ip-ratelimit-factor{COLON} { YDVAR(1, VAR_IP_RATELIMIT_FACTOR) }
ratelimit-factor{COLON} { YDVAR(1, VAR_RATELIMIT_FACTOR) } ratelimit-factor{COLON} { YDVAR(1, VAR_RATELIMIT_FACTOR) }
outbound-msg-retry{COLON} { YDVAR(1, VAR_OUTBOUND_MSG_RETRY) }
low-rtt{COLON} { YDVAR(1, VAR_LOW_RTT) } low-rtt{COLON} { YDVAR(1, VAR_LOW_RTT) }
fast-server-num{COLON} { YDVAR(1, VAR_FAST_SERVER_NUM) } fast-server-num{COLON} { YDVAR(1, VAR_FAST_SERVER_NUM) }
low-rtt-pct{COLON} { YDVAR(1, VAR_FAST_SERVER_PERMIL) } low-rtt-pct{COLON} { YDVAR(1, VAR_FAST_SERVER_PERMIL) }

File diff suppressed because it is too large Load diff

View file

@ -252,125 +252,126 @@ extern int yydebug;
VAR_RATELIMIT = 453, /* VAR_RATELIMIT */ VAR_RATELIMIT = 453, /* VAR_RATELIMIT */
VAR_RATELIMIT_SLABS = 454, /* VAR_RATELIMIT_SLABS */ VAR_RATELIMIT_SLABS = 454, /* VAR_RATELIMIT_SLABS */
VAR_RATELIMIT_SIZE = 455, /* VAR_RATELIMIT_SIZE */ VAR_RATELIMIT_SIZE = 455, /* VAR_RATELIMIT_SIZE */
VAR_RATELIMIT_FOR_DOMAIN = 456, /* VAR_RATELIMIT_FOR_DOMAIN */ VAR_OUTBOUND_MSG_RETRY = 456, /* VAR_OUTBOUND_MSG_RETRY */
VAR_RATELIMIT_BELOW_DOMAIN = 457, /* VAR_RATELIMIT_BELOW_DOMAIN */ VAR_RATELIMIT_FOR_DOMAIN = 457, /* VAR_RATELIMIT_FOR_DOMAIN */
VAR_IP_RATELIMIT_FACTOR = 458, /* VAR_IP_RATELIMIT_FACTOR */ VAR_RATELIMIT_BELOW_DOMAIN = 458, /* VAR_RATELIMIT_BELOW_DOMAIN */
VAR_RATELIMIT_FACTOR = 459, /* VAR_RATELIMIT_FACTOR */ VAR_IP_RATELIMIT_FACTOR = 459, /* VAR_IP_RATELIMIT_FACTOR */
VAR_SEND_CLIENT_SUBNET = 460, /* VAR_SEND_CLIENT_SUBNET */ VAR_RATELIMIT_FACTOR = 460, /* VAR_RATELIMIT_FACTOR */
VAR_CLIENT_SUBNET_ZONE = 461, /* VAR_CLIENT_SUBNET_ZONE */ VAR_SEND_CLIENT_SUBNET = 461, /* VAR_SEND_CLIENT_SUBNET */
VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 462, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ VAR_CLIENT_SUBNET_ZONE = 462, /* VAR_CLIENT_SUBNET_ZONE */
VAR_CLIENT_SUBNET_OPCODE = 463, /* VAR_CLIENT_SUBNET_OPCODE */ VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 463, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */
VAR_MAX_CLIENT_SUBNET_IPV4 = 464, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ VAR_CLIENT_SUBNET_OPCODE = 464, /* VAR_CLIENT_SUBNET_OPCODE */
VAR_MAX_CLIENT_SUBNET_IPV6 = 465, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ VAR_MAX_CLIENT_SUBNET_IPV4 = 465, /* VAR_MAX_CLIENT_SUBNET_IPV4 */
VAR_MIN_CLIENT_SUBNET_IPV4 = 466, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ VAR_MAX_CLIENT_SUBNET_IPV6 = 466, /* VAR_MAX_CLIENT_SUBNET_IPV6 */
VAR_MIN_CLIENT_SUBNET_IPV6 = 467, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ VAR_MIN_CLIENT_SUBNET_IPV4 = 467, /* VAR_MIN_CLIENT_SUBNET_IPV4 */
VAR_MAX_ECS_TREE_SIZE_IPV4 = 468, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ VAR_MIN_CLIENT_SUBNET_IPV6 = 468, /* VAR_MIN_CLIENT_SUBNET_IPV6 */
VAR_MAX_ECS_TREE_SIZE_IPV6 = 469, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ VAR_MAX_ECS_TREE_SIZE_IPV4 = 469, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */
VAR_CAPS_WHITELIST = 470, /* VAR_CAPS_WHITELIST */ VAR_MAX_ECS_TREE_SIZE_IPV6 = 470, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */
VAR_CACHE_MAX_NEGATIVE_TTL = 471, /* VAR_CACHE_MAX_NEGATIVE_TTL */ VAR_CAPS_WHITELIST = 471, /* VAR_CAPS_WHITELIST */
VAR_PERMIT_SMALL_HOLDDOWN = 472, /* VAR_PERMIT_SMALL_HOLDDOWN */ VAR_CACHE_MAX_NEGATIVE_TTL = 472, /* VAR_CACHE_MAX_NEGATIVE_TTL */
VAR_QNAME_MINIMISATION = 473, /* VAR_QNAME_MINIMISATION */ VAR_PERMIT_SMALL_HOLDDOWN = 473, /* VAR_PERMIT_SMALL_HOLDDOWN */
VAR_QNAME_MINIMISATION_STRICT = 474, /* VAR_QNAME_MINIMISATION_STRICT */ VAR_QNAME_MINIMISATION = 474, /* VAR_QNAME_MINIMISATION */
VAR_IP_FREEBIND = 475, /* VAR_IP_FREEBIND */ VAR_QNAME_MINIMISATION_STRICT = 475, /* VAR_QNAME_MINIMISATION_STRICT */
VAR_DEFINE_TAG = 476, /* VAR_DEFINE_TAG */ VAR_IP_FREEBIND = 476, /* VAR_IP_FREEBIND */
VAR_LOCAL_ZONE_TAG = 477, /* VAR_LOCAL_ZONE_TAG */ VAR_DEFINE_TAG = 477, /* VAR_DEFINE_TAG */
VAR_ACCESS_CONTROL_TAG = 478, /* VAR_ACCESS_CONTROL_TAG */ VAR_LOCAL_ZONE_TAG = 478, /* VAR_LOCAL_ZONE_TAG */
VAR_LOCAL_ZONE_OVERRIDE = 479, /* VAR_LOCAL_ZONE_OVERRIDE */ VAR_ACCESS_CONTROL_TAG = 479, /* VAR_ACCESS_CONTROL_TAG */
VAR_ACCESS_CONTROL_TAG_ACTION = 480, /* VAR_ACCESS_CONTROL_TAG_ACTION */ VAR_LOCAL_ZONE_OVERRIDE = 480, /* VAR_LOCAL_ZONE_OVERRIDE */
VAR_ACCESS_CONTROL_TAG_DATA = 481, /* VAR_ACCESS_CONTROL_TAG_DATA */ VAR_ACCESS_CONTROL_TAG_ACTION = 481, /* VAR_ACCESS_CONTROL_TAG_ACTION */
VAR_VIEW = 482, /* VAR_VIEW */ VAR_ACCESS_CONTROL_TAG_DATA = 482, /* VAR_ACCESS_CONTROL_TAG_DATA */
VAR_ACCESS_CONTROL_VIEW = 483, /* VAR_ACCESS_CONTROL_VIEW */ VAR_VIEW = 483, /* VAR_VIEW */
VAR_VIEW_FIRST = 484, /* VAR_VIEW_FIRST */ VAR_ACCESS_CONTROL_VIEW = 484, /* VAR_ACCESS_CONTROL_VIEW */
VAR_SERVE_EXPIRED = 485, /* VAR_SERVE_EXPIRED */ VAR_VIEW_FIRST = 485, /* VAR_VIEW_FIRST */
VAR_SERVE_EXPIRED_TTL = 486, /* VAR_SERVE_EXPIRED_TTL */ VAR_SERVE_EXPIRED = 486, /* VAR_SERVE_EXPIRED */
VAR_SERVE_EXPIRED_TTL_RESET = 487, /* VAR_SERVE_EXPIRED_TTL_RESET */ VAR_SERVE_EXPIRED_TTL = 487, /* VAR_SERVE_EXPIRED_TTL */
VAR_SERVE_EXPIRED_REPLY_TTL = 488, /* VAR_SERVE_EXPIRED_REPLY_TTL */ VAR_SERVE_EXPIRED_TTL_RESET = 488, /* VAR_SERVE_EXPIRED_TTL_RESET */
VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 489, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ VAR_SERVE_EXPIRED_REPLY_TTL = 489, /* VAR_SERVE_EXPIRED_REPLY_TTL */
VAR_SERVE_ORIGINAL_TTL = 490, /* VAR_SERVE_ORIGINAL_TTL */ VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 490, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */
VAR_FAKE_DSA = 491, /* VAR_FAKE_DSA */ VAR_SERVE_ORIGINAL_TTL = 491, /* VAR_SERVE_ORIGINAL_TTL */
VAR_FAKE_SHA1 = 492, /* VAR_FAKE_SHA1 */ VAR_FAKE_DSA = 492, /* VAR_FAKE_DSA */
VAR_LOG_IDENTITY = 493, /* VAR_LOG_IDENTITY */ VAR_FAKE_SHA1 = 493, /* VAR_FAKE_SHA1 */
VAR_HIDE_TRUSTANCHOR = 494, /* VAR_HIDE_TRUSTANCHOR */ VAR_LOG_IDENTITY = 494, /* VAR_LOG_IDENTITY */
VAR_HIDE_HTTP_USER_AGENT = 495, /* VAR_HIDE_HTTP_USER_AGENT */ VAR_HIDE_TRUSTANCHOR = 495, /* VAR_HIDE_TRUSTANCHOR */
VAR_HTTP_USER_AGENT = 496, /* VAR_HTTP_USER_AGENT */ VAR_HIDE_HTTP_USER_AGENT = 496, /* VAR_HIDE_HTTP_USER_AGENT */
VAR_TRUST_ANCHOR_SIGNALING = 497, /* VAR_TRUST_ANCHOR_SIGNALING */ VAR_HTTP_USER_AGENT = 497, /* VAR_HTTP_USER_AGENT */
VAR_AGGRESSIVE_NSEC = 498, /* VAR_AGGRESSIVE_NSEC */ VAR_TRUST_ANCHOR_SIGNALING = 498, /* VAR_TRUST_ANCHOR_SIGNALING */
VAR_USE_SYSTEMD = 499, /* VAR_USE_SYSTEMD */ VAR_AGGRESSIVE_NSEC = 499, /* VAR_AGGRESSIVE_NSEC */
VAR_SHM_ENABLE = 500, /* VAR_SHM_ENABLE */ VAR_USE_SYSTEMD = 500, /* VAR_USE_SYSTEMD */
VAR_SHM_KEY = 501, /* VAR_SHM_KEY */ VAR_SHM_ENABLE = 501, /* VAR_SHM_ENABLE */
VAR_ROOT_KEY_SENTINEL = 502, /* VAR_ROOT_KEY_SENTINEL */ VAR_SHM_KEY = 502, /* VAR_SHM_KEY */
VAR_DNSCRYPT = 503, /* VAR_DNSCRYPT */ VAR_ROOT_KEY_SENTINEL = 503, /* VAR_ROOT_KEY_SENTINEL */
VAR_DNSCRYPT_ENABLE = 504, /* VAR_DNSCRYPT_ENABLE */ VAR_DNSCRYPT = 504, /* VAR_DNSCRYPT */
VAR_DNSCRYPT_PORT = 505, /* VAR_DNSCRYPT_PORT */ VAR_DNSCRYPT_ENABLE = 505, /* VAR_DNSCRYPT_ENABLE */
VAR_DNSCRYPT_PROVIDER = 506, /* VAR_DNSCRYPT_PROVIDER */ VAR_DNSCRYPT_PORT = 506, /* VAR_DNSCRYPT_PORT */
VAR_DNSCRYPT_SECRET_KEY = 507, /* VAR_DNSCRYPT_SECRET_KEY */ VAR_DNSCRYPT_PROVIDER = 507, /* VAR_DNSCRYPT_PROVIDER */
VAR_DNSCRYPT_PROVIDER_CERT = 508, /* VAR_DNSCRYPT_PROVIDER_CERT */ VAR_DNSCRYPT_SECRET_KEY = 508, /* VAR_DNSCRYPT_SECRET_KEY */
VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 509, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ VAR_DNSCRYPT_PROVIDER_CERT = 509, /* VAR_DNSCRYPT_PROVIDER_CERT */
VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 510, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 510, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */
VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 511, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 511, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */
VAR_DNSCRYPT_NONCE_CACHE_SIZE = 512, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 512, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */
VAR_DNSCRYPT_NONCE_CACHE_SLABS = 513, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ VAR_DNSCRYPT_NONCE_CACHE_SIZE = 513, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */
VAR_PAD_RESPONSES = 514, /* VAR_PAD_RESPONSES */ VAR_DNSCRYPT_NONCE_CACHE_SLABS = 514, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */
VAR_PAD_RESPONSES_BLOCK_SIZE = 515, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ VAR_PAD_RESPONSES = 515, /* VAR_PAD_RESPONSES */
VAR_PAD_QUERIES = 516, /* VAR_PAD_QUERIES */ VAR_PAD_RESPONSES_BLOCK_SIZE = 516, /* VAR_PAD_RESPONSES_BLOCK_SIZE */
VAR_PAD_QUERIES_BLOCK_SIZE = 517, /* VAR_PAD_QUERIES_BLOCK_SIZE */ VAR_PAD_QUERIES = 517, /* VAR_PAD_QUERIES */
VAR_IPSECMOD_ENABLED = 518, /* VAR_IPSECMOD_ENABLED */ VAR_PAD_QUERIES_BLOCK_SIZE = 518, /* VAR_PAD_QUERIES_BLOCK_SIZE */
VAR_IPSECMOD_HOOK = 519, /* VAR_IPSECMOD_HOOK */ VAR_IPSECMOD_ENABLED = 519, /* VAR_IPSECMOD_ENABLED */
VAR_IPSECMOD_IGNORE_BOGUS = 520, /* VAR_IPSECMOD_IGNORE_BOGUS */ VAR_IPSECMOD_HOOK = 520, /* VAR_IPSECMOD_HOOK */
VAR_IPSECMOD_MAX_TTL = 521, /* VAR_IPSECMOD_MAX_TTL */ VAR_IPSECMOD_IGNORE_BOGUS = 521, /* VAR_IPSECMOD_IGNORE_BOGUS */
VAR_IPSECMOD_WHITELIST = 522, /* VAR_IPSECMOD_WHITELIST */ VAR_IPSECMOD_MAX_TTL = 522, /* VAR_IPSECMOD_MAX_TTL */
VAR_IPSECMOD_STRICT = 523, /* VAR_IPSECMOD_STRICT */ VAR_IPSECMOD_WHITELIST = 523, /* VAR_IPSECMOD_WHITELIST */
VAR_CACHEDB = 524, /* VAR_CACHEDB */ VAR_IPSECMOD_STRICT = 524, /* VAR_IPSECMOD_STRICT */
VAR_CACHEDB_BACKEND = 525, /* VAR_CACHEDB_BACKEND */ VAR_CACHEDB = 525, /* VAR_CACHEDB */
VAR_CACHEDB_SECRETSEED = 526, /* VAR_CACHEDB_SECRETSEED */ VAR_CACHEDB_BACKEND = 526, /* VAR_CACHEDB_BACKEND */
VAR_CACHEDB_REDISHOST = 527, /* VAR_CACHEDB_REDISHOST */ VAR_CACHEDB_SECRETSEED = 527, /* VAR_CACHEDB_SECRETSEED */
VAR_CACHEDB_REDISPORT = 528, /* VAR_CACHEDB_REDISPORT */ VAR_CACHEDB_REDISHOST = 528, /* VAR_CACHEDB_REDISHOST */
VAR_CACHEDB_REDISTIMEOUT = 529, /* VAR_CACHEDB_REDISTIMEOUT */ VAR_CACHEDB_REDISPORT = 529, /* VAR_CACHEDB_REDISPORT */
VAR_CACHEDB_REDISEXPIRERECORDS = 530, /* VAR_CACHEDB_REDISEXPIRERECORDS */ VAR_CACHEDB_REDISTIMEOUT = 530, /* VAR_CACHEDB_REDISTIMEOUT */
VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 531, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ VAR_CACHEDB_REDISEXPIRERECORDS = 531, /* VAR_CACHEDB_REDISEXPIRERECORDS */
VAR_FOR_UPSTREAM = 532, /* VAR_FOR_UPSTREAM */ VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 532, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */
VAR_AUTH_ZONE = 533, /* VAR_AUTH_ZONE */ VAR_FOR_UPSTREAM = 533, /* VAR_FOR_UPSTREAM */
VAR_ZONEFILE = 534, /* VAR_ZONEFILE */ VAR_AUTH_ZONE = 534, /* VAR_AUTH_ZONE */
VAR_MASTER = 535, /* VAR_MASTER */ VAR_ZONEFILE = 535, /* VAR_ZONEFILE */
VAR_URL = 536, /* VAR_URL */ VAR_MASTER = 536, /* VAR_MASTER */
VAR_FOR_DOWNSTREAM = 537, /* VAR_FOR_DOWNSTREAM */ VAR_URL = 537, /* VAR_URL */
VAR_FALLBACK_ENABLED = 538, /* VAR_FALLBACK_ENABLED */ VAR_FOR_DOWNSTREAM = 538, /* VAR_FOR_DOWNSTREAM */
VAR_TLS_ADDITIONAL_PORT = 539, /* VAR_TLS_ADDITIONAL_PORT */ VAR_FALLBACK_ENABLED = 539, /* VAR_FALLBACK_ENABLED */
VAR_LOW_RTT = 540, /* VAR_LOW_RTT */ VAR_TLS_ADDITIONAL_PORT = 540, /* VAR_TLS_ADDITIONAL_PORT */
VAR_LOW_RTT_PERMIL = 541, /* VAR_LOW_RTT_PERMIL */ VAR_LOW_RTT = 541, /* VAR_LOW_RTT */
VAR_FAST_SERVER_PERMIL = 542, /* VAR_FAST_SERVER_PERMIL */ VAR_LOW_RTT_PERMIL = 542, /* VAR_LOW_RTT_PERMIL */
VAR_FAST_SERVER_NUM = 543, /* VAR_FAST_SERVER_NUM */ VAR_FAST_SERVER_PERMIL = 543, /* VAR_FAST_SERVER_PERMIL */
VAR_ALLOW_NOTIFY = 544, /* VAR_ALLOW_NOTIFY */ VAR_FAST_SERVER_NUM = 544, /* VAR_FAST_SERVER_NUM */
VAR_TLS_WIN_CERT = 545, /* VAR_TLS_WIN_CERT */ VAR_ALLOW_NOTIFY = 545, /* VAR_ALLOW_NOTIFY */
VAR_TCP_CONNECTION_LIMIT = 546, /* VAR_TCP_CONNECTION_LIMIT */ VAR_TLS_WIN_CERT = 546, /* VAR_TLS_WIN_CERT */
VAR_FORWARD_NO_CACHE = 547, /* VAR_FORWARD_NO_CACHE */ VAR_TCP_CONNECTION_LIMIT = 547, /* VAR_TCP_CONNECTION_LIMIT */
VAR_STUB_NO_CACHE = 548, /* VAR_STUB_NO_CACHE */ VAR_FORWARD_NO_CACHE = 548, /* VAR_FORWARD_NO_CACHE */
VAR_LOG_SERVFAIL = 549, /* VAR_LOG_SERVFAIL */ VAR_STUB_NO_CACHE = 549, /* VAR_STUB_NO_CACHE */
VAR_DENY_ANY = 550, /* VAR_DENY_ANY */ VAR_LOG_SERVFAIL = 550, /* VAR_LOG_SERVFAIL */
VAR_UNKNOWN_SERVER_TIME_LIMIT = 551, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ VAR_DENY_ANY = 551, /* VAR_DENY_ANY */
VAR_LOG_TAG_QUERYREPLY = 552, /* VAR_LOG_TAG_QUERYREPLY */ VAR_UNKNOWN_SERVER_TIME_LIMIT = 552, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */
VAR_STREAM_WAIT_SIZE = 553, /* VAR_STREAM_WAIT_SIZE */ VAR_LOG_TAG_QUERYREPLY = 553, /* VAR_LOG_TAG_QUERYREPLY */
VAR_TLS_CIPHERS = 554, /* VAR_TLS_CIPHERS */ VAR_STREAM_WAIT_SIZE = 554, /* VAR_STREAM_WAIT_SIZE */
VAR_TLS_CIPHERSUITES = 555, /* VAR_TLS_CIPHERSUITES */ VAR_TLS_CIPHERS = 555, /* VAR_TLS_CIPHERS */
VAR_TLS_USE_SNI = 556, /* VAR_TLS_USE_SNI */ VAR_TLS_CIPHERSUITES = 556, /* VAR_TLS_CIPHERSUITES */
VAR_IPSET = 557, /* VAR_IPSET */ VAR_TLS_USE_SNI = 557, /* VAR_TLS_USE_SNI */
VAR_IPSET_NAME_V4 = 558, /* VAR_IPSET_NAME_V4 */ VAR_IPSET = 558, /* VAR_IPSET */
VAR_IPSET_NAME_V6 = 559, /* VAR_IPSET_NAME_V6 */ VAR_IPSET_NAME_V4 = 559, /* VAR_IPSET_NAME_V4 */
VAR_TLS_SESSION_TICKET_KEYS = 560, /* VAR_TLS_SESSION_TICKET_KEYS */ VAR_IPSET_NAME_V6 = 560, /* VAR_IPSET_NAME_V6 */
VAR_RPZ = 561, /* VAR_RPZ */ VAR_TLS_SESSION_TICKET_KEYS = 561, /* VAR_TLS_SESSION_TICKET_KEYS */
VAR_TAGS = 562, /* VAR_TAGS */ VAR_RPZ = 562, /* VAR_RPZ */
VAR_RPZ_ACTION_OVERRIDE = 563, /* VAR_RPZ_ACTION_OVERRIDE */ VAR_TAGS = 563, /* VAR_TAGS */
VAR_RPZ_CNAME_OVERRIDE = 564, /* VAR_RPZ_CNAME_OVERRIDE */ VAR_RPZ_ACTION_OVERRIDE = 564, /* VAR_RPZ_ACTION_OVERRIDE */
VAR_RPZ_LOG = 565, /* VAR_RPZ_LOG */ VAR_RPZ_CNAME_OVERRIDE = 565, /* VAR_RPZ_CNAME_OVERRIDE */
VAR_RPZ_LOG_NAME = 566, /* VAR_RPZ_LOG_NAME */ VAR_RPZ_LOG = 566, /* VAR_RPZ_LOG */
VAR_DYNLIB = 567, /* VAR_DYNLIB */ VAR_RPZ_LOG_NAME = 567, /* VAR_RPZ_LOG_NAME */
VAR_DYNLIB_FILE = 568, /* VAR_DYNLIB_FILE */ VAR_DYNLIB = 568, /* VAR_DYNLIB */
VAR_EDNS_CLIENT_STRING = 569, /* VAR_EDNS_CLIENT_STRING */ VAR_DYNLIB_FILE = 569, /* VAR_DYNLIB_FILE */
VAR_EDNS_CLIENT_STRING_OPCODE = 570, /* VAR_EDNS_CLIENT_STRING_OPCODE */ VAR_EDNS_CLIENT_STRING = 570, /* VAR_EDNS_CLIENT_STRING */
VAR_NSID = 571, /* VAR_NSID */ VAR_EDNS_CLIENT_STRING_OPCODE = 571, /* VAR_EDNS_CLIENT_STRING_OPCODE */
VAR_ZONEMD_PERMISSIVE_MODE = 572, /* VAR_ZONEMD_PERMISSIVE_MODE */ VAR_NSID = 572, /* VAR_NSID */
VAR_ZONEMD_CHECK = 573, /* VAR_ZONEMD_CHECK */ VAR_ZONEMD_PERMISSIVE_MODE = 573, /* VAR_ZONEMD_PERMISSIVE_MODE */
VAR_ZONEMD_REJECT_ABSENCE = 574 /* VAR_ZONEMD_REJECT_ABSENCE */ VAR_ZONEMD_CHECK = 574, /* VAR_ZONEMD_CHECK */
VAR_ZONEMD_REJECT_ABSENCE = 575 /* VAR_ZONEMD_REJECT_ABSENCE */
}; };
typedef enum yytokentype yytoken_kind_t; typedef enum yytokentype yytoken_kind_t;
#endif #endif
@ -576,125 +577,126 @@ extern int yydebug;
#define VAR_RATELIMIT 453 #define VAR_RATELIMIT 453
#define VAR_RATELIMIT_SLABS 454 #define VAR_RATELIMIT_SLABS 454
#define VAR_RATELIMIT_SIZE 455 #define VAR_RATELIMIT_SIZE 455
#define VAR_RATELIMIT_FOR_DOMAIN 456 #define VAR_OUTBOUND_MSG_RETRY 456
#define VAR_RATELIMIT_BELOW_DOMAIN 457 #define VAR_RATELIMIT_FOR_DOMAIN 457
#define VAR_IP_RATELIMIT_FACTOR 458 #define VAR_RATELIMIT_BELOW_DOMAIN 458
#define VAR_RATELIMIT_FACTOR 459 #define VAR_IP_RATELIMIT_FACTOR 459
#define VAR_SEND_CLIENT_SUBNET 460 #define VAR_RATELIMIT_FACTOR 460
#define VAR_CLIENT_SUBNET_ZONE 461 #define VAR_SEND_CLIENT_SUBNET 461
#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 462 #define VAR_CLIENT_SUBNET_ZONE 462
#define VAR_CLIENT_SUBNET_OPCODE 463 #define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 463
#define VAR_MAX_CLIENT_SUBNET_IPV4 464 #define VAR_CLIENT_SUBNET_OPCODE 464
#define VAR_MAX_CLIENT_SUBNET_IPV6 465 #define VAR_MAX_CLIENT_SUBNET_IPV4 465
#define VAR_MIN_CLIENT_SUBNET_IPV4 466 #define VAR_MAX_CLIENT_SUBNET_IPV6 466
#define VAR_MIN_CLIENT_SUBNET_IPV6 467 #define VAR_MIN_CLIENT_SUBNET_IPV4 467
#define VAR_MAX_ECS_TREE_SIZE_IPV4 468 #define VAR_MIN_CLIENT_SUBNET_IPV6 468
#define VAR_MAX_ECS_TREE_SIZE_IPV6 469 #define VAR_MAX_ECS_TREE_SIZE_IPV4 469
#define VAR_CAPS_WHITELIST 470 #define VAR_MAX_ECS_TREE_SIZE_IPV6 470
#define VAR_CACHE_MAX_NEGATIVE_TTL 471 #define VAR_CAPS_WHITELIST 471
#define VAR_PERMIT_SMALL_HOLDDOWN 472 #define VAR_CACHE_MAX_NEGATIVE_TTL 472
#define VAR_QNAME_MINIMISATION 473 #define VAR_PERMIT_SMALL_HOLDDOWN 473
#define VAR_QNAME_MINIMISATION_STRICT 474 #define VAR_QNAME_MINIMISATION 474
#define VAR_IP_FREEBIND 475 #define VAR_QNAME_MINIMISATION_STRICT 475
#define VAR_DEFINE_TAG 476 #define VAR_IP_FREEBIND 476
#define VAR_LOCAL_ZONE_TAG 477 #define VAR_DEFINE_TAG 477
#define VAR_ACCESS_CONTROL_TAG 478 #define VAR_LOCAL_ZONE_TAG 478
#define VAR_LOCAL_ZONE_OVERRIDE 479 #define VAR_ACCESS_CONTROL_TAG 479
#define VAR_ACCESS_CONTROL_TAG_ACTION 480 #define VAR_LOCAL_ZONE_OVERRIDE 480
#define VAR_ACCESS_CONTROL_TAG_DATA 481 #define VAR_ACCESS_CONTROL_TAG_ACTION 481
#define VAR_VIEW 482 #define VAR_ACCESS_CONTROL_TAG_DATA 482
#define VAR_ACCESS_CONTROL_VIEW 483 #define VAR_VIEW 483
#define VAR_VIEW_FIRST 484 #define VAR_ACCESS_CONTROL_VIEW 484
#define VAR_SERVE_EXPIRED 485 #define VAR_VIEW_FIRST 485
#define VAR_SERVE_EXPIRED_TTL 486 #define VAR_SERVE_EXPIRED 486
#define VAR_SERVE_EXPIRED_TTL_RESET 487 #define VAR_SERVE_EXPIRED_TTL 487
#define VAR_SERVE_EXPIRED_REPLY_TTL 488 #define VAR_SERVE_EXPIRED_TTL_RESET 488
#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 489 #define VAR_SERVE_EXPIRED_REPLY_TTL 489
#define VAR_SERVE_ORIGINAL_TTL 490 #define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 490
#define VAR_FAKE_DSA 491 #define VAR_SERVE_ORIGINAL_TTL 491
#define VAR_FAKE_SHA1 492 #define VAR_FAKE_DSA 492
#define VAR_LOG_IDENTITY 493 #define VAR_FAKE_SHA1 493
#define VAR_HIDE_TRUSTANCHOR 494 #define VAR_LOG_IDENTITY 494
#define VAR_HIDE_HTTP_USER_AGENT 495 #define VAR_HIDE_TRUSTANCHOR 495
#define VAR_HTTP_USER_AGENT 496 #define VAR_HIDE_HTTP_USER_AGENT 496
#define VAR_TRUST_ANCHOR_SIGNALING 497 #define VAR_HTTP_USER_AGENT 497
#define VAR_AGGRESSIVE_NSEC 498 #define VAR_TRUST_ANCHOR_SIGNALING 498
#define VAR_USE_SYSTEMD 499 #define VAR_AGGRESSIVE_NSEC 499
#define VAR_SHM_ENABLE 500 #define VAR_USE_SYSTEMD 500
#define VAR_SHM_KEY 501 #define VAR_SHM_ENABLE 501
#define VAR_ROOT_KEY_SENTINEL 502 #define VAR_SHM_KEY 502
#define VAR_DNSCRYPT 503 #define VAR_ROOT_KEY_SENTINEL 503
#define VAR_DNSCRYPT_ENABLE 504 #define VAR_DNSCRYPT 504
#define VAR_DNSCRYPT_PORT 505 #define VAR_DNSCRYPT_ENABLE 505
#define VAR_DNSCRYPT_PROVIDER 506 #define VAR_DNSCRYPT_PORT 506
#define VAR_DNSCRYPT_SECRET_KEY 507 #define VAR_DNSCRYPT_PROVIDER 507
#define VAR_DNSCRYPT_PROVIDER_CERT 508 #define VAR_DNSCRYPT_SECRET_KEY 508
#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 509 #define VAR_DNSCRYPT_PROVIDER_CERT 509
#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 510 #define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 510
#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 511 #define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 511
#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 512 #define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 512
#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 513 #define VAR_DNSCRYPT_NONCE_CACHE_SIZE 513
#define VAR_PAD_RESPONSES 514 #define VAR_DNSCRYPT_NONCE_CACHE_SLABS 514
#define VAR_PAD_RESPONSES_BLOCK_SIZE 515 #define VAR_PAD_RESPONSES 515
#define VAR_PAD_QUERIES 516 #define VAR_PAD_RESPONSES_BLOCK_SIZE 516
#define VAR_PAD_QUERIES_BLOCK_SIZE 517 #define VAR_PAD_QUERIES 517
#define VAR_IPSECMOD_ENABLED 518 #define VAR_PAD_QUERIES_BLOCK_SIZE 518
#define VAR_IPSECMOD_HOOK 519 #define VAR_IPSECMOD_ENABLED 519
#define VAR_IPSECMOD_IGNORE_BOGUS 520 #define VAR_IPSECMOD_HOOK 520
#define VAR_IPSECMOD_MAX_TTL 521 #define VAR_IPSECMOD_IGNORE_BOGUS 521
#define VAR_IPSECMOD_WHITELIST 522 #define VAR_IPSECMOD_MAX_TTL 522
#define VAR_IPSECMOD_STRICT 523 #define VAR_IPSECMOD_WHITELIST 523
#define VAR_CACHEDB 524 #define VAR_IPSECMOD_STRICT 524
#define VAR_CACHEDB_BACKEND 525 #define VAR_CACHEDB 525
#define VAR_CACHEDB_SECRETSEED 526 #define VAR_CACHEDB_BACKEND 526
#define VAR_CACHEDB_REDISHOST 527 #define VAR_CACHEDB_SECRETSEED 527
#define VAR_CACHEDB_REDISPORT 528 #define VAR_CACHEDB_REDISHOST 528
#define VAR_CACHEDB_REDISTIMEOUT 529 #define VAR_CACHEDB_REDISPORT 529
#define VAR_CACHEDB_REDISEXPIRERECORDS 530 #define VAR_CACHEDB_REDISTIMEOUT 530
#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 531 #define VAR_CACHEDB_REDISEXPIRERECORDS 531
#define VAR_FOR_UPSTREAM 532 #define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 532
#define VAR_AUTH_ZONE 533 #define VAR_FOR_UPSTREAM 533
#define VAR_ZONEFILE 534 #define VAR_AUTH_ZONE 534
#define VAR_MASTER 535 #define VAR_ZONEFILE 535
#define VAR_URL 536 #define VAR_MASTER 536
#define VAR_FOR_DOWNSTREAM 537 #define VAR_URL 537
#define VAR_FALLBACK_ENABLED 538 #define VAR_FOR_DOWNSTREAM 538
#define VAR_TLS_ADDITIONAL_PORT 539 #define VAR_FALLBACK_ENABLED 539
#define VAR_LOW_RTT 540 #define VAR_TLS_ADDITIONAL_PORT 540
#define VAR_LOW_RTT_PERMIL 541 #define VAR_LOW_RTT 541
#define VAR_FAST_SERVER_PERMIL 542 #define VAR_LOW_RTT_PERMIL 542
#define VAR_FAST_SERVER_NUM 543 #define VAR_FAST_SERVER_PERMIL 543
#define VAR_ALLOW_NOTIFY 544 #define VAR_FAST_SERVER_NUM 544
#define VAR_TLS_WIN_CERT 545 #define VAR_ALLOW_NOTIFY 545
#define VAR_TCP_CONNECTION_LIMIT 546 #define VAR_TLS_WIN_CERT 546
#define VAR_FORWARD_NO_CACHE 547 #define VAR_TCP_CONNECTION_LIMIT 547
#define VAR_STUB_NO_CACHE 548 #define VAR_FORWARD_NO_CACHE 548
#define VAR_LOG_SERVFAIL 549 #define VAR_STUB_NO_CACHE 549
#define VAR_DENY_ANY 550 #define VAR_LOG_SERVFAIL 550
#define VAR_UNKNOWN_SERVER_TIME_LIMIT 551 #define VAR_DENY_ANY 551
#define VAR_LOG_TAG_QUERYREPLY 552 #define VAR_UNKNOWN_SERVER_TIME_LIMIT 552
#define VAR_STREAM_WAIT_SIZE 553 #define VAR_LOG_TAG_QUERYREPLY 553
#define VAR_TLS_CIPHERS 554 #define VAR_STREAM_WAIT_SIZE 554
#define VAR_TLS_CIPHERSUITES 555 #define VAR_TLS_CIPHERS 555
#define VAR_TLS_USE_SNI 556 #define VAR_TLS_CIPHERSUITES 556
#define VAR_IPSET 557 #define VAR_TLS_USE_SNI 557
#define VAR_IPSET_NAME_V4 558 #define VAR_IPSET 558
#define VAR_IPSET_NAME_V6 559 #define VAR_IPSET_NAME_V4 559
#define VAR_TLS_SESSION_TICKET_KEYS 560 #define VAR_IPSET_NAME_V6 560
#define VAR_RPZ 561 #define VAR_TLS_SESSION_TICKET_KEYS 561
#define VAR_TAGS 562 #define VAR_RPZ 562
#define VAR_RPZ_ACTION_OVERRIDE 563 #define VAR_TAGS 563
#define VAR_RPZ_CNAME_OVERRIDE 564 #define VAR_RPZ_ACTION_OVERRIDE 564
#define VAR_RPZ_LOG 565 #define VAR_RPZ_CNAME_OVERRIDE 565
#define VAR_RPZ_LOG_NAME 566 #define VAR_RPZ_LOG 566
#define VAR_DYNLIB 567 #define VAR_RPZ_LOG_NAME 567
#define VAR_DYNLIB_FILE 568 #define VAR_DYNLIB 568
#define VAR_EDNS_CLIENT_STRING 569 #define VAR_DYNLIB_FILE 569
#define VAR_EDNS_CLIENT_STRING_OPCODE 570 #define VAR_EDNS_CLIENT_STRING 570
#define VAR_NSID 571 #define VAR_EDNS_CLIENT_STRING_OPCODE 571
#define VAR_ZONEMD_PERMISSIVE_MODE 572 #define VAR_NSID 572
#define VAR_ZONEMD_CHECK 573 #define VAR_ZONEMD_PERMISSIVE_MODE 573
#define VAR_ZONEMD_REJECT_ABSENCE 574 #define VAR_ZONEMD_CHECK 574
#define VAR_ZONEMD_REJECT_ABSENCE 575
/* Value type. */ /* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@ -704,7 +706,7 @@ union YYSTYPE
char* str; char* str;
#line 708 "util/configparser.h" #line 710 "util/configparser.h"
}; };
typedef union YYSTYPE YYSTYPE; typedef union YYSTYPE YYSTYPE;

View file

@ -139,6 +139,7 @@ extern struct config_parser_state* cfg_parser;
%token VAR_DISABLE_DNSSEC_LAME_CHECK %token VAR_DISABLE_DNSSEC_LAME_CHECK
%token VAR_IP_RATELIMIT VAR_IP_RATELIMIT_SLABS VAR_IP_RATELIMIT_SIZE %token VAR_IP_RATELIMIT VAR_IP_RATELIMIT_SLABS VAR_IP_RATELIMIT_SIZE
%token VAR_RATELIMIT VAR_RATELIMIT_SLABS VAR_RATELIMIT_SIZE %token VAR_RATELIMIT VAR_RATELIMIT_SLABS VAR_RATELIMIT_SIZE
%token VAR_OUTBOUND_MSG_RETRY
%token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN %token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN
%token VAR_IP_RATELIMIT_FACTOR VAR_RATELIMIT_FACTOR %token VAR_IP_RATELIMIT_FACTOR VAR_RATELIMIT_FACTOR
%token VAR_SEND_CLIENT_SUBNET VAR_CLIENT_SUBNET_ZONE %token VAR_SEND_CLIENT_SUBNET VAR_CLIENT_SUBNET_ZONE
@ -270,9 +271,9 @@ content_server: server_num_threads | server_verbosity | server_port |
server_ip_ratelimit_size | server_ratelimit_size | server_ip_ratelimit_size | server_ratelimit_size |
server_ratelimit_for_domain | server_ratelimit_for_domain |
server_ratelimit_below_domain | server_ratelimit_factor | server_ratelimit_below_domain | server_ratelimit_factor |
server_ip_ratelimit_factor | server_send_client_subnet | server_ip_ratelimit_factor | server_outbound_msg_retry |
server_client_subnet_zone | server_client_subnet_always_forward | server_send_client_subnet | server_client_subnet_zone |
server_client_subnet_opcode | server_client_subnet_always_forward | server_client_subnet_opcode |
server_max_client_subnet_ipv4 | server_max_client_subnet_ipv6 | server_max_client_subnet_ipv4 | server_max_client_subnet_ipv6 |
server_min_client_subnet_ipv4 | server_min_client_subnet_ipv6 | server_min_client_subnet_ipv4 | server_min_client_subnet_ipv6 |
server_max_ecs_tree_size_ipv4 | server_max_ecs_tree_size_ipv6 | server_max_ecs_tree_size_ipv4 | server_max_ecs_tree_size_ipv6 |
@ -2489,6 +2490,15 @@ server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG
free($2); free($2);
} }
; ;
server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG
{
OUTYY(("P(server_outbound_msg_retry:%s)\n", $2));
if(atoi($2) == 0 && strcmp($2, "0") != 0)
yyerror("number expected");
else cfg_parser->cfg->outbound_msg_retry = atoi($2);
free($2);
}
;
server_low_rtt: VAR_LOW_RTT STRING_ARG server_low_rtt: VAR_LOW_RTT STRING_ARG
{ {
OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));