Fix address bug
This commit is contained in:
@@ -48,9 +48,9 @@ cache-size 512
|
|||||||
# dualstack-ip-selection yes
|
# dualstack-ip-selection yes
|
||||||
|
|
||||||
# edns client subnet
|
# edns client subnet
|
||||||
# edns-client-subnet-ipv4 [ip/subnet]
|
# edns-client-subnet [ip/subnet]
|
||||||
# edns-client-subnet-ipv6 [ip/subnet]
|
# edns-client-subnet 192.168.1.1/24
|
||||||
# edns-client-subnet-ipv4 192.168.1.1/24
|
# edns-client-subnet [8::8]/56
|
||||||
|
|
||||||
# ttl for all resource record
|
# ttl for all resource record
|
||||||
# rr-ttl: ttl for all record
|
# rr-ttl: ttl for all record
|
||||||
|
|||||||
@@ -430,13 +430,15 @@ int config_address(void *data, int argc, char *argv[])
|
|||||||
memcpy(domain, begin, len);
|
memcpy(domain, begin, len);
|
||||||
domain[len] = 0;
|
domain[len] = 0;
|
||||||
|
|
||||||
if (strncmp(end + 1, "#", sizeof("#")) == 0) {
|
if (*(end + 1) == '#') {
|
||||||
if (strncmp(end + 1, "#4", sizeof("#4")) == 0) {
|
if (strncmp(end + 1, "#4", sizeof("#4")) == 0) {
|
||||||
flag = DOMAIN_FLAG_ADDR_IPV4_SOA;
|
flag = DOMAIN_FLAG_ADDR_IPV4_SOA;
|
||||||
} else if (strncmp(end + 1, "#6", sizeof("#6")) == 0) {
|
} else if (strncmp(end + 1, "#6", sizeof("#6")) == 0) {
|
||||||
flag = DOMAIN_FLAG_ADDR_IPV6_SOA;
|
flag = DOMAIN_FLAG_ADDR_IPV6_SOA;
|
||||||
} else {
|
} else if (strncmp(end + 1, "#", sizeof("#")) == 0) {
|
||||||
flag = DOMAIN_FLAG_ADDR_SOA;
|
flag = DOMAIN_FLAG_ADDR_SOA;
|
||||||
|
} else {
|
||||||
|
goto errout;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config_domain_rule_flag_set(domain, flag) != 0 ) {
|
if (config_domain_rule_flag_set(domain, flag) != 0 ) {
|
||||||
@@ -444,13 +446,15 @@ int config_address(void *data, int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
} else if (strncmp(end + 1, "-", sizeof("-")) == 0) {
|
} else if (*(end + 1) == '-') {
|
||||||
if (strncmp(end + 1, "-4", sizeof("-4")) == 0) {
|
if (strncmp(end + 1, "-4", sizeof("-4")) == 0) {
|
||||||
flag = DOMAIN_FLAG_ADDR_IPV4_IGN;
|
flag = DOMAIN_FLAG_ADDR_IPV4_IGN;
|
||||||
} else if (strncmp(end + 1, "-6", sizeof("-6")) == 0) {
|
} else if (strncmp(end + 1, "-6", sizeof("-6")) == 0) {
|
||||||
flag = DOMAIN_FLAG_ADDR_IPV6_IGN;
|
flag = DOMAIN_FLAG_ADDR_IPV6_IGN;
|
||||||
} else {
|
} else if (strncmp(end + 1, "-", sizeof("-")) == 0) {
|
||||||
flag = DOMAIN_FLAG_ADDR_IGN;
|
flag = DOMAIN_FLAG_ADDR_IGN;
|
||||||
|
} else {
|
||||||
|
goto errout;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config_domain_rule_flag_set(domain, flag) != 0 ) {
|
if (config_domain_rule_flag_set(domain, flag) != 0 ) {
|
||||||
@@ -629,7 +633,7 @@ int conf_edns_client_subnet(void *data, int argc, char *argv[])
|
|||||||
char *slash = NULL;
|
char *slash = NULL;
|
||||||
char *value = NULL;
|
char *value = NULL;
|
||||||
int subnet = 0;
|
int subnet = 0;
|
||||||
struct dns_edns_client_subnet *ecs = data;
|
struct dns_edns_client_subnet *ecs = NULL;
|
||||||
struct sockaddr_storage addr;
|
struct sockaddr_storage addr;
|
||||||
socklen_t addr_len = sizeof(addr);
|
socklen_t addr_len = sizeof(addr);
|
||||||
|
|
||||||
@@ -653,6 +657,17 @@ int conf_edns_client_subnet(void *data, int argc, char *argv[])
|
|||||||
goto errout;
|
goto errout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (addr.ss_family) {
|
||||||
|
case AF_INET:
|
||||||
|
ecs = &dns_conf_ipv4_ecs;
|
||||||
|
break;
|
||||||
|
case AF_INET6:
|
||||||
|
ecs = &dns_conf_ipv6_ecs;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
goto errout;
|
||||||
|
}
|
||||||
|
|
||||||
strncpy(ecs->ip, value, DNS_MAX_IPLEN);
|
strncpy(ecs->ip, value, DNS_MAX_IPLEN);
|
||||||
ecs->subnet = subnet;
|
ecs->subnet = subnet;
|
||||||
ecs->enable = 1;
|
ecs->enable = 1;
|
||||||
@@ -712,8 +727,7 @@ struct config_item config_item[] = {
|
|||||||
CONF_CUSTOM("blacklist-ip", config_blacklist_ip, NULL),
|
CONF_CUSTOM("blacklist-ip", config_blacklist_ip, NULL),
|
||||||
CONF_CUSTOM("bogus-nxdomain", conf_bogus_nxdomain, NULL),
|
CONF_CUSTOM("bogus-nxdomain", conf_bogus_nxdomain, NULL),
|
||||||
CONF_CUSTOM("ignore-ip", conf_ip_ignore, NULL),
|
CONF_CUSTOM("ignore-ip", conf_ip_ignore, NULL),
|
||||||
CONF_CUSTOM("edns-client-subnet-ipv4", conf_edns_client_subnet, &dns_conf_ipv6_ecs),
|
CONF_CUSTOM("edns-client-subnet", conf_edns_client_subnet, NULL),
|
||||||
CONF_CUSTOM("edns-client-subnet-ipv6", conf_edns_client_subnet, &dns_conf_ipv6_ecs),
|
|
||||||
CONF_CUSTOM("conf-file", config_addtional_file, NULL),
|
CONF_CUSTOM("conf-file", config_addtional_file, NULL),
|
||||||
CONF_END(),
|
CONF_END(),
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user