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 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,
                          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 {
@@ -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 {
@@ -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;
}

+1 −4
Original line number Diff line number Diff line
@@ -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;
}
+1 −6
Original line number 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) {
    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);
}

+1 −13
Original line number Diff line number Diff line
@@ -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());

@@ -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) {