Loading getaddrinfo.cpp +2 −16 Original line number Diff line number Diff line Loading @@ -1269,32 +1269,25 @@ static int _rfc6724_compare(const void* ptr1, const void* ptr2) { static int _find_src_addr(const struct sockaddr* addr, struct sockaddr* src_addr, unsigned mark, uid_t uid, bool allow_v6_linklocal) { if (src_addr == nullptr) { LOG(DEBUG) << __func__ << ": src_addr==nullptr"; return -1; } if (src_addr == nullptr) return -1; int ret; socklen_t len; switch (addr->sa_family) { case AF_INET: LOG(DEBUG) << __func__ << ": sa_family AF_INET"; len = sizeof(struct sockaddr_in); break; case AF_INET6: LOG(DEBUG) << __func__ << ": sa_family AF_INET6"; len = sizeof(struct sockaddr_in6); break; default: /* No known usable source address for non-INET families. */ LOG(DEBUG) << __func__ << ": non-INET families " << addr->sa_family; return 0; } android::base::unique_fd sock(socket(addr->sa_family, SOCK_DGRAM | SOCK_CLOEXEC, IPPROTO_UDP)); if (sock.get() == -1) { LOG(DEBUG) << __func__ << ": sock() error, " << strerror(errno); if (errno == EAFNOSUPPORT) { return 0; } else { Loading @@ -1302,11 +1295,9 @@ static int _find_src_addr(const struct sockaddr* addr, struct sockaddr* src_addr } } if (mark != MARK_UNSET && setsockopt(sock, SOL_SOCKET, SO_MARK, &mark, sizeof(mark)) < 0) { LOG(DEBUG) << __func__ << ": setsockopt() error, " << strerror(errno); return 0; } if (uid > 0 && uid != NET_CONTEXT_INVALID_UID && fchown(sock, uid, (gid_t) -1) < 0) { LOG(DEBUG) << __func__ << ": fchown() error, " << strerror(errno); return 0; } do { Loading @@ -1314,25 +1305,20 @@ static int _find_src_addr(const struct sockaddr* addr, struct sockaddr* src_addr } while (ret == -1 && errno == EINTR); if (ret == -1) { LOG(DEBUG) << __func__ << ": connect() return -1, " << strerror(errno); return 0; } if (getsockname(sock, src_addr, &len) == -1) { LOG(DEBUG) << __func__ << ": getsockname() return -1, " << strerror(errno); return -1; } if (src_addr->sa_family == AF_INET6) { sockaddr_in6* sin6 = reinterpret_cast<sockaddr_in6*>(src_addr); if (!allow_v6_linklocal && IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) { LOG(DEBUG) << __func__ << ": !allow_v6_linklocal && IN6_IS_ADDR_LINKLOCAL"; return 0; } LOG(DEBUG) << __func__ << ": AF_INET6. allow_v6_linklocal=" << allow_v6_linklocal << " IN6_IS_ADDR_LINKLOCAL=" << IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr); } LOG(DEBUG) << __func__ << ": return 1"; return 1; } Loading gethnamaddr.cpp +1 −4 Original line number Diff line number Diff line Loading @@ -757,13 +757,10 @@ int herrnoToAiErrno(int he) { void setMdnsFlag(std::string_view hostname, unsigned netid, uint32_t* flags) { if (hostname.ends_with(".local") && is_mdns_supported_network(netid) && android::net::Experiments::getInstance()->getFlag("mdns_resolution", 1)) { LOG(DEBUG) << __func__ << ": *flags |= RES_F_MDNS"; android::net::Experiments::getInstance()->getFlag("mdns_resolution", 1)) *flags |= RES_F_MDNS; } } bool isMdnsResolution(uint32_t flags) { LOG(DEBUG) << __func__ << ": " << (bool)(flags & RES_F_MDNS); return flags & RES_F_MDNS; } res_cache.cpp +1 −6 Original line number Diff line number Diff line Loading @@ -1567,21 +1567,16 @@ android::net::NetworkType resolv_get_network_types_for_net(unsigned netid) { bool is_mdns_supported_transport_types(const std::vector<int32_t>& transportTypes) { for (const auto& tp : transportTypes) { if (tp == IDnsResolver::TRANSPORT_CELLULAR || tp == IDnsResolver::TRANSPORT_VPN) { LOG(DEBUG) << __func__ << ": return false, tp=" << tp; return false; } } LOG(DEBUG) << __func__ << ": return true"; return true; } bool is_mdns_supported_network(unsigned netid) { std::lock_guard guard(cache_mutex); NetConfig* netconfig = find_netconfig_locked(netid); if (netconfig == nullptr) { LOG(DEBUG) << __func__ << ": netconfig == nullptr"; return false; } if (netconfig == nullptr) return false; return is_mdns_supported_transport_types(netconfig->transportTypes); } Loading tests/resolv_integration_test.cpp +1 −13 Original line number Diff line number Diff line Loading @@ -7516,12 +7516,6 @@ TEST_F(ResolverMultinetworkTest, MdnsIPv6LinkLocalWithDefaultRoute) { constexpr char v6addr[] = "::127.0.0.3"; constexpr char v4addr[] = "127.0.0.3"; constexpr char host_name[] = "hello.local."; // TODO: remove debugging log when b/247693272 is clarified. ASSERT_TRUE(mDnsClient.resolvService() ->setLogSeverity(aidl::android::net::IDnsResolver::DNS_RESOLVER_LOG_DEBUG) .isOk()); ScopedPhysicalNetwork network = CreateScopedPhysicalNetwork(ConnectivityType::V4); ASSERT_RESULT_OK(network.init()); Loading Loading @@ -7556,12 +7550,6 @@ TEST_F(ResolverMultinetworkTest, MdnsIPv6LinkLocalWithDefaultRoute) { EXPECT_EQ(GetNumQueries(mdnsv6, host_name), 1U); EXPECT_EQ(GetNumQueriesForType(*dnsPair->dnsServer, ns_type::ns_t_a, host_name), 0U); EXPECT_EQ(GetNumQueriesForType(*dnsPair->dnsServer, ns_type::ns_t_aaaa, host_name), 0U); // Reset logging level to "default" without checking the previous logging level, since no // public function to get current level, and it's for temporary debugging only. ASSERT_TRUE(mDnsClient.resolvService() ->setLogSeverity(aidl::android::net::IDnsResolver::DNS_RESOLVER_LOG_INFO) .isOk()); } TEST_F(ResolverTest, NegativeValueInExperimentFlag) { Loading Loading
getaddrinfo.cpp +2 −16 Original line number Diff line number Diff line Loading @@ -1269,32 +1269,25 @@ static int _rfc6724_compare(const void* ptr1, const void* ptr2) { static int _find_src_addr(const struct sockaddr* addr, struct sockaddr* src_addr, unsigned mark, uid_t uid, bool allow_v6_linklocal) { if (src_addr == nullptr) { LOG(DEBUG) << __func__ << ": src_addr==nullptr"; return -1; } if (src_addr == nullptr) return -1; int ret; socklen_t len; switch (addr->sa_family) { case AF_INET: LOG(DEBUG) << __func__ << ": sa_family AF_INET"; len = sizeof(struct sockaddr_in); break; case AF_INET6: LOG(DEBUG) << __func__ << ": sa_family AF_INET6"; len = sizeof(struct sockaddr_in6); break; default: /* No known usable source address for non-INET families. */ LOG(DEBUG) << __func__ << ": non-INET families " << addr->sa_family; return 0; } android::base::unique_fd sock(socket(addr->sa_family, SOCK_DGRAM | SOCK_CLOEXEC, IPPROTO_UDP)); if (sock.get() == -1) { LOG(DEBUG) << __func__ << ": sock() error, " << strerror(errno); if (errno == EAFNOSUPPORT) { return 0; } else { Loading @@ -1302,11 +1295,9 @@ static int _find_src_addr(const struct sockaddr* addr, struct sockaddr* src_addr } } if (mark != MARK_UNSET && setsockopt(sock, SOL_SOCKET, SO_MARK, &mark, sizeof(mark)) < 0) { LOG(DEBUG) << __func__ << ": setsockopt() error, " << strerror(errno); return 0; } if (uid > 0 && uid != NET_CONTEXT_INVALID_UID && fchown(sock, uid, (gid_t) -1) < 0) { LOG(DEBUG) << __func__ << ": fchown() error, " << strerror(errno); return 0; } do { Loading @@ -1314,25 +1305,20 @@ static int _find_src_addr(const struct sockaddr* addr, struct sockaddr* src_addr } while (ret == -1 && errno == EINTR); if (ret == -1) { LOG(DEBUG) << __func__ << ": connect() return -1, " << strerror(errno); return 0; } if (getsockname(sock, src_addr, &len) == -1) { LOG(DEBUG) << __func__ << ": getsockname() return -1, " << strerror(errno); return -1; } if (src_addr->sa_family == AF_INET6) { sockaddr_in6* sin6 = reinterpret_cast<sockaddr_in6*>(src_addr); if (!allow_v6_linklocal && IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) { LOG(DEBUG) << __func__ << ": !allow_v6_linklocal && IN6_IS_ADDR_LINKLOCAL"; return 0; } LOG(DEBUG) << __func__ << ": AF_INET6. allow_v6_linklocal=" << allow_v6_linklocal << " IN6_IS_ADDR_LINKLOCAL=" << IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr); } LOG(DEBUG) << __func__ << ": return 1"; return 1; } Loading
gethnamaddr.cpp +1 −4 Original line number Diff line number Diff line Loading @@ -757,13 +757,10 @@ int herrnoToAiErrno(int he) { void setMdnsFlag(std::string_view hostname, unsigned netid, uint32_t* flags) { if (hostname.ends_with(".local") && is_mdns_supported_network(netid) && android::net::Experiments::getInstance()->getFlag("mdns_resolution", 1)) { LOG(DEBUG) << __func__ << ": *flags |= RES_F_MDNS"; android::net::Experiments::getInstance()->getFlag("mdns_resolution", 1)) *flags |= RES_F_MDNS; } } bool isMdnsResolution(uint32_t flags) { LOG(DEBUG) << __func__ << ": " << (bool)(flags & RES_F_MDNS); return flags & RES_F_MDNS; }
res_cache.cpp +1 −6 Original line number Diff line number Diff line Loading @@ -1567,21 +1567,16 @@ android::net::NetworkType resolv_get_network_types_for_net(unsigned netid) { bool is_mdns_supported_transport_types(const std::vector<int32_t>& transportTypes) { for (const auto& tp : transportTypes) { if (tp == IDnsResolver::TRANSPORT_CELLULAR || tp == IDnsResolver::TRANSPORT_VPN) { LOG(DEBUG) << __func__ << ": return false, tp=" << tp; return false; } } LOG(DEBUG) << __func__ << ": return true"; return true; } bool is_mdns_supported_network(unsigned netid) { std::lock_guard guard(cache_mutex); NetConfig* netconfig = find_netconfig_locked(netid); if (netconfig == nullptr) { LOG(DEBUG) << __func__ << ": netconfig == nullptr"; return false; } if (netconfig == nullptr) return false; return is_mdns_supported_transport_types(netconfig->transportTypes); } Loading
tests/resolv_integration_test.cpp +1 −13 Original line number Diff line number Diff line Loading @@ -7516,12 +7516,6 @@ TEST_F(ResolverMultinetworkTest, MdnsIPv6LinkLocalWithDefaultRoute) { constexpr char v6addr[] = "::127.0.0.3"; constexpr char v4addr[] = "127.0.0.3"; constexpr char host_name[] = "hello.local."; // TODO: remove debugging log when b/247693272 is clarified. ASSERT_TRUE(mDnsClient.resolvService() ->setLogSeverity(aidl::android::net::IDnsResolver::DNS_RESOLVER_LOG_DEBUG) .isOk()); ScopedPhysicalNetwork network = CreateScopedPhysicalNetwork(ConnectivityType::V4); ASSERT_RESULT_OK(network.init()); Loading Loading @@ -7556,12 +7550,6 @@ TEST_F(ResolverMultinetworkTest, MdnsIPv6LinkLocalWithDefaultRoute) { EXPECT_EQ(GetNumQueries(mdnsv6, host_name), 1U); EXPECT_EQ(GetNumQueriesForType(*dnsPair->dnsServer, ns_type::ns_t_a, host_name), 0U); EXPECT_EQ(GetNumQueriesForType(*dnsPair->dnsServer, ns_type::ns_t_aaaa, host_name), 0U); // Reset logging level to "default" without checking the previous logging level, since no // public function to get current level, and it's for temporary debugging only. ASSERT_TRUE(mDnsClient.resolvService() ->setLogSeverity(aidl::android::net::IDnsResolver::DNS_RESOLVER_LOG_INFO) .isOk()); } TEST_F(ResolverTest, NegativeValueInExperimentFlag) { Loading