ecs: Optimize ecs-subnet configuration method
This commit is contained in:
@@ -3414,9 +3414,11 @@ static int _dns_client_setup_server_packet(struct dns_server_info *server_info,
|
|||||||
|
|
||||||
dns_set_OPT_payload_size(packet, DNS_IN_PACKSIZE);
|
dns_set_OPT_payload_size(packet, DNS_IN_PACKSIZE);
|
||||||
/* dns_add_OPT_TCP_KEEPALIVE(packet, 600); */
|
/* dns_add_OPT_TCP_KEEPALIVE(packet, 600); */
|
||||||
if (query->qtype == DNS_T_A && server_info->ecs_ipv4.enable) {
|
if ((query->qtype == DNS_T_A && server_info->ecs_ipv4.enable) ||
|
||||||
|
(query->qtype == DNS_T_AAAA && server_info->ecs_ipv6.enable == 0 && server_info->ecs_ipv4.enable)) {
|
||||||
dns_add_OPT_ECS(packet, &server_info->ecs_ipv4.ecs);
|
dns_add_OPT_ECS(packet, &server_info->ecs_ipv4.ecs);
|
||||||
} else if (query->qtype == DNS_T_AAAA && server_info->ecs_ipv6.enable) {
|
} else if ((query->qtype == DNS_T_AAAA && server_info->ecs_ipv6.enable) ||
|
||||||
|
(query->qtype == DNS_T_A && server_info->ecs_ipv4.enable == 0 && server_info->ecs_ipv6.enable)) {
|
||||||
dns_add_OPT_ECS(packet, &server_info->ecs_ipv6.ecs);
|
dns_add_OPT_ECS(packet, &server_info->ecs_ipv6.ecs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2562,9 +2562,6 @@ static int _conf_client_subnet(char *subnet, struct dns_edns_client_subnet *ipv4
|
|||||||
*slash = 0;
|
*slash = 0;
|
||||||
slash++;
|
slash++;
|
||||||
subnet_len = atoi(slash);
|
subnet_len = atoi(slash);
|
||||||
if (subnet_len < 0 || subnet_len > 128) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getaddr_by_host(str_subnet, (struct sockaddr *)&addr, &addr_len) != 0) {
|
if (getaddr_by_host(str_subnet, (struct sockaddr *)&addr, &addr_len) != 0) {
|
||||||
@@ -2573,9 +2570,23 @@ static int _conf_client_subnet(char *subnet, struct dns_edns_client_subnet *ipv4
|
|||||||
|
|
||||||
switch (addr.ss_family) {
|
switch (addr.ss_family) {
|
||||||
case AF_INET:
|
case AF_INET:
|
||||||
|
if (subnet_len < 0 || subnet_len > 32) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (subnet_len == 0) {
|
||||||
|
subnet_len = 32;
|
||||||
|
}
|
||||||
ecs = ipv4_ecs;
|
ecs = ipv4_ecs;
|
||||||
break;
|
break;
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
|
if (subnet_len < 0 || subnet_len > 128) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (subnet_len == 0) {
|
||||||
|
subnet_len = 128;
|
||||||
|
}
|
||||||
ecs = ipv6_ecs;
|
ecs = ipv6_ecs;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user