bind-option: support force aaaa soa bind option, secondary DNS support Force-AAAA-SOA options

This commit is contained in:
Nick Peng
2020-02-16 13:01:45 +08:00
parent 3cf2d35c13
commit 5f9167cf07
9 changed files with 49 additions and 18 deletions

View File

@@ -853,6 +853,7 @@ static int _config_bind_ip(int argc, char *argv[], DNS_BIND_TYPE type)
{"no-speed-check", no_argument, NULL, 'S'},
{"no-cache", no_argument, NULL, 'C'},
{"no-dualstack-selection", no_argument, NULL, 'D'},
{"force-aaaa-soa", no_argument, NULL, 'F'},
{NULL, no_argument, NULL, 0}
};
/* clang-format on */
@@ -918,6 +919,10 @@ static int _config_bind_ip(int argc, char *argv[], DNS_BIND_TYPE type)
server_flag |= BIND_FLAG_NO_DUALSTACK_SELECTION;
break;
}
case 'F': {
server_flag |= BIND_FLAG_FORCE_AAAA_SOA;
break;
}
default:
break;
}

View File

@@ -90,6 +90,7 @@ typedef enum {
#define BIND_FLAG_NO_SPEED_CHECK (1 << 5)
#define BIND_FLAG_NO_CACHE (1 << 6)
#define BIND_FLAG_NO_DUALSTACK_SELECTION (1 << 7)
#define BIND_FLAG_FORCE_AAAA_SOA (1 << 8)
struct dns_rule_flags {
unsigned int flags;

View File

@@ -261,8 +261,10 @@ static int _dns_server_is_return_soa(struct dns_request *request)
return 0;
}
if (dns_conf_force_AAAA_SOA == 1 && request->qtype == DNS_T_AAAA) {
return 1;
if (request->qtype == DNS_T_AAAA) {
if (_dns_server_has_bind_flag(request, BIND_FLAG_FORCE_AAAA_SOA) == 0 || dns_conf_force_AAAA_SOA == 1) {
return 1;
}
}
rule_flag = request->domain_rule.rules[DOMAIN_RULE_FLAGS];