|
@@ -40,7 +40,7 @@ int _dns_client_create_socket_udp_mdns(struct dns_server_info *server_info)
|
|
|
const int priority = SOCKET_PRIORITY;
|
|
|
const int ip_tos = SOCKET_IP_TOS;
|
|
|
|
|
|
- fd = socket(AF_INET, SOCK_DGRAM, 0);
|
|
|
+ fd = socket(server_info->ai_family, SOCK_DGRAM, 0);
|
|
|
if (fd < 0) {
|
|
|
tlog(TLOG_ERROR, "create socket failed, %s", strerror(errno));
|
|
|
goto errout;
|
|
@@ -165,7 +165,7 @@ int _dns_client_add_mdns_server(void)
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- if (AF_INET != ifa->ifa_addr->sa_family) {
|
|
|
+ if (AF_INET != ifa->ifa_addr->sa_family && AF_INET6 != ifa->ifa_addr->sa_family) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
@@ -182,16 +182,19 @@ int _dns_client_add_mdns_server(void)
|
|
|
}
|
|
|
|
|
|
safe_strncpy(server_flags.ifname, ifa->ifa_name, sizeof(server_flags.ifname));
|
|
|
- ret = _dns_client_server_add(DNS_MDNS_IP, "", DNS_MDNS_PORT, DNS_SERVER_MDNS, &server_flags);
|
|
|
- if (ret != 0) {
|
|
|
- tlog(TLOG_ERROR, "add mdns server failed.");
|
|
|
- goto errout;
|
|
|
- }
|
|
|
-
|
|
|
- if (dns_client_add_to_group(DNS_SERVER_GROUP_MDNS, DNS_MDNS_IP, DNS_MDNS_PORT, DNS_SERVER_MDNS,
|
|
|
- &server_flags) != 0) {
|
|
|
- tlog(TLOG_ERROR, "add mdns server to group failed.");
|
|
|
- goto errout;
|
|
|
+ char *dns_ip[] = {DNS_MDNS_IP, DNS_MDNS_IP6, 0};
|
|
|
+ for (int i = 0; dns_ip[i] != NULL; i++) {
|
|
|
+ ret = _dns_client_server_add(dns_ip[i], "", DNS_MDNS_PORT, DNS_SERVER_MDNS, &server_flags);
|
|
|
+ if (ret != 0) {
|
|
|
+ tlog(TLOG_ERROR, "add mdns server failed for %s.", dns_ip[i]);
|
|
|
+ goto errout;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (dns_client_add_to_group(DNS_SERVER_GROUP_MDNS, dns_ip[i], DNS_MDNS_PORT, DNS_SERVER_MDNS,
|
|
|
+ &server_flags) != 0) {
|
|
|
+ tlog(TLOG_ERROR, "add mdns server to group failed for %s.", dns_ip[i]);
|
|
|
+ goto errout;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|