conf: add local-ttl option

This commit is contained in:
Nick Peng
2022-08-15 21:35:08 +08:00
parent 584480dda1
commit 96d3deb595
5 changed files with 15 additions and 5 deletions

View File

@@ -124,6 +124,7 @@ int dns_conf_rr_ttl;
int dns_conf_rr_ttl_reply_max;
int dns_conf_rr_ttl_min = 600;
int dns_conf_rr_ttl_max;
int dns_conf_local_ttl;
int dns_conf_force_AAAA_SOA;
int dns_conf_force_no_cname;
int dns_conf_ipset_timeout_enable;
@@ -1907,6 +1908,7 @@ static struct config_item _config_item[] = {
CONF_INT("rr-ttl-min", &dns_conf_rr_ttl_min, 0, CONF_INT_MAX),
CONF_INT("rr-ttl-max", &dns_conf_rr_ttl_max, 0, CONF_INT_MAX),
CONF_INT("rr-ttl-reply-max", &dns_conf_rr_ttl_reply_max, 0, CONF_INT_MAX),
CONF_INT("local-ttl", &dns_conf_local_ttl, 0, CONF_INT_MAX),
CONF_INT("max-reply-ip-num", &dns_conf_max_reply_ip_num, 1, CONF_INT_MAX),
CONF_ENUM("response-mode", &dns_conf_response_mode, &dns_conf_response_mode_enum),
CONF_YESNO("force-AAAA-SOA", &dns_conf_force_AAAA_SOA),
@@ -2091,6 +2093,10 @@ static int _dns_conf_load_post(void)
dns_conf_response_mode_enum[dns_conf_response_mode].name);
}
if (dns_conf_local_ttl == 0) {
dns_conf_local_ttl = dns_conf_rr_ttl_min;
}
return 0;
}

View File

@@ -312,6 +312,7 @@ extern int dns_conf_rr_ttl_min;
extern int dns_conf_rr_ttl_max;
extern int dns_conf_force_AAAA_SOA;
extern int dns_conf_ipset_timeout_enable;
extern int dns_conf_local_ttl;
extern int dns_conf_force_no_cname;

View File

@@ -3413,7 +3413,7 @@ static int _dns_server_process_address(struct dns_request *request)
}
request->rcode = DNS_RC_NOERROR;
request->ip_ttl = 600;
request->ip_ttl = dns_conf_local_ttl;
request->has_ip = 1;
struct dns_server_post_context context;
@@ -3934,7 +3934,7 @@ static int _dns_server_process_host(struct dns_request *request)
}
request->rcode = DNS_RC_NOERROR;
request->ip_ttl = 600;
request->ip_ttl = dns_conf_local_ttl;
request->has_ip = 1;
struct dns_server_post_context context;
@@ -4040,9 +4040,6 @@ static int _dns_server_do_query(struct dns_request *request)
safe_strncpy(request->dns_group_name, group_name, DNS_GROUP_NAME_LEN);
}
if (_dns_server_process_host(request) == 0) {
goto clean_exit;
}
_dns_server_set_dualstack_selection(request);
@@ -4060,6 +4057,10 @@ static int _dns_server_do_query(struct dns_request *request)
goto clean_exit;
}
if (_dns_server_process_host(request) == 0) {
goto clean_exit;
}
/* process qtype soa */
if (_dns_server_qtype_soa(request) == 0) {
goto clean_exit;