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

Commit 921db2ae authored by Mike Yu's avatar Mike Yu
Browse files

Update Andorid.bp to use DnsResolver v13

Bug: 240259333
Test: atest
Change-Id: I09a7d3059462cf8355f43a1d26723f9e5a9138f1
parent fea7ecb3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ cc_library_headers {
    ],
}

dnsresolver_aidl_interface_lateststable_version = "V12"
dnsresolver_aidl_interface_lateststable_version = "V13"

cc_library_static {
    name: "dnsresolver_aidl_interface-lateststable-ndk",
+2 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ using aidl::android::net::IDnsResolver;
using aidl::android::net::INetd;
using aidl::android::net::ResolverOptionsParcel;
using aidl::android::net::ResolverParamsParcel;
using aidl::android::net::resolv::aidl::DohParamsParcel;
using android::base::Error;
using android::base::Result;
using android::net::ResolverStats;
@@ -51,6 +52,7 @@ ResolverParams::Builder::Builder() {
    mParcel.tlsServers = {kDefaultServer};
    mParcel.caCertificate = kCaCert;
    mParcel.resolverOptions = ResolverOptionsParcel{};  // optional, must be explicitly set.
    mParcel.dohParams = std::nullopt;
}

void DnsResponderClient::SetupMappings(unsigned numHosts, const std::vector<std::string>& domains,
+5 −0
Original line number Diff line number Diff line
@@ -95,6 +95,11 @@ class ResolverParams {
            mParcel.meteredNetwork = metered;
            return *this;
        }
        constexpr Builder& setDohParams(
                const aidl::android::net::resolv::aidl::DohParamsParcel& dohParams) {
            mParcel.dohParams = dohParams;
            return *this;
        }
        aidl::android::net::ResolverParamsParcel build() { return mParcel; }

      private:
+26 −2
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ using aidl::android::net::ResolverHostsParcel;
using aidl::android::net::ResolverOptionsParcel;
using aidl::android::net::ResolverParamsParcel;
using aidl::android::net::metrics::INetdEventListener;
using aidl::android::net::resolv::aidl::DohParamsParcel;
using android::base::ReadFdToString;
using android::base::unique_fd;
using android::net::ResolverStats;
@@ -215,6 +216,10 @@ class DnsResolverBinderTest : public NetNativeTestBase {
                           toString(parms->hosts), parms->tcMode, parms->enforceDnsUid);
    }

    std::string toString(const std::optional<DohParamsParcel>& params) {
        return params.has_value() ? params.value().toString() : "(null)";
    }

    std::string toString(const ResolverParamsParcel& parms) {
        return fmt::format(
                "ResolverParamsParcel{{netId: {}, sampleValiditySeconds: {}, successThreshold: {}, "
@@ -224,14 +229,15 @@ class DnsResolverBinderTest : public NetNativeTestBase {
                "tlsName: {}, tlsServers: [{}], "
                "tlsFingerprints: [{}], "
                "caCertificate: {}, tlsConnectTimeoutMs: {}, "
                "resolverOptions: {}, transportTypes: [{}], meteredNetwork: {}}}",
                "resolverOptions: {}, transportTypes: [{}], meteredNetwork: {}, dohParams: {}}}",
                parms.netId, parms.sampleValiditySeconds, parms.successThreshold, parms.minSamples,
                parms.maxSamples, parms.baseTimeoutMsec, parms.retryCount,
                fmt::join(parms.servers, ", "), fmt::join(parms.domains, ", "), parms.tlsName,
                fmt::join(parms.tlsServers, ", "), fmt::join(parms.tlsFingerprints, ", "),
                android::base::StringReplace(parms.caCertificate, "\n", "\\n", true),
                parms.tlsConnectTimeoutMs, toString(parms.resolverOptions),
                fmt::join(parms.transportTypes, ", "), parms.meteredNetwork);
                fmt::join(parms.transportTypes, ", "), parms.meteredNetwork,
                toString(parms.dohParams));
    }

    PossibleLogData toSetResolverConfigurationLogData(const ResolverParamsParcel& parms,
@@ -498,6 +504,24 @@ TEST_F(DnsResolverBinderTest, SetResolverConfiguration_TransportTypes_Default) {
    EXPECT_THAT(str, HasSubstr("UNKNOWN"));
}

TEST_F(DnsResolverBinderTest, SetResolverConfiguration_DohParams) {
    const auto paramsWithoutDohParams = ResolverParams::Builder().build();
    ::ndk::ScopedAStatus status = mDnsResolver->setResolverConfiguration(paramsWithoutDohParams);
    EXPECT_TRUE(status.isOk()) << status.getMessage();
    mExpectedLogDataWithPacel.push_back(toSetResolverConfigurationLogData(paramsWithoutDohParams));

    const DohParamsParcel dohParams = {
            .name = "doh.google",
            .ips = {"1.2.3.4", "2001:db8::2"},
            .dohpath = "/dns-query{?dns}",
            .port = 443,
    };
    const auto paramsWithDohParams = ResolverParams::Builder().setDohParams(dohParams).build();
    status = mDnsResolver->setResolverConfiguration(paramsWithDohParams);
    EXPECT_TRUE(status.isOk()) << status.getMessage();
    mExpectedLogDataWithPacel.push_back(toSetResolverConfigurationLogData(paramsWithDohParams));
}

class MeteredNetworkParameterizedTest : public DnsResolverBinderTest,
                                        public testing::WithParamInterface<bool> {};