|
52 | 52 | #define DNS_SERVER_TMOUT_TTL (5 * 60) |
53 | 53 | #define DNS_SERVER_FAIL_TTL (60) |
54 | 54 | #define DNS_SERVER_SOA_TTL (30) |
| 55 | +#define DNS_SERVER_ADDR_TTL (60) |
55 | 56 | #define DNS_CONN_BUFF_SIZE 4096 |
56 | 57 | #define DNS_REQUEST_MAX_TIMEOUT 950 |
57 | 58 | #define DNS_PING_TIMEOUT (DNS_REQUEST_MAX_TIMEOUT) |
@@ -3888,6 +3889,34 @@ static int _dns_server_pre_process_rule_flags(struct dns_request *request) |
3888 | 3889 | return 0; |
3889 | 3890 | } |
3890 | 3891 |
|
| 3892 | +static int _dns_server_get_local_ttl(struct dns_request *request) |
| 3893 | +{ |
| 3894 | + struct dns_ttl_rule *ttl_rule; |
| 3895 | + |
| 3896 | + /* get domain rule flag */ |
| 3897 | + ttl_rule = _dns_server_get_dns_rule(request, DOMAIN_RULE_TTL); |
| 3898 | + if (ttl_rule != NULL) { |
| 3899 | + if (ttl_rule->ttl > 0) { |
| 3900 | + return ttl_rule->ttl; |
| 3901 | + } |
| 3902 | + } |
| 3903 | + |
| 3904 | + if (dns_conf_local_ttl > 0) { |
| 3905 | + return dns_conf_local_ttl; |
| 3906 | + } |
| 3907 | + |
| 3908 | + if (dns_conf_rr_ttl > 0) { |
| 3909 | + return dns_conf_rr_ttl; |
| 3910 | + } |
| 3911 | + |
| 3912 | + if (dns_conf_rr_ttl_min > 0) { |
| 3913 | + return dns_conf_rr_ttl_min; |
| 3914 | + } |
| 3915 | + |
| 3916 | + return DNS_SERVER_ADDR_TTL; |
| 3917 | +} |
| 3918 | + |
| 3919 | + |
3891 | 3920 | static int _dns_server_process_address(struct dns_request *request) |
3892 | 3921 | { |
3893 | 3922 | struct dns_rule_address_IPV4 *address_ipv4 = NULL; |
@@ -3919,7 +3948,7 @@ static int _dns_server_process_address(struct dns_request *request) |
3919 | 3948 | } |
3920 | 3949 |
|
3921 | 3950 | request->rcode = DNS_RC_NOERROR; |
3922 | | - request->ip_ttl = dns_conf_local_ttl; |
| 3951 | + request->ip_ttl = _dns_server_get_local_ttl(request); |
3923 | 3952 | request->has_ip = 1; |
3924 | 3953 |
|
3925 | 3954 | struct dns_server_post_context context; |
|
0 commit comments