summaryrefslogtreecommitdiff
path: root/util/configparser.y
diff options
context:
space:
mode:
Diffstat (limited to 'util/configparser.y')
-rw-r--r--util/configparser.y69
1 files changed, 67 insertions, 2 deletions
diff --git a/util/configparser.y b/util/configparser.y
index 7c8161442ccd..7b41b1d767d6 100644
--- a/util/configparser.y
+++ b/util/configparser.y
@@ -144,8 +144,11 @@ extern struct config_parser_state* cfg_parser;
%token VAR_USE_SYSTEMD VAR_SHM_ENABLE VAR_SHM_KEY
%token VAR_DNSCRYPT VAR_DNSCRYPT_ENABLE VAR_DNSCRYPT_PORT VAR_DNSCRYPT_PROVIDER
%token VAR_DNSCRYPT_SECRET_KEY VAR_DNSCRYPT_PROVIDER_CERT
+%token VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE
+%token VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS
%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
%%
toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -153,7 +156,8 @@ toplevelvar: serverstart contents_server | stubstart contents_stub |
forwardstart contents_forward | pythonstart contents_py |
rcstart contents_rc | dtstart contents_dt | viewstart
contents_view |
- dnscstart contents_dnsc
+ dnscstart contents_dnsc |
+ cachedbstart contents_cachedb
;
/* server: declaration */
@@ -2321,7 +2325,9 @@ contents_dnsc: contents_dnsc content_dnsc
| ;
content_dnsc:
dnsc_dnscrypt_enable | dnsc_dnscrypt_port | dnsc_dnscrypt_provider |
- dnsc_dnscrypt_secret_key | dnsc_dnscrypt_provider_cert
+ dnsc_dnscrypt_secret_key | dnsc_dnscrypt_provider_cert |
+ dnsc_dnscrypt_shared_secret_cache_size |
+ dnsc_dnscrypt_shared_secret_cache_slabs
;
dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG
{
@@ -2364,6 +2370,65 @@ dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG
fatal_exit("out of memory adding dnscrypt-secret-key");
}
;
+dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG
+ {
+ OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", $2));
+ if(!cfg_parse_memsize($2, &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
+ yyerror("memory size expected");
+ free($2);
+ }
+ ;
+dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG
+ {
+ OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", $2));
+ if(atoi($2) == 0)
+ yyerror("number expected");
+ else {
+ cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi($2);
+ if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs))
+ yyerror("must be a power of 2");
+ }
+ free($2);
+ }
+ ;
+cachedbstart: VAR_CACHEDB
+ {
+ OUTYY(("\nP(cachedb:)\n"));
+ }
+ ;
+contents_cachedb: contents_cachedb content_cachedb
+ | ;
+content_cachedb: cachedb_backend_name | cachedb_secret_seed
+ ;
+cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG
+ {
+ #ifdef USE_CACHEDB
+ OUTYY(("P(backend:%s)\n", $2));
+ if(cfg_parser->cfg->cachedb_backend)
+ yyerror("cachedb backend override, there must be one "
+ "backend");
+ free(cfg_parser->cfg->cachedb_backend);
+ cfg_parser->cfg->cachedb_backend = $2;
+ #else
+ OUTYY(("P(Compiled without cachedb, ignoring)\n"));
+ #endif
+ }
+ ;
+cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG
+ {
+ #ifdef USE_CACHEDB
+ OUTYY(("P(secret-seed:%s)\n", $2));
+ if(cfg_parser->cfg->cachedb_secret)
+ yyerror("cachedb secret-seed override, there must be "
+ "only one secret");
+ free(cfg_parser->cfg->cachedb_secret);
+ cfg_parser->cfg->cachedb_secret = $2;
+ #else
+ OUTYY(("P(Compiled without cachedb, ignoring)\n"));
+ free($2);
+ #endif
+ }
+ ;
%%
/* parse helper routines could be here */