diff options
Diffstat (limited to 'util/configparser.y')
-rw-r--r-- | util/configparser.y | 69 |
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 */ |