1/**
2 * Copyright (c) 2016, 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 _NETD_NATIVE_SERVICE_H_
18#define _NETD_NATIVE_SERVICE_H_
19
20#include <vector>
21
22#include <binder/BinderService.h>
23
24#include "android/net/BnNetd.h"
25#include "android/net/UidRange.h"
26
27namespace android {
28namespace net {
29
30class NetdNativeService : public BinderService<NetdNativeService>, public BnNetd {
31  public:
32    static status_t start();
33    static char const* getServiceName() { return "netd"; }
34    virtual status_t dump(int fd, const Vector<String16> &args) override;
35
36    binder::Status isAlive(bool *alive) override;
37    binder::Status firewallReplaceUidChain(
38            const String16& chainName, bool isWhitelist,
39            const std::vector<int32_t>& uids, bool *ret) override;
40    binder::Status bandwidthEnableDataSaver(bool enable, bool *ret) override;
41    binder::Status networkRejectNonSecureVpn(bool enable, const std::vector<UidRange>& uids)
42            override;
43    binder::Status socketDestroy(const std::vector<UidRange>& uids,
44            const std::vector<int32_t>& skipUids) override;
45    binder::Status setResolverConfiguration(int32_t netId, const std::vector<std::string>& servers,
46            const std::vector<std::string>& domains, const std::vector<int32_t>& params) override;
47    binder::Status getResolverInfo(int32_t netId, std::vector<std::string>* servers,
48            std::vector<std::string>* domains, std::vector<int32_t>* params,
49            std::vector<int32_t>* stats) override;
50
51    // Tethering-related commands.
52    binder::Status tetherApplyDnsInterfaces(bool *ret) override;
53
54    binder::Status interfaceAddAddress(const std::string &ifName,
55            const std::string &addrString, int prefixLength) override;
56    binder::Status interfaceDelAddress(const std::string &ifName,
57            const std::string &addrString, int prefixLength) override;
58
59    binder::Status setProcSysNet(
60            int32_t family, int32_t which, const std::string &ifname, const std::string &parameter,
61            const std::string &value) override;
62};
63
64}  // namespace net
65}  // namespace android
66
67#endif  // _NETD_NATIVE_SERVICE_H_
68