1#ifndef DNS_RESPONDER_CLIENT_H 2#define DNS_RESPONDER_CLIENT_H 3 4#include <cutils/sockets.h> 5 6#include <private/android_filesystem_config.h> 7#include <utils/StrongPointer.h> 8 9#include "android/net/INetd.h" 10#include "binder/IServiceManager.h" 11#include "NetdClient.h" 12#include "dns_responder.h" 13#include "resolv_params.h" 14 15class DnsResponderClient { 16public: 17 struct Mapping { 18 std::string host; 19 std::string entry; 20 std::string ip4; 21 std::string ip6; 22 }; 23 24 virtual ~DnsResponderClient() = default; 25 26 static void SetupMappings(unsigned num_hosts, const std::vector<std::string>& domains, 27 std::vector<Mapping>* mappings); 28 29 bool SetResolversForNetwork(const std::vector<std::string>& servers, 30 const std::vector<std::string>& domains, const std::vector<int>& params); 31 32 bool SetResolversForNetwork(const std::vector<std::string>& servers, 33 const std::vector<std::string>& searchDomains, 34 const std::string& params); 35 36 bool SetResolversWithTls(const std::vector<std::string>& servers, 37 const std::vector<std::string>& searchDomains, 38 const std::vector<int>& params, 39 const std::string& name, 40 const std::vector<std::string>& fingerprints) { 41 // Pass servers as both network-assigned and TLS servers. Tests can 42 // determine on which server and by which protocol queries arrived. 43 return SetResolversWithTls(servers, searchDomains, params, 44 servers, name, fingerprints); 45 } 46 47 bool SetResolversWithTls(const std::vector<std::string>& servers, 48 const std::vector<std::string>& searchDomains, 49 const std::vector<int>& params, 50 const std::vector<std::string>& tlsServers, 51 const std::string& name, 52 const std::vector<std::string>& fingerprints); 53 54 static void SetupDNSServers(unsigned num_servers, const std::vector<Mapping>& mappings, 55 std::vector<std::unique_ptr<test::DNSResponder>>* dns, 56 std::vector<std::string>* servers); 57 58 static void ShutdownDNSServers(std::vector<std::unique_ptr<test::DNSResponder>>* dns); 59 60 int SetupOemNetwork(); 61 62 void TearDownOemNetwork(int oemNetId); 63 64 virtual void SetUp(); 65 66 virtual void TearDown(); 67 68public: 69 android::sp<android::net::INetd> mNetdSrv = nullptr; 70 int mOemNetId = -1; 71}; 72 73#endif // DNS_RESPONDER_CLIENT_H 74