Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 44aa3256 authored by Ken Chen's avatar Ken Chen Committed by Gerrit Code Review
Browse files

Merge "Revert "Add debug trace for MdnsIPv6LinkLocalWithDefaultRoute""

parents c0b025cf b9a19f56
Loading
Loading
Loading
Loading
+2 −16
Original line number Original line Diff line number Diff line
@@ -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,
static int _find_src_addr(const struct sockaddr* addr, struct sockaddr* src_addr, unsigned mark,
                          uid_t uid, bool allow_v6_linklocal) {
                          uid_t uid, bool allow_v6_linklocal) {
    if (src_addr == nullptr) {
    if (src_addr == nullptr) return -1;
        LOG(DEBUG) << __func__ << ": src_addr==nullptr";
        return -1;
    }


    int ret;
    int ret;
    socklen_t len;
    socklen_t len;


    switch (addr->sa_family) {
    switch (addr->sa_family) {
        case AF_INET:
        case AF_INET:
            LOG(DEBUG) << __func__ << ": sa_family AF_INET";
            len = sizeof(struct sockaddr_in);
            len = sizeof(struct sockaddr_in);
            break;
            break;
        case AF_INET6:
        case AF_INET6:
            LOG(DEBUG) << __func__ << ": sa_family AF_INET6";
            len = sizeof(struct sockaddr_in6);
            len = sizeof(struct sockaddr_in6);
            break;
            break;
        default:
        default:
            /* No known usable source address for non-INET families. */
            /* No known usable source address for non-INET families. */
            LOG(DEBUG) << __func__ << ": non-INET families " << addr->sa_family;
            return 0;
            return 0;
    }
    }


    android::base::unique_fd sock(socket(addr->sa_family, SOCK_DGRAM | SOCK_CLOEXEC, IPPROTO_UDP));
    android::base::unique_fd sock(socket(addr->sa_family, SOCK_DGRAM | SOCK_CLOEXEC, IPPROTO_UDP));
    if (sock.get() == -1) {
    if (sock.get() == -1) {
        LOG(DEBUG) << __func__ << ": sock() error, " << strerror(errno);
        if (errno == EAFNOSUPPORT) {
        if (errno == EAFNOSUPPORT) {
            return 0;
            return 0;
        } else {
        } else {
@@ -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) {
    if (mark != MARK_UNSET && setsockopt(sock, SOL_SOCKET, SO_MARK, &mark, sizeof(mark)) < 0) {
        LOG(DEBUG) << __func__ << ": setsockopt() error, " << strerror(errno);
        return 0;
        return 0;
    }
    }
    if (uid > 0 && uid != NET_CONTEXT_INVALID_UID && fchown(sock, uid, (gid_t) -1) < 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;
        return 0;
    }
    }
    do {
    do {
@@ -1314,25 +1305,20 @@ static int _find_src_addr(const struct sockaddr* addr, struct sockaddr* src_addr
    } while (ret == -1 && errno == EINTR);
    } while (ret == -1 && errno == EINTR);


    if (ret == -1) {
    if (ret == -1) {
        LOG(DEBUG) << __func__ << ": connect() return -1, " << strerror(errno);
        return 0;
        return 0;
    }
    }


    if (getsockname(sock, src_addr, &len) == -1) {
    if (getsockname(sock, src_addr, &len) == -1) {
        LOG(DEBUG) << __func__ << ": getsockname() return -1, " << strerror(errno);
        return -1;
        return -1;
    }
    }


    if (src_addr->sa_family == AF_INET6) {
    if (src_addr->sa_family == AF_INET6) {
        sockaddr_in6* sin6 = reinterpret_cast<sockaddr_in6*>(src_addr);
        sockaddr_in6* sin6 = reinterpret_cast<sockaddr_in6*>(src_addr);
        if (!allow_v6_linklocal && IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) {
        if (!allow_v6_linklocal && IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) {
            LOG(DEBUG) << __func__ << ": !allow_v6_linklocal && IN6_IS_ADDR_LINKLOCAL";
            return 0;
            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;
    return 1;
}
}


+1 −4
Original line number Original line Diff line number Diff line
@@ -757,13 +757,10 @@ int herrnoToAiErrno(int he) {


void setMdnsFlag(std::string_view hostname, unsigned netid, uint32_t* flags) {
void setMdnsFlag(std::string_view hostname, unsigned netid, uint32_t* flags) {
    if (hostname.ends_with(".local") && is_mdns_supported_network(netid) &&
    if (hostname.ends_with(".local") && is_mdns_supported_network(netid) &&
        android::net::Experiments::getInstance()->getFlag("mdns_resolution", 1)) {
        android::net::Experiments::getInstance()->getFlag("mdns_resolution", 1))
        LOG(DEBUG) << __func__ << ": *flags |= RES_F_MDNS";
        *flags |= RES_F_MDNS;
        *flags |= RES_F_MDNS;
}
}
}


bool isMdnsResolution(uint32_t flags) {
bool isMdnsResolution(uint32_t flags) {
    LOG(DEBUG) << __func__ << ": " << (bool)(flags & RES_F_MDNS);
    return flags & RES_F_MDNS;
    return flags & RES_F_MDNS;
}
}
+1 −6
Original line number Original line Diff line number Diff line
@@ -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) {
bool is_mdns_supported_transport_types(const std::vector<int32_t>& transportTypes) {
    for (const auto& tp : transportTypes) {
    for (const auto& tp : transportTypes) {
        if (tp == IDnsResolver::TRANSPORT_CELLULAR || tp == IDnsResolver::TRANSPORT_VPN) {
        if (tp == IDnsResolver::TRANSPORT_CELLULAR || tp == IDnsResolver::TRANSPORT_VPN) {
            LOG(DEBUG) << __func__ << ": return false, tp=" << tp;
            return false;
            return false;
        }
        }
    }
    }
    LOG(DEBUG) << __func__ << ": return true";
    return true;
    return true;
}
}


bool is_mdns_supported_network(unsigned netid) {
bool is_mdns_supported_network(unsigned netid) {
    std::lock_guard guard(cache_mutex);
    std::lock_guard guard(cache_mutex);
    NetConfig* netconfig = find_netconfig_locked(netid);
    NetConfig* netconfig = find_netconfig_locked(netid);
    if (netconfig == nullptr) {
    if (netconfig == nullptr) return false;
        LOG(DEBUG) << __func__ << ": netconfig == nullptr";
        return false;
    }
    return is_mdns_supported_transport_types(netconfig->transportTypes);
    return is_mdns_supported_transport_types(netconfig->transportTypes);
}
}


+1 −13
Original line number Original line Diff line number Diff line
@@ -7516,12 +7516,6 @@ TEST_F(ResolverMultinetworkTest, MdnsIPv6LinkLocalWithDefaultRoute) {
    constexpr char v6addr[] = "::127.0.0.3";
    constexpr char v6addr[] = "::127.0.0.3";
    constexpr char v4addr[] = "127.0.0.3";
    constexpr char v4addr[] = "127.0.0.3";
    constexpr char host_name[] = "hello.local.";
    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);
    ScopedPhysicalNetwork network = CreateScopedPhysicalNetwork(ConnectivityType::V4);
    ASSERT_RESULT_OK(network.init());
    ASSERT_RESULT_OK(network.init());


@@ -7556,12 +7550,6 @@ TEST_F(ResolverMultinetworkTest, MdnsIPv6LinkLocalWithDefaultRoute) {
    EXPECT_EQ(GetNumQueries(mdnsv6, host_name), 1U);
    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_a, host_name), 0U);
    EXPECT_EQ(GetNumQueriesForType(*dnsPair->dnsServer, ns_type::ns_t_aaaa, 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) {
TEST_F(ResolverTest, NegativeValueInExperimentFlag) {