summaryrefslogtreecommitdiff
path: root/util/config_file.c
diff options
context:
space:
mode:
authorCy Schubert <cy@FreeBSD.org>2020-05-21 05:01:52 +0000
committerCy Schubert <cy@FreeBSD.org>2020-05-21 05:01:52 +0000
commit6a53c00e64c4cf911eb00846733d9e6a47b2e7f4 (patch)
tree60a7720d2d4edfe62b094e2665743e8879ebb911 /util/config_file.c
parente2fe726866d062155f6b1aae749375475ef19191 (diff)
Diffstat (limited to 'util/config_file.c')
-rw-r--r--util/config_file.c49
1 files changed, 40 insertions, 9 deletions
diff --git a/util/config_file.c b/util/config_file.c
index 119b222384430..52ca5a184618e 100644
--- a/util/config_file.c
+++ b/util/config_file.c
@@ -246,6 +246,8 @@ config_create(void)
cfg->serve_expired = 0;
cfg->serve_expired_ttl = 0;
cfg->serve_expired_ttl_reset = 0;
+ cfg->serve_expired_reply_ttl = 30;
+ cfg->serve_expired_client_timeout = 0;
cfg->add_holddown = 30*24*3600;
cfg->del_holddown = 30*24*3600;
cfg->keep_missing = 366*24*3600; /* one year plus a little leeway */
@@ -327,9 +329,14 @@ config_create(void)
cfg->ipsecmod_strict = 0;
#endif
#ifdef USE_CACHEDB
- cfg->cachedb_backend = NULL;
- cfg->cachedb_secret = NULL;
-#endif
+ if(!(cfg->cachedb_backend = strdup("testframe"))) goto error_exit;
+ if(!(cfg->cachedb_secret = strdup("default"))) goto error_exit;
+#ifdef USE_REDIS
+ if(!(cfg->redis_server_host = strdup("127.0.0.1"))) goto error_exit;
+ cfg->redis_timeout = 100;
+ cfg->redis_server_port = 6379;
+#endif /* USE_REDIS */
+#endif /* USE_CACHEDB */
#ifdef USE_IPSET
cfg->ipset_name_v4 = NULL;
cfg->ipset_name_v6 = NULL;
@@ -581,10 +588,15 @@ int config_set_option(struct config_file* cfg, const char* opt,
else S_YNO("val-permissive-mode:", val_permissive_mode)
else S_YNO("aggressive-nsec:", aggressive_nsec)
else S_YNO("ignore-cd-flag:", ignore_cd)
- else S_YNO("serve-expired:", serve_expired)
- else if(strcmp(opt, "serve_expired_ttl:") == 0)
+ else if(strcmp(opt, "serve-expired:") == 0)
+ { IS_YES_OR_NO; cfg->serve_expired = (strcmp(val, "yes") == 0);
+ SERVE_EXPIRED = cfg->serve_expired; }
+ else if(strcmp(opt, "serve-expired-ttl:") == 0)
{ IS_NUMBER_OR_ZERO; cfg->serve_expired_ttl = atoi(val); SERVE_EXPIRED_TTL=(time_t)cfg->serve_expired_ttl;}
else S_YNO("serve-expired-ttl-reset:", serve_expired_ttl_reset)
+ else if(strcmp(opt, "serve-expired-reply-ttl:") == 0)
+ { IS_NUMBER_OR_ZERO; cfg->serve_expired_reply_ttl = atoi(val); SERVE_EXPIRED_REPLY_TTL=(time_t)cfg->serve_expired_reply_ttl;}
+ else S_NUMBER_OR_ZERO("serve-expired-client-timeout:", serve_expired_client_timeout)
else S_STR("val-nsec3-keysize-iterations:", val_nsec3_key_iterations)
else S_UNSIGNED_OR_ZERO("add-holddown:", add_holddown)
else S_UNSIGNED_OR_ZERO("del-holddown:", del_holddown)
@@ -977,6 +989,8 @@ config_get_option(struct config_file* cfg, const char* opt,
else O_YNO(opt, "serve-expired", serve_expired)
else O_DEC(opt, "serve-expired-ttl", serve_expired_ttl)
else O_YNO(opt, "serve-expired-ttl-reset", serve_expired_ttl_reset)
+ else O_DEC(opt, "serve-expired-reply-ttl", serve_expired_reply_ttl)
+ else O_DEC(opt, "serve-expired-client-timeout", serve_expired_client_timeout)
else O_STR(opt, "val-nsec3-keysize-iterations",val_nsec3_key_iterations)
else O_UNS(opt, "add-holddown", add_holddown)
else O_UNS(opt, "del-holddown", del_holddown)
@@ -1098,7 +1112,12 @@ config_get_option(struct config_file* cfg, const char* opt,
#ifdef USE_CACHEDB
else O_STR(opt, "backend", cachedb_backend)
else O_STR(opt, "secret-seed", cachedb_secret)
-#endif
+#ifdef USE_REDIS
+ else O_STR(opt, "redis-server-host", redis_server_host)
+ else O_DEC(opt, "redis-server-port", redis_server_port)
+ else O_DEC(opt, "redis-timeout", redis_timeout)
+#endif /* USE_REDIS */
+#endif /* USE_CACHEDB */
#ifdef USE_IPSET
else O_STR(opt, "name-v4", ipset_name_v4)
else O_STR(opt, "name-v6", ipset_name_v6)
@@ -1279,6 +1298,10 @@ config_delauth(struct config_auth* p)
config_delstrlist(p->urls);
config_delstrlist(p->allow_notify);
free(p->zonefile);
+ free(p->rpz_taglist);
+ free(p->rpz_action_override);
+ free(p->rpz_cname);
+ free(p->rpz_log_name);
free(p);
}
@@ -1381,7 +1404,10 @@ config_delete(struct config_file* cfg)
config_delstrlist(cfg->tls_session_ticket_keys.first);
free(cfg->tls_ciphers);
free(cfg->tls_ciphersuites);
- free(cfg->log_identity);
+ if(cfg->log_identity) {
+ log_ident_revert_to_default();
+ free(cfg->log_identity);
+ }
config_del_strarray(cfg->ifs, cfg->num_ifs);
config_del_strarray(cfg->out_ifs, cfg->num_out_ifs);
config_delstubs(cfg->stubs);
@@ -1444,7 +1470,10 @@ config_delete(struct config_file* cfg)
#ifdef USE_CACHEDB
free(cfg->cachedb_backend);
free(cfg->cachedb_secret);
-#endif
+#ifdef USE_REDIS
+ free(cfg->redis_server_host);
+#endif /* USE_REDIS */
+#endif /* USE_CACHEDB */
#ifdef USE_IPSET
free(cfg->ipset_name_v4);
free(cfg->ipset_name_v6);
@@ -1942,7 +1971,7 @@ char* config_taglist2str(struct config_file* cfg, uint8_t* taglist,
return strdup(buf);
}
-int taglist_intersect(uint8_t* list1, size_t list1len, uint8_t* list2,
+int taglist_intersect(uint8_t* list1, size_t list1len, const uint8_t* list2,
size_t list2len)
{
size_t i;
@@ -1960,7 +1989,9 @@ config_apply(struct config_file* config)
{
MAX_TTL = (time_t)config->max_ttl;
MIN_TTL = (time_t)config->min_ttl;
+ SERVE_EXPIRED = config->serve_expired;
SERVE_EXPIRED_TTL = (time_t)config->serve_expired_ttl;
+ SERVE_EXPIRED_REPLY_TTL = (time_t)config->serve_expired_reply_ttl;
MAX_NEG_TTL = (time_t)config->max_negative_ttl;
RTT_MIN_TIMEOUT = config->infra_cache_min_rtt;
EDNS_ADVERTISED_SIZE = (uint16_t)config->edns_buffer_size;