diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d178f90137..ab169d9afd3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2280,6 +2280,7 @@ add_library(grpc src/core/lib/event_engine/utils.cc src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc src/core/lib/event_engine/windows/iocp.cc + src/core/lib/event_engine/windows/native_windows_dns_resolver.cc src/core/lib/event_engine/windows/win_socket.cc src/core/lib/event_engine/windows/windows_endpoint.cc src/core/lib/event_engine/windows/windows_engine.cc @@ -3011,6 +3012,7 @@ add_library(grpc_unsecure src/core/lib/event_engine/utils.cc src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc src/core/lib/event_engine/windows/iocp.cc + src/core/lib/event_engine/windows/native_windows_dns_resolver.cc src/core/lib/event_engine/windows/win_socket.cc src/core/lib/event_engine/windows/windows_endpoint.cc src/core/lib/event_engine/windows/windows_engine.cc @@ -5000,6 +5002,7 @@ add_library(grpc_authorization_provider src/core/lib/event_engine/utils.cc src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc src/core/lib/event_engine/windows/iocp.cc + src/core/lib/event_engine/windows/native_windows_dns_resolver.cc src/core/lib/event_engine/windows/win_socket.cc src/core/lib/event_engine/windows/windows_endpoint.cc src/core/lib/event_engine/windows/windows_engine.cc @@ -24761,6 +24764,7 @@ add_executable(test_core_transport_chaotic_good_frame_test src/core/lib/event_engine/utils.cc src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc src/core/lib/event_engine/windows/iocp.cc + src/core/lib/event_engine/windows/native_windows_dns_resolver.cc src/core/lib/event_engine/windows/win_socket.cc src/core/lib/event_engine/windows/windows_endpoint.cc src/core/lib/event_engine/windows/windows_engine.cc diff --git a/Makefile b/Makefile index 0071fee977c..b7224ba266b 100644 --- a/Makefile +++ b/Makefile @@ -1480,6 +1480,7 @@ LIBGRPC_SRC = \ src/core/lib/event_engine/utils.cc \ src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc \ src/core/lib/event_engine/windows/iocp.cc \ + src/core/lib/event_engine/windows/native_windows_dns_resolver.cc \ src/core/lib/event_engine/windows/win_socket.cc \ src/core/lib/event_engine/windows/windows_endpoint.cc \ src/core/lib/event_engine/windows/windows_engine.cc \ @@ -2061,6 +2062,7 @@ LIBGRPC_UNSECURE_SRC = \ src/core/lib/event_engine/utils.cc \ src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc \ src/core/lib/event_engine/windows/iocp.cc \ + src/core/lib/event_engine/windows/native_windows_dns_resolver.cc \ src/core/lib/event_engine/windows/win_socket.cc \ src/core/lib/event_engine/windows/windows_endpoint.cc \ src/core/lib/event_engine/windows/windows_engine.cc \ diff --git a/Package.swift b/Package.swift index 1f8a60eb738..06646df8e87 100644 --- a/Package.swift +++ b/Package.swift @@ -1341,6 +1341,8 @@ let package = Package( "src/core/lib/event_engine/windows/grpc_polled_fd_windows.h", "src/core/lib/event_engine/windows/iocp.cc", "src/core/lib/event_engine/windows/iocp.h", + "src/core/lib/event_engine/windows/native_windows_dns_resolver.cc", + "src/core/lib/event_engine/windows/native_windows_dns_resolver.h", "src/core/lib/event_engine/windows/win_socket.cc", "src/core/lib/event_engine/windows/win_socket.h", "src/core/lib/event_engine/windows/windows_endpoint.cc", diff --git a/build_autogenerated.yaml b/build_autogenerated.yaml index 46cd87ce1d7..92437f0ce8a 100644 --- a/build_autogenerated.yaml +++ b/build_autogenerated.yaml @@ -911,6 +911,7 @@ libs: - src/core/lib/event_engine/utils.h - src/core/lib/event_engine/windows/grpc_polled_fd_windows.h - src/core/lib/event_engine/windows/iocp.h + - src/core/lib/event_engine/windows/native_windows_dns_resolver.h - src/core/lib/event_engine/windows/win_socket.h - src/core/lib/event_engine/windows/windows_endpoint.h - src/core/lib/event_engine/windows/windows_engine.h @@ -1739,6 +1740,7 @@ libs: - src/core/lib/event_engine/utils.cc - src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc - src/core/lib/event_engine/windows/iocp.cc + - src/core/lib/event_engine/windows/native_windows_dns_resolver.cc - src/core/lib/event_engine/windows/win_socket.cc - src/core/lib/event_engine/windows/windows_endpoint.cc - src/core/lib/event_engine/windows/windows_engine.cc @@ -2376,6 +2378,7 @@ libs: - src/core/lib/event_engine/utils.h - src/core/lib/event_engine/windows/grpc_polled_fd_windows.h - src/core/lib/event_engine/windows/iocp.h + - src/core/lib/event_engine/windows/native_windows_dns_resolver.h - src/core/lib/event_engine/windows/win_socket.h - src/core/lib/event_engine/windows/windows_endpoint.h - src/core/lib/event_engine/windows/windows_engine.h @@ -2827,6 +2830,7 @@ libs: - src/core/lib/event_engine/utils.cc - src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc - src/core/lib/event_engine/windows/iocp.cc + - src/core/lib/event_engine/windows/native_windows_dns_resolver.cc - src/core/lib/event_engine/windows/win_socket.cc - src/core/lib/event_engine/windows/windows_endpoint.cc - src/core/lib/event_engine/windows/windows_engine.cc @@ -4518,6 +4522,7 @@ libs: - src/core/lib/event_engine/utils.h - src/core/lib/event_engine/windows/grpc_polled_fd_windows.h - src/core/lib/event_engine/windows/iocp.h + - src/core/lib/event_engine/windows/native_windows_dns_resolver.h - src/core/lib/event_engine/windows/win_socket.h - src/core/lib/event_engine/windows/windows_endpoint.h - src/core/lib/event_engine/windows/windows_engine.h @@ -4875,6 +4880,7 @@ libs: - src/core/lib/event_engine/utils.cc - src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc - src/core/lib/event_engine/windows/iocp.cc + - src/core/lib/event_engine/windows/native_windows_dns_resolver.cc - src/core/lib/event_engine/windows/win_socket.cc - src/core/lib/event_engine/windows/windows_endpoint.cc - src/core/lib/event_engine/windows/windows_engine.cc @@ -16924,6 +16930,7 @@ targets: - src/core/lib/event_engine/utils.h - src/core/lib/event_engine/windows/grpc_polled_fd_windows.h - src/core/lib/event_engine/windows/iocp.h + - src/core/lib/event_engine/windows/native_windows_dns_resolver.h - src/core/lib/event_engine/windows/win_socket.h - src/core/lib/event_engine/windows/windows_endpoint.h - src/core/lib/event_engine/windows/windows_engine.h @@ -17262,6 +17269,7 @@ targets: - src/core/lib/event_engine/utils.cc - src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc - src/core/lib/event_engine/windows/iocp.cc + - src/core/lib/event_engine/windows/native_windows_dns_resolver.cc - src/core/lib/event_engine/windows/win_socket.cc - src/core/lib/event_engine/windows/windows_endpoint.cc - src/core/lib/event_engine/windows/windows_engine.cc diff --git a/config.m4 b/config.m4 index 34b99719662..74d0f802315 100644 --- a/config.m4 +++ b/config.m4 @@ -570,6 +570,7 @@ if test "$PHP_GRPC" != "no"; then src/core/lib/event_engine/utils.cc \ src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc \ src/core/lib/event_engine/windows/iocp.cc \ + src/core/lib/event_engine/windows/native_windows_dns_resolver.cc \ src/core/lib/event_engine/windows/win_socket.cc \ src/core/lib/event_engine/windows/windows_endpoint.cc \ src/core/lib/event_engine/windows/windows_engine.cc \ diff --git a/config.w32 b/config.w32 index d7678fff5ac..afc9589aed3 100644 --- a/config.w32 +++ b/config.w32 @@ -535,6 +535,7 @@ if (PHP_GRPC != "no") { "src\\core\\lib\\event_engine\\utils.cc " + "src\\core\\lib\\event_engine\\windows\\grpc_polled_fd_windows.cc " + "src\\core\\lib\\event_engine\\windows\\iocp.cc " + + "src\\core\\lib\\event_engine\\windows\\native_windows_dns_resolver.cc " + "src\\core\\lib\\event_engine\\windows\\win_socket.cc " + "src\\core\\lib\\event_engine\\windows\\windows_endpoint.cc " + "src\\core\\lib\\event_engine\\windows\\windows_engine.cc " + diff --git a/gRPC-C++.podspec b/gRPC-C++.podspec index ff49bb43910..0c39f744fb0 100644 --- a/gRPC-C++.podspec +++ b/gRPC-C++.podspec @@ -984,6 +984,7 @@ Pod::Spec.new do |s| 'src/core/lib/event_engine/utils.h', 'src/core/lib/event_engine/windows/grpc_polled_fd_windows.h', 'src/core/lib/event_engine/windows/iocp.h', + 'src/core/lib/event_engine/windows/native_windows_dns_resolver.h', 'src/core/lib/event_engine/windows/win_socket.h', 'src/core/lib/event_engine/windows/windows_endpoint.h', 'src/core/lib/event_engine/windows/windows_engine.h', @@ -2225,6 +2226,7 @@ Pod::Spec.new do |s| 'src/core/lib/event_engine/utils.h', 'src/core/lib/event_engine/windows/grpc_polled_fd_windows.h', 'src/core/lib/event_engine/windows/iocp.h', + 'src/core/lib/event_engine/windows/native_windows_dns_resolver.h', 'src/core/lib/event_engine/windows/win_socket.h', 'src/core/lib/event_engine/windows/windows_endpoint.h', 'src/core/lib/event_engine/windows/windows_engine.h', diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec index bebce4fc733..a700bdbec44 100644 --- a/gRPC-Core.podspec +++ b/gRPC-Core.podspec @@ -1444,6 +1444,8 @@ Pod::Spec.new do |s| 'src/core/lib/event_engine/windows/grpc_polled_fd_windows.h', 'src/core/lib/event_engine/windows/iocp.cc', 'src/core/lib/event_engine/windows/iocp.h', + 'src/core/lib/event_engine/windows/native_windows_dns_resolver.cc', + 'src/core/lib/event_engine/windows/native_windows_dns_resolver.h', 'src/core/lib/event_engine/windows/win_socket.cc', 'src/core/lib/event_engine/windows/win_socket.h', 'src/core/lib/event_engine/windows/windows_endpoint.cc', @@ -2991,6 +2993,7 @@ Pod::Spec.new do |s| 'src/core/lib/event_engine/utils.h', 'src/core/lib/event_engine/windows/grpc_polled_fd_windows.h', 'src/core/lib/event_engine/windows/iocp.h', + 'src/core/lib/event_engine/windows/native_windows_dns_resolver.h', 'src/core/lib/event_engine/windows/win_socket.h', 'src/core/lib/event_engine/windows/windows_endpoint.h', 'src/core/lib/event_engine/windows/windows_engine.h', diff --git a/grpc.gemspec b/grpc.gemspec index 4a2e017e484..bfd2ac83bca 100644 --- a/grpc.gemspec +++ b/grpc.gemspec @@ -1347,6 +1347,8 @@ Gem::Specification.new do |s| s.files += %w( src/core/lib/event_engine/windows/grpc_polled_fd_windows.h ) s.files += %w( src/core/lib/event_engine/windows/iocp.cc ) s.files += %w( src/core/lib/event_engine/windows/iocp.h ) + s.files += %w( src/core/lib/event_engine/windows/native_windows_dns_resolver.cc ) + s.files += %w( src/core/lib/event_engine/windows/native_windows_dns_resolver.h ) s.files += %w( src/core/lib/event_engine/windows/win_socket.cc ) s.files += %w( src/core/lib/event_engine/windows/win_socket.h ) s.files += %w( src/core/lib/event_engine/windows/windows_endpoint.cc ) diff --git a/grpc.gyp b/grpc.gyp index 3a5ba2d57d0..1a33c9eb586 100644 --- a/grpc.gyp +++ b/grpc.gyp @@ -799,6 +799,7 @@ 'src/core/lib/event_engine/utils.cc', 'src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc', 'src/core/lib/event_engine/windows/iocp.cc', + 'src/core/lib/event_engine/windows/native_windows_dns_resolver.cc', 'src/core/lib/event_engine/windows/win_socket.cc', 'src/core/lib/event_engine/windows/windows_endpoint.cc', 'src/core/lib/event_engine/windows/windows_engine.cc', @@ -1321,6 +1322,7 @@ 'src/core/lib/event_engine/utils.cc', 'src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc', 'src/core/lib/event_engine/windows/iocp.cc', + 'src/core/lib/event_engine/windows/native_windows_dns_resolver.cc', 'src/core/lib/event_engine/windows/win_socket.cc', 'src/core/lib/event_engine/windows/windows_endpoint.cc', 'src/core/lib/event_engine/windows/windows_engine.cc', @@ -2100,6 +2102,7 @@ 'src/core/lib/event_engine/utils.cc', 'src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc', 'src/core/lib/event_engine/windows/iocp.cc', + 'src/core/lib/event_engine/windows/native_windows_dns_resolver.cc', 'src/core/lib/event_engine/windows/win_socket.cc', 'src/core/lib/event_engine/windows/windows_endpoint.cc', 'src/core/lib/event_engine/windows/windows_engine.cc', diff --git a/package.xml b/package.xml index 67d5577eff9..885bedac415 100644 --- a/package.xml +++ b/package.xml @@ -1329,6 +1329,8 @@ + + diff --git a/src/core/BUILD b/src/core/BUILD index 776a390ff0d..37a65c4b32b 100644 --- a/src/core/BUILD +++ b/src/core/BUILD @@ -2222,6 +2222,20 @@ grpc_cc_library( "windows_endpoint", "windows_event_engine_listener", "windows_iocp", + "windows_native_resolver", + "//:event_engine_base_hdrs", + "//:gpr", + ], +) + +grpc_cc_library( + name = "windows_native_resolver", + srcs = ["lib/event_engine/windows/native_windows_dns_resolver.cc"], + hdrs = ["lib/event_engine/windows/native_windows_dns_resolver.h"], + external_deps = ["absl/strings:str_format"], + deps = [ + "error", + "status_helper", "//:event_engine_base_hdrs", "//:gpr", ], diff --git a/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc b/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc new file mode 100644 index 00000000000..a00ed40225b --- /dev/null +++ b/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc @@ -0,0 +1,114 @@ +// Copyright 2024 The gRPC Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +#include + +#ifdef GPR_WINDOWS +#include +#include +#include + +#include + +#include "absl/strings/str_format.h" + +#include + +#include "src/core/lib/event_engine/windows/native_windows_dns_resolver.h" +#include "src/core/lib/gprpp/host_port.h" +#include "src/core/lib/gprpp/status_helper.h" +#include "src/core/lib/iomgr/error.h" + +namespace grpc_event_engine { +namespace experimental { + +namespace { +absl::StatusOr> +LookupHostnameBlocking(absl::string_view name, absl::string_view default_port) { + std::vector addresses; + // parse name, splitting it into host and port parts + std::string host; + std::string port; + grpc_core::SplitHostPort(name, &host, &port); + if (host.empty()) { + return absl::InvalidArgumentError(absl::StrCat("Unparseable name: ", name)); + } + if (port.empty()) { + if (default_port.empty()) { + return absl::InvalidArgumentError( + absl::StrFormat("No port in name %s or default_port argument", name)); + } + port = std::string(default_port); + } + // Call getaddrinfo + struct addrinfo hints; + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; // ipv4 or ipv6 + hints.ai_socktype = SOCK_STREAM; // stream socket + hints.ai_flags = AI_PASSIVE; // for wildcard IP address + struct addrinfo* result = nullptr; + int getaddrinfo_error = + getaddrinfo(host.c_str(), port.c_str(), &hints, &result); + if (getaddrinfo_error != 0) { + return absl::UnknownError( + absl::StrFormat("Address lookup failed for %s os_error: %s", name, + grpc_core::StatusToString( + GRPC_WSA_ERROR(WSAGetLastError(), "getaddrinfo")) + .c_str())); + } + // Success path: collect and return all addresses + for (auto* resp = result; resp != nullptr; resp = resp->ai_next) { + addresses.emplace_back(resp->ai_addr, resp->ai_addrlen); + } + if (result) freeaddrinfo(result); + return addresses; +} + +} // namespace +NativeWindowsDNSResolver::NativeWindowsDNSResolver( + std::shared_ptr event_engine) + : event_engine_(std::move(event_engine)) {} + +void NativeWindowsDNSResolver::LookupHostname( + EventEngine::DNSResolver::LookupHostnameCallback on_resolved, + absl::string_view name, absl::string_view default_port) { + event_engine_->Run( + [name, default_port, on_resolved = std::move(on_resolved)]() mutable { + on_resolved(LookupHostnameBlocking(name, default_port)); + }); +} + +void NativeWindowsDNSResolver::LookupSRV( + EventEngine::DNSResolver::LookupSRVCallback on_resolved, + absl::string_view /* name */) { + // Not supported + event_engine_->Run([on_resolved = std::move(on_resolved)]() mutable { + on_resolved(absl::UnimplementedError( + "The Native resolver does not support looking up SRV records")); + }); +} + +void NativeWindowsDNSResolver::LookupTXT( + EventEngine::DNSResolver::LookupTXTCallback on_resolved, + absl::string_view /* name */) { + // Not supported + event_engine_->Run([on_resolved = std::move(on_resolved)]() mutable { + on_resolved(absl::UnimplementedError( + "The Native resolver does not support looking up TXT records")); + }); +} + +} // namespace experimental +} // namespace grpc_event_engine + +#endif // GPR_WINDOWS diff --git a/src/core/lib/event_engine/windows/native_windows_dns_resolver.h b/src/core/lib/event_engine/windows/native_windows_dns_resolver.h new file mode 100644 index 00000000000..43d1fe27fcc --- /dev/null +++ b/src/core/lib/event_engine/windows/native_windows_dns_resolver.h @@ -0,0 +1,51 @@ +// Copyright 2024 The gRPC Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +#ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_WINDOWS_NATIVE_WINDOWS_DNS_RESOLVER_H +#define GRPC_SRC_CORE_LIB_EVENT_ENGINE_WINDOWS_NATIVE_WINDOWS_DNS_RESOLVER_H + +#include + +#ifdef GPR_WINDOWS + +#include + +namespace grpc_event_engine { +namespace experimental { + +// An asynchronous DNS resolver which uses the native platform's getaddrinfo +// API. Only supports A/AAAA records. +class NativeWindowsDNSResolver : public EventEngine::DNSResolver { + public: + explicit NativeWindowsDNSResolver(std::shared_ptr event_engine); + + void LookupHostname( + EventEngine::DNSResolver::LookupHostnameCallback on_resolved, + absl::string_view name, absl::string_view default_port) override; + + void LookupSRV(EventEngine::DNSResolver::LookupSRVCallback on_resolved, + absl::string_view name) override; + + void LookupTXT(EventEngine::DNSResolver::LookupTXTCallback on_resolved, + absl::string_view name) override; + + private: + std::shared_ptr event_engine_; +}; + +} // namespace experimental +} // namespace grpc_event_engine + +#endif + +#endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_WINDOWS_NATIVE_WINDOWS_DNS_RESOLVER_H diff --git a/src/core/lib/event_engine/windows/windows_engine.cc b/src/core/lib/event_engine/windows/windows_engine.cc index 25120267039..69e4963f387 100644 --- a/src/core/lib/event_engine/windows/windows_engine.cc +++ b/src/core/lib/event_engine/windows/windows_engine.cc @@ -37,6 +37,7 @@ #include "src/core/lib/event_engine/utils.h" #include "src/core/lib/event_engine/windows/grpc_polled_fd_windows.h" #include "src/core/lib/event_engine/windows/iocp.h" +#include "src/core/lib/event_engine/windows/native_windows_dns_resolver.h" #include "src/core/lib/event_engine/windows/windows_endpoint.h" #include "src/core/lib/event_engine/windows/windows_engine.h" #include "src/core/lib/event_engine/windows/windows_listener.h" @@ -233,10 +234,9 @@ WindowsEventEngine::GetDNSResolver( return std::make_unique( std::move(*ares_resolver)); #else // GRPC_ARES == 1 && defined(GRPC_WINDOWS_SOCKET_ARES_EV_DRIVER) - // TODO(yijiem): Implement a basic A/AAAA-only native resolver in - // WindowsEventEngine. - (void)options; - grpc_core::Crash("unimplemented"); + GRPC_EVENT_ENGINE_DNS_TRACE( + "WindowsEventEngine:%p creating NativeWindowsDNSResolver", this); + return std::make_unique(shared_from_this()); #endif // GRPC_ARES == 1 && defined(GRPC_WINDOWS_SOCKET_ARES_EV_DRIVER) } diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py index 351065b21a8..30a62ced196 100644 --- a/src/python/grpcio/grpc_core_dependencies.py +++ b/src/python/grpcio/grpc_core_dependencies.py @@ -544,6 +544,7 @@ CORE_SOURCE_FILES = [ 'src/core/lib/event_engine/utils.cc', 'src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc', 'src/core/lib/event_engine/windows/iocp.cc', + 'src/core/lib/event_engine/windows/native_windows_dns_resolver.cc', 'src/core/lib/event_engine/windows/win_socket.cc', 'src/core/lib/event_engine/windows/windows_endpoint.cc', 'src/core/lib/event_engine/windows/windows_engine.cc', diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal index c0fc6f9e749..168ddf984d8 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -2346,6 +2346,8 @@ src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc \ src/core/lib/event_engine/windows/grpc_polled_fd_windows.h \ src/core/lib/event_engine/windows/iocp.cc \ src/core/lib/event_engine/windows/iocp.h \ +src/core/lib/event_engine/windows/native_windows_dns_resolver.cc \ +src/core/lib/event_engine/windows/native_windows_dns_resolver.h \ src/core/lib/event_engine/windows/win_socket.cc \ src/core/lib/event_engine/windows/win_socket.h \ src/core/lib/event_engine/windows/windows_endpoint.cc \ diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index 1645a7c7c9a..8b439b3ac66 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -2122,6 +2122,8 @@ src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc \ src/core/lib/event_engine/windows/grpc_polled_fd_windows.h \ src/core/lib/event_engine/windows/iocp.cc \ src/core/lib/event_engine/windows/iocp.h \ +src/core/lib/event_engine/windows/native_windows_dns_resolver.cc \ +src/core/lib/event_engine/windows/native_windows_dns_resolver.h \ src/core/lib/event_engine/windows/win_socket.cc \ src/core/lib/event_engine/windows/win_socket.h \ src/core/lib/event_engine/windows/windows_endpoint.cc \