aboutsummaryrefslogtreecommitdiff
path: root/contrib/unbound/util/configparser.y
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/unbound/util/configparser.y')
-rw-r--r--contrib/unbound/util/configparser.y87
1 files changed, 80 insertions, 7 deletions
diff --git a/contrib/unbound/util/configparser.y b/contrib/unbound/util/configparser.y
index 4d6b5e3fba31..272a97969397 100644
--- a/contrib/unbound/util/configparser.y
+++ b/contrib/unbound/util/configparser.y
@@ -151,7 +151,7 @@ extern struct config_parser_state* cfg_parser;
%token VAR_ACCESS_CONTROL_TAG_DATA VAR_VIEW VAR_ACCESS_CONTROL_VIEW
%token VAR_VIEW_FIRST VAR_SERVE_EXPIRED VAR_SERVE_EXPIRED_TTL
%token VAR_SERVE_EXPIRED_TTL_RESET VAR_SERVE_EXPIRED_REPLY_TTL
-%token VAR_SERVE_EXPIRED_CLIENT_TIMEOUT VAR_FAKE_DSA
+%token VAR_SERVE_EXPIRED_CLIENT_TIMEOUT VAR_SERVE_ORIGINAL_TTL VAR_FAKE_DSA
%token VAR_FAKE_SHA1 VAR_LOG_IDENTITY VAR_HIDE_TRUSTANCHOR
%token VAR_TRUST_ANCHOR_SIGNALING VAR_AGGRESSIVE_NSEC VAR_USE_SYSTEMD
%token VAR_SHM_ENABLE VAR_SHM_KEY VAR_ROOT_KEY_SENTINEL
@@ -162,6 +162,8 @@ extern struct config_parser_state* cfg_parser;
%token VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS
%token VAR_DNSCRYPT_NONCE_CACHE_SIZE
%token VAR_DNSCRYPT_NONCE_CACHE_SLABS
+%token VAR_PAD_RESPONSES VAR_PAD_RESPONSES_BLOCK_SIZE
+%token VAR_PAD_QUERIES VAR_PAD_QUERIES_BLOCK_SIZE
%token VAR_IPSECMOD_ENABLED VAR_IPSECMOD_HOOK VAR_IPSECMOD_IGNORE_BOGUS
%token VAR_IPSECMOD_MAX_TTL VAR_IPSECMOD_WHITELIST VAR_IPSECMOD_STRICT
%token VAR_CACHEDB VAR_CACHEDB_BACKEND VAR_CACHEDB_SECRETSEED
@@ -179,7 +181,7 @@ extern struct config_parser_state* cfg_parser;
%token VAR_TLS_SESSION_TICKET_KEYS VAR_RPZ VAR_TAGS VAR_RPZ_ACTION_OVERRIDE
%token VAR_RPZ_CNAME_OVERRIDE VAR_RPZ_LOG VAR_RPZ_LOG_NAME
%token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_STRING
-%token VAR_EDNS_CLIENT_STRING_OPCODE
+%token VAR_EDNS_CLIENT_STRING_OPCODE VAR_NSID
%%
toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -274,10 +276,14 @@ content_server: server_num_threads | server_verbosity | server_port |
server_disable_dnssec_lame_check | server_access_control_tag |
server_local_zone_override | server_access_control_tag_action |
server_access_control_tag_data | server_access_control_view |
- server_qname_minimisation_strict | server_serve_expired |
+ server_qname_minimisation_strict |
+ server_pad_responses | server_pad_responses_block_size |
+ server_pad_queries | server_pad_queries_block_size |
+ server_serve_expired |
server_serve_expired_ttl | server_serve_expired_ttl_reset |
server_serve_expired_reply_ttl | server_serve_expired_client_timeout |
- server_fake_dsa | server_log_identity | server_use_systemd |
+ server_serve_original_ttl | server_fake_dsa |
+ server_log_identity | server_use_systemd |
server_response_ip_tag | server_response_ip | server_response_ip_data |
server_shm_enable | server_shm_key | server_fake_sha1 |
server_hide_trustanchor | server_trust_anchor_signaling |
@@ -293,7 +299,7 @@ content_server: server_num_threads | server_verbosity | server_port |
server_stream_wait_size | server_tls_ciphers |
server_tls_ciphersuites | server_tls_session_ticket_keys |
server_tls_use_sni | server_edns_client_string |
- server_edns_client_string_opcode
+ server_edns_client_string_opcode | server_nsid
;
stubstart: VAR_STUB_ZONE
{
@@ -1304,6 +1310,22 @@ server_version: VAR_VERSION STRING_ARG
cfg_parser->cfg->version = $2;
}
;
+server_nsid: VAR_NSID STRING_ARG
+ {
+ OUTYY(("P(server_nsid:%s)\n", $2));
+ free(cfg_parser->cfg->nsid_cfg_str);
+ cfg_parser->cfg->nsid_cfg_str = $2;
+ free(cfg_parser->cfg->nsid);
+ cfg_parser->cfg->nsid = NULL;
+ cfg_parser->cfg->nsid_len = 0;
+ if (*$2 == 0)
+ ; /* pass; empty string is not setting nsid */
+ else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid(
+ $2, &cfg_parser->cfg->nsid_len)))
+ yyerror("the NSID must be either a hex string or an "
+ "ascii character string prepended with ascii_.");
+ }
+ ;
server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG
{
OUTYY(("P(server_so_rcvbuf:%s)\n", $2));
@@ -1913,6 +1935,15 @@ server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG
free($2);
}
;
+server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG
+ {
+ OUTYY(("P(server_serve_original_ttl:%s)\n", $2));
+ if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+ yyerror("expected yes or no.");
+ else cfg_parser->cfg->serve_original_ttl = (strcmp($2, "yes")==0);
+ free($2);
+ }
+ ;
server_fake_dsa: VAR_FAKE_DSA STRING_ARG
{
OUTYY(("P(server_fake_dsa:%s)\n", $2));
@@ -2030,6 +2061,9 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG
&& strcmp($3, "always_transparent")!=0
&& strcmp($3, "always_refuse")!=0
&& strcmp($3, "always_nxdomain")!=0
+ && strcmp($3, "always_nodata")!=0
+ && strcmp($3, "always_deny")!=0
+ && strcmp($3, "always_null")!=0
&& strcmp($3, "noview")!=0
&& strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0
&& strcmp($3, "inform_redirect") != 0
@@ -2038,8 +2072,9 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG
"refuse, redirect, transparent, "
"typetransparent, inform, inform_deny, "
"inform_redirect, always_transparent, "
- "always_refuse, always_nxdomain, noview "
- ", nodefault or ipset");
+ "always_refuse, always_nxdomain, "
+ "always_nodata, always_deny, always_null, "
+ "noview, nodefault or ipset");
free($2);
free($3);
} else if(strcmp($3, "nodefault")==0) {
@@ -2416,6 +2451,44 @@ server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG
free($2);
}
;
+server_pad_responses: VAR_PAD_RESPONSES STRING_ARG
+ {
+ OUTYY(("P(server_pad_responses:%s)\n", $2));
+ if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+ yyerror("expected yes or no.");
+ else cfg_parser->cfg->pad_responses =
+ (strcmp($2, "yes")==0);
+ free($2);
+ }
+ ;
+server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG
+ {
+ OUTYY(("P(server_pad_responses_block_size:%s)\n", $2));
+ if(atoi($2) == 0)
+ yyerror("number expected");
+ else cfg_parser->cfg->pad_responses_block_size = atoi($2);
+ free($2);
+ }
+ ;
+server_pad_queries: VAR_PAD_QUERIES STRING_ARG
+ {
+ OUTYY(("P(server_pad_queries:%s)\n", $2));
+ if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+ yyerror("expected yes or no.");
+ else cfg_parser->cfg->pad_queries =
+ (strcmp($2, "yes")==0);
+ free($2);
+ }
+ ;
+server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG
+ {
+ OUTYY(("P(server_pad_queries_block_size:%s)\n", $2));
+ if(atoi($2) == 0)
+ yyerror("number expected");
+ else cfg_parser->cfg->pad_queries_block_size = atoi($2);
+ free($2);
+ }
+ ;
server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG
{
#ifdef USE_IPSECMOD