blob: fe39301ff7b47cdfeb437f2410877a4a1cf19b3c [file] [log] [blame]
Luke Huang403c0442019-02-25 15:33:42 +08001/**
2 * Copyright (c) 2019, The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef _DNS_RESOLVER_SERVICE_H_
18#define _DNS_RESOLVER_SERVICE_H_
19
20#include <vector>
21
22#include <aidl/android/net/BnDnsResolver.h>
waynema37255182019-03-18 13:22:56 +080023#include <aidl/android/net/ResolverParamsParcel.h>
Luke Huang403c0442019-02-25 15:33:42 +080024#include <android/binder_ibinder.h>
25
26#include "netd_resolv/resolv.h"
27
28namespace android {
29namespace net {
30
31class DnsResolverService : public aidl::android::net::BnDnsResolver {
32 public:
Luke Huang36796f32019-03-13 02:54:45 +080033 static binder_status_t start();
Luke Huang403c0442019-02-25 15:33:42 +080034 static char const* getServiceName() { return "dnsresolver"; }
Luke Huang7b26b202019-03-28 14:09:24 +080035
36 binder_status_t dump(int fd, const char** args, uint32_t numArgs) override;
Luke Huang403c0442019-02-25 15:33:42 +080037
38 ::ndk::ScopedAStatus isAlive(bool* alive) override;
Hungming Chena32c8c12019-01-25 10:47:40 +080039 ::ndk::ScopedAStatus registerEventListener(
40 const std::shared_ptr<aidl::android::net::metrics::INetdEventListener>& listener)
41 override;
paulhub6d71b62020-11-17 00:29:29 +080042 ::ndk::ScopedAStatus registerUnsolicitedEventListener(
43 const std::shared_ptr<
44 aidl::android::net::resolv::aidl::IDnsResolverUnsolicitedEventListener>&
45 listener) override;
Luke Huang403c0442019-02-25 15:33:42 +080046
Luke Huang7b26b202019-03-28 14:09:24 +080047 // Resolver commands.
48 ::ndk::ScopedAStatus setResolverConfiguration(
waynema37255182019-03-18 13:22:56 +080049 const aidl::android::net::ResolverParamsParcel& resolverParams) override;
Luke Huang7b26b202019-03-28 14:09:24 +080050 ::ndk::ScopedAStatus getResolverInfo(
Luke Huang0d84fb72019-04-03 11:20:12 +080051 int32_t netId, std::vector<std::string>* servers, std::vector<std::string>* domains,
52 std::vector<std::string>* tlsServers, std::vector<int32_t>* params,
Luke Huang7b26b202019-03-28 14:09:24 +080053 std::vector<int32_t>* stats,
54 std::vector<int32_t>* wait_for_pending_req_timeout_count) override;
Luke Huang9b80e6c2019-04-09 17:54:09 +080055 ::ndk::ScopedAStatus destroyNetworkCache(int32_t netId) override;
56 ::ndk::ScopedAStatus createNetworkCache(int32_t netId) override;
Ken Chen766feae2019-10-30 15:13:44 +080057 ::ndk::ScopedAStatus flushNetworkCache(int32_t netId) override;
Luke Huang7b26b202019-03-28 14:09:24 +080058
59 // DNS64-related commands
60 ::ndk::ScopedAStatus startPrefix64Discovery(int32_t netId) override;
61 ::ndk::ScopedAStatus stopPrefix64Discovery(int32_t netId) override;
62 // (internal use only)
Lorenzo Colittie51091d2020-05-20 02:48:44 +090063 ::ndk::ScopedAStatus getPrefix64(int32_t netId, std::string* stringPrefix) override;
64 ::ndk::ScopedAStatus setPrefix64(int32_t netId, const std::string& stringPrefix) override;
Luke Huang7b26b202019-03-28 14:09:24 +080065
Ken Chend99022c2019-02-20 21:34:14 +080066 // Debug log command
67 ::ndk::ScopedAStatus setLogSeverity(int32_t logSeverity) override;
68
Luke Huang598daad2019-05-02 18:10:15 +080069 DnsResolverService();
Steven Morelandd0f5d522020-02-13 09:47:02 -080070
71 private:
Luke Huang403c0442019-02-25 15:33:42 +080072 // TODO: Remove below items after libbiner_ndk supports check_permission.
73 ::ndk::ScopedAStatus checkAnyPermission(const std::vector<const char*>& permissions);
Luke Huang403c0442019-02-25 15:33:42 +080074};
75
76} // namespace net
77} // namespace android
78
79#endif // _DNS_RESOLVER_SERVICE_H_