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

Commit 8d9da4ae authored by Mike Yu's avatar Mike Yu
Browse files

Decouple PrivateDnsConfiguration from resolv_cache.h

This change is to simplify writting tests for PrivateDnsConfiguration.

Also add a network ID check before starting any resolver configuration.

Bug: 79727473
Test: cd packages/modules/DnsResolver && atest
Change-Id: Icf0040c67aafe5318a61fc3d2b7158d8f0384367
parent 5e1b9918
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@
#include "ResolverEventReporter.h"
#include "netd_resolv/resolv.h"
#include "netdutils/BackoffSequence.h"
#include "resolv_cache.h"
#include "util.h"

using android::base::StringPrintf;
@@ -90,7 +89,6 @@ int PrivateDnsConfiguration::set(int32_t netId, uint32_t mark,
    } else {
        mPrivateDnsModes[netId] = PrivateDnsMode::OFF;
        mPrivateDnsTransports.erase(netId);
        resolv_stats_set_servers_for_dot(netId, {});
        mPrivateDnsValidateThreads.erase(netId);
        // TODO: As mPrivateDnsValidateThreads is reset, validation threads which haven't yet
        // finished are considered outdated. Consider signaling the outdated validation threads to
@@ -128,7 +126,7 @@ int PrivateDnsConfiguration::set(int32_t netId, uint32_t mark,
        }
    }

    return resolv_stats_set_servers_for_dot(netId, servers);
    return 0;
}

PrivateDnsStatus PrivateDnsConfiguration::getStatus(unsigned netId) {
+8 −0
Original line number Diff line number Diff line
@@ -201,6 +201,10 @@ int ResolverController::flushNetworkCache(unsigned netId) {
int ResolverController::setResolverConfiguration(const ResolverParamsParcel& resolverParams) {
    using aidl::android::net::IDnsResolver;

    if (!has_named_cache(resolverParams.netId)) {
        return -ENOENT;
    }

    // Expect to get the mark with system permission.
    android_net_context netcontext;
    gResNetdCallbacks.get_network_context(resolverParams.netId, 0 /* uid */, &netcontext);
@@ -223,6 +227,10 @@ int ResolverController::setResolverConfiguration(const ResolverParamsParcel& res
        return err;
    }

    if (int err = resolv_stats_set_servers_for_dot(resolverParams.netId, tlsServers); err != 0) {
        return err;
    }

    res_params res_params = {};
    res_params.sample_validity = resolverParams.sampleValiditySeconds;
    res_params.success_threshold = resolverParams.successThreshold;
+0 −1
Original line number Diff line number Diff line
@@ -100,7 +100,6 @@ int resolv_flush_cache_for_net(unsigned netid);
// Get transport types to a given network.
android::net::NetworkType resolv_get_network_types_for_net(unsigned netid);

// For test only.
// Return true if the cache is existent in the given network, false otherwise.
bool has_named_cache(unsigned netid);