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

Commit 143fda1e authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 8076125 from 56492f1e to mainline-networking-release

Change-Id: Ia8baebcf85eb673a987346c363d64722084d2f1a
parents cbc33a48 56492f1e
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -83,7 +83,6 @@ aidl_interface {
    backend: {
    backend: {
        java: {
        java: {
            apex_available: [
            apex_available: [
                "com.android.bluetooth.updatable",
                "com.android.tethering",
                "com.android.tethering",
                "com.android.wifi",
                "com.android.wifi",
            ],
            ],
+13 −3
Original line number Original line Diff line number Diff line
@@ -109,7 +109,11 @@ int PrivateDnsConfiguration::set(int32_t netId, uint32_t mark,
}
}


PrivateDnsStatus PrivateDnsConfiguration::getStatus(unsigned netId) const {
PrivateDnsStatus PrivateDnsConfiguration::getStatus(unsigned netId) const {
    PrivateDnsStatus status{PrivateDnsMode::OFF, {}};
    PrivateDnsStatus status{
            .mode = PrivateDnsMode::OFF,
            .dotServersMap = {},
            .dohServersMap = {},
    };
    std::lock_guard guard(mPrivateDnsLock);
    std::lock_guard guard(mPrivateDnsLock);


    const auto mode = mPrivateDnsModes.find(netId);
    const auto mode = mPrivateDnsModes.find(netId);
@@ -121,10 +125,16 @@ PrivateDnsStatus PrivateDnsConfiguration::getStatus(unsigned netId) const {
        for (const auto& [_, server] : netPair->second) {
        for (const auto& [_, server] : netPair->second) {
            if (server->isDot() && server->active()) {
            if (server->isDot() && server->active()) {
                DnsTlsServer& dotServer = *static_cast<DnsTlsServer*>(server.get());
                DnsTlsServer& dotServer = *static_cast<DnsTlsServer*>(server.get());
                status.serversMap.emplace(dotServer, server->validationState());
                status.dotServersMap.emplace(dotServer, server->validationState());
            }
        }
        }
            // TODO: also add DoH server to the map.
    }
    }

    auto it = mDohTracker.find(netId);
    if (it != mDohTracker.end()) {
        status.dohServersMap.emplace(
                netdutils::IPSockAddr::toIPSockAddr(it->second.ipAddr, kDohPort),
                it->second.status);
    }
    }


    return status;
    return status;
+13 −2
Original line number Original line Diff line number Diff line
@@ -44,18 +44,29 @@ struct PrivateDnsStatus {
    PrivateDnsMode mode;
    PrivateDnsMode mode;


    // TODO: change the type to std::vector<DnsTlsServer>.
    // TODO: change the type to std::vector<DnsTlsServer>.
    std::map<DnsTlsServer, Validation, AddressComparator> serversMap;
    std::map<DnsTlsServer, Validation, AddressComparator> dotServersMap;

    std::map<netdutils::IPSockAddr, Validation> dohServersMap;


    std::list<DnsTlsServer> validatedServers() const {
    std::list<DnsTlsServer> validatedServers() const {
        std::list<DnsTlsServer> servers;
        std::list<DnsTlsServer> servers;


        for (const auto& pair : serversMap) {
        for (const auto& pair : dotServersMap) {
            if (pair.second == Validation::success) {
            if (pair.second == Validation::success) {
                servers.push_back(pair.first);
                servers.push_back(pair.first);
            }
            }
        }
        }
        return servers;
        return servers;
    }
    }

    bool hasValidatedDohServers() const {
        for (const auto& [_, status] : dohServersMap) {
            if (status == Validation::success) {
                return true;
            }
        }
        return false;
    }
};
};


class PrivateDnsConfiguration {
class PrivateDnsConfiguration {
+2 −2
Original line number Original line Diff line number Diff line
@@ -110,7 +110,7 @@ class PrivateDnsConfigurationTest : public ::testing::Test {
        if (status.mode != mode) return false;
        if (status.mode != mode) return false;


        std::map<std::string, Validation> serverStateMap;
        std::map<std::string, Validation> serverStateMap;
        for (const auto& [server, validation] : status.serversMap) {
        for (const auto& [server, validation] : status.dotServersMap) {
            serverStateMap[ToString(&server.ss)] = validation;
            serverStateMap[ToString(&server.ss)] = validation;
        }
        }
        return (serverStateMap == mObserver.getServerStateMap());
        return (serverStateMap == mObserver.getServerStateMap());
@@ -275,7 +275,7 @@ TEST_F(PrivateDnsConfigurationTest, NoValidation) {
    const auto expectStatus = [&]() {
    const auto expectStatus = [&]() {
        const PrivateDnsStatus status = mPdc.getStatus(kNetId);
        const PrivateDnsStatus status = mPdc.getStatus(kNetId);
        EXPECT_EQ(status.mode, PrivateDnsMode::OFF);
        EXPECT_EQ(status.mode, PrivateDnsMode::OFF);
        EXPECT_THAT(status.serversMap, testing::IsEmpty());
        EXPECT_THAT(status.dotServersMap, testing::IsEmpty());
    };
    };


    EXPECT_EQ(mPdc.set(kNetId, kMark, {"invalid_addr"}, {}, {}), -EINVAL);
    EXPECT_EQ(mPdc.set(kNetId, kMark, {"invalid_addr"}, {}, {}), -EINVAL);
+5 −5
Original line number Original line Diff line number Diff line
@@ -113,7 +113,7 @@ int getDnsInfo(unsigned netId, std::vector<std::string>* servers, std::vector<st
        return 0;
        return 0;
    }
    }


    // Verify that the returned data is sane.
    // Verify that the returned data is valid.
    if (nscount < 0 || nscount > MAXNS || dcount < 0 || dcount > MAXDNSRCH) {
    if (nscount < 0 || nscount > MAXNS || dcount < 0 || dcount > MAXDNSRCH) {
        LOG(ERROR) << __func__ << ": nscount = " << nscount << ", dcount = " << dcount;
        LOG(ERROR) << __func__ << ": nscount = " << nscount << ", dcount = " << dcount;
        return -ENOTRECOVERABLE;
        return -ENOTRECOVERABLE;
@@ -268,7 +268,7 @@ int ResolverController::getResolverInfo(int32_t netId, std::vector<std::string>*
    ResolverStats::encodeAll(res_stats, stats);
    ResolverStats::encodeAll(res_stats, stats);


    const auto privateDnsStatus = PrivateDnsConfiguration::getInstance().getStatus(netId);
    const auto privateDnsStatus = PrivateDnsConfiguration::getInstance().getStatus(netId);
    for (const auto& [server, _] : privateDnsStatus.serversMap) {
    for (const auto& [server, _] : privateDnsStatus.dotServersMap) {
        tlsServers->push_back(server.toIpString());
        tlsServers->push_back(server.toIpString());
    }
    }


@@ -362,13 +362,13 @@ void ResolverController::dump(DumpWriter& dw, unsigned netId) {
        mDns64Configuration.dump(dw, netId);
        mDns64Configuration.dump(dw, netId);
        const auto privateDnsStatus = PrivateDnsConfiguration::getInstance().getStatus(netId);
        const auto privateDnsStatus = PrivateDnsConfiguration::getInstance().getStatus(netId);
        dw.println("Private DNS mode: %s", getPrivateDnsModeString(privateDnsStatus.mode));
        dw.println("Private DNS mode: %s", getPrivateDnsModeString(privateDnsStatus.mode));
        if (privateDnsStatus.serversMap.size() == 0) {
        if (privateDnsStatus.dotServersMap.size() == 0) {
            dw.println("No Private DNS servers configured");
            dw.println("No Private DNS servers configured");
        } else {
        } else {
            dw.println("Private DNS configuration (%u entries)",
            dw.println("Private DNS configuration (%u entries)",
                       static_cast<uint32_t>(privateDnsStatus.serversMap.size()));
                       static_cast<uint32_t>(privateDnsStatus.dotServersMap.size()));
            dw.incIndent();
            dw.incIndent();
            for (const auto& [server, validation] : privateDnsStatus.serversMap) {
            for (const auto& [server, validation] : privateDnsStatus.dotServersMap) {
                dw.println("%s name{%s} status{%s}", server.toIpString().c_str(),
                dw.println("%s name{%s} status{%s}", server.toIpString().c_str(),
                           server.name.c_str(), validationStatusToString(validation));
                           server.name.c_str(), validationStatusToString(validation));
            }
            }
Loading