xref: /aosp_15_r20/system/netd/server/NetdNativeService.h (revision 8542734a0dd1db395a4d42aae09c37f3c3c3e7a1)
1*8542734aSAndroid Build Coastguard Worker /**
2*8542734aSAndroid Build Coastguard Worker  * Copyright (c) 2016, The Android Open Source Project
3*8542734aSAndroid Build Coastguard Worker  *
4*8542734aSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*8542734aSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*8542734aSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*8542734aSAndroid Build Coastguard Worker  *
8*8542734aSAndroid Build Coastguard Worker  *     http://www.apache.org/licenses/LICENSE-2.0
9*8542734aSAndroid Build Coastguard Worker  *
10*8542734aSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*8542734aSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*8542734aSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*8542734aSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*8542734aSAndroid Build Coastguard Worker  * limitations under the License.
15*8542734aSAndroid Build Coastguard Worker  */
16*8542734aSAndroid Build Coastguard Worker 
17*8542734aSAndroid Build Coastguard Worker #ifndef _NETD_NATIVE_SERVICE_H_
18*8542734aSAndroid Build Coastguard Worker #define _NETD_NATIVE_SERVICE_H_
19*8542734aSAndroid Build Coastguard Worker 
20*8542734aSAndroid Build Coastguard Worker #include <vector>
21*8542734aSAndroid Build Coastguard Worker 
22*8542734aSAndroid Build Coastguard Worker #include <binder/BinderService.h>
23*8542734aSAndroid Build Coastguard Worker #include <netdutils/Log.h>
24*8542734aSAndroid Build Coastguard Worker 
25*8542734aSAndroid Build Coastguard Worker #include "android/net/BnNetd.h"
26*8542734aSAndroid Build Coastguard Worker 
27*8542734aSAndroid Build Coastguard Worker namespace android {
28*8542734aSAndroid Build Coastguard Worker namespace net {
29*8542734aSAndroid Build Coastguard Worker 
30*8542734aSAndroid Build Coastguard Worker class NetdNativeService : public BinderService<NetdNativeService>, public BnNetd {
31*8542734aSAndroid Build Coastguard Worker   public:
32*8542734aSAndroid Build Coastguard Worker     NetdNativeService();
33*8542734aSAndroid Build Coastguard Worker     static status_t start();
getServiceName()34*8542734aSAndroid Build Coastguard Worker     static char const* getServiceName() { return "netd"; }
35*8542734aSAndroid Build Coastguard Worker     virtual status_t dump(int fd, const Vector<String16> &args) override;
36*8542734aSAndroid Build Coastguard Worker 
37*8542734aSAndroid Build Coastguard Worker     binder::Status isAlive(bool *alive) override;
38*8542734aSAndroid Build Coastguard Worker 
39*8542734aSAndroid Build Coastguard Worker     // Firewall commands.
40*8542734aSAndroid Build Coastguard Worker     binder::Status firewallReplaceUidChain(const std::string& chainName, bool isAllowlist,
41*8542734aSAndroid Build Coastguard Worker                                            const std::vector<int32_t>& uids, bool* ret) override;
42*8542734aSAndroid Build Coastguard Worker     binder::Status firewallSetFirewallType(int32_t firewallType) override;
43*8542734aSAndroid Build Coastguard Worker     binder::Status firewallSetInterfaceRule(const std::string& ifName,
44*8542734aSAndroid Build Coastguard Worker                                             int32_t firewallRule) override;
45*8542734aSAndroid Build Coastguard Worker     binder::Status firewallSetUidRule(int32_t childChain, int32_t uid,
46*8542734aSAndroid Build Coastguard Worker                                       int32_t firewallRule) override;
47*8542734aSAndroid Build Coastguard Worker     binder::Status firewallEnableChildChain(int32_t childChain, bool enable) override;
48*8542734aSAndroid Build Coastguard Worker     binder::Status firewallAddUidInterfaceRules(const std::string& ifName,
49*8542734aSAndroid Build Coastguard Worker                                                 const std::vector<int32_t>& uids) override;
50*8542734aSAndroid Build Coastguard Worker     binder::Status firewallRemoveUidInterfaceRules(const std::vector<int32_t>& uids) override;
51*8542734aSAndroid Build Coastguard Worker 
52*8542734aSAndroid Build Coastguard Worker     // Bandwidth control commands.
53*8542734aSAndroid Build Coastguard Worker     binder::Status bandwidthEnableDataSaver(bool enable, bool *ret) override;
54*8542734aSAndroid Build Coastguard Worker     binder::Status bandwidthSetInterfaceQuota(const std::string& ifName, int64_t bytes) override;
55*8542734aSAndroid Build Coastguard Worker     binder::Status bandwidthRemoveInterfaceQuota(const std::string& ifName) override;
56*8542734aSAndroid Build Coastguard Worker     binder::Status bandwidthSetInterfaceAlert(const std::string& ifName, int64_t bytes) override;
57*8542734aSAndroid Build Coastguard Worker     binder::Status bandwidthRemoveInterfaceAlert(const std::string& ifName) override;
58*8542734aSAndroid Build Coastguard Worker     binder::Status bandwidthSetGlobalAlert(int64_t bytes) override;
59*8542734aSAndroid Build Coastguard Worker     binder::Status bandwidthAddNaughtyApp(int32_t uid) override;
60*8542734aSAndroid Build Coastguard Worker     binder::Status bandwidthRemoveNaughtyApp(int32_t uid) override;
61*8542734aSAndroid Build Coastguard Worker     binder::Status bandwidthAddNiceApp(int32_t uid) override;
62*8542734aSAndroid Build Coastguard Worker     binder::Status bandwidthRemoveNiceApp(int32_t uid) override;
63*8542734aSAndroid Build Coastguard Worker 
64*8542734aSAndroid Build Coastguard Worker     // Network and routing commands.
65*8542734aSAndroid Build Coastguard Worker     binder::Status networkCreatePhysical(int32_t netId, int32_t permission) override;
66*8542734aSAndroid Build Coastguard Worker     binder::Status networkCreateVpn(int32_t netId, bool secure) override;
67*8542734aSAndroid Build Coastguard Worker     binder::Status networkCreate(const NativeNetworkConfig& config) override;
68*8542734aSAndroid Build Coastguard Worker     binder::Status networkDestroy(int32_t netId) override;
69*8542734aSAndroid Build Coastguard Worker 
70*8542734aSAndroid Build Coastguard Worker     binder::Status networkAddInterface(int32_t netId, const std::string& iface) override;
71*8542734aSAndroid Build Coastguard Worker     binder::Status networkRemoveInterface(int32_t netId, const std::string& iface) override;
72*8542734aSAndroid Build Coastguard Worker 
73*8542734aSAndroid Build Coastguard Worker     binder::Status networkAddUidRanges(int32_t netId,
74*8542734aSAndroid Build Coastguard Worker                                        const std::vector<UidRangeParcel>& uids) override;
75*8542734aSAndroid Build Coastguard Worker     binder::Status networkRemoveUidRanges(int32_t netId,
76*8542734aSAndroid Build Coastguard Worker                                           const std::vector<UidRangeParcel>& uids) override;
77*8542734aSAndroid Build Coastguard Worker     binder::Status networkAddUidRangesParcel(
78*8542734aSAndroid Build Coastguard Worker             const netd::aidl::NativeUidRangeConfig& uidRangesConfig) override;
79*8542734aSAndroid Build Coastguard Worker     binder::Status networkRemoveUidRangesParcel(
80*8542734aSAndroid Build Coastguard Worker             const netd::aidl::NativeUidRangeConfig& uidRangesConfig) override;
81*8542734aSAndroid Build Coastguard Worker     binder::Status networkRejectNonSecureVpn(bool enable,
82*8542734aSAndroid Build Coastguard Worker                                              const std::vector<UidRangeParcel>& uids) override;
83*8542734aSAndroid Build Coastguard Worker     binder::Status networkAddRouteParcel(int32_t netId, const RouteInfoParcel& route) override;
84*8542734aSAndroid Build Coastguard Worker     binder::Status networkUpdateRouteParcel(int32_t netId, const RouteInfoParcel& route) override;
85*8542734aSAndroid Build Coastguard Worker     binder::Status networkRemoveRouteParcel(int32_t netId, const RouteInfoParcel& route) override;
86*8542734aSAndroid Build Coastguard Worker     binder::Status networkAddRoute(int32_t netId, const std::string& ifName,
87*8542734aSAndroid Build Coastguard Worker                                    const std::string& destination,
88*8542734aSAndroid Build Coastguard Worker                                    const std::string& nextHop) override;
89*8542734aSAndroid Build Coastguard Worker     binder::Status networkRemoveRoute(int32_t netId, const std::string& ifName,
90*8542734aSAndroid Build Coastguard Worker                                       const std::string& destination,
91*8542734aSAndroid Build Coastguard Worker                                       const std::string& nextHop) override;
92*8542734aSAndroid Build Coastguard Worker     binder::Status networkAddLegacyRoute(int32_t netId, const std::string& ifName,
93*8542734aSAndroid Build Coastguard Worker                                          const std::string& destination, const std::string& nextHop,
94*8542734aSAndroid Build Coastguard Worker                                          int32_t uid) override;
95*8542734aSAndroid Build Coastguard Worker     binder::Status networkRemoveLegacyRoute(int32_t netId, const std::string& ifName,
96*8542734aSAndroid Build Coastguard Worker                                             const std::string& destination,
97*8542734aSAndroid Build Coastguard Worker                                             const std::string& nextHop, int32_t uid) override;
98*8542734aSAndroid Build Coastguard Worker     binder::Status networkSetDefault(int32_t netId) override;
99*8542734aSAndroid Build Coastguard Worker     binder::Status networkClearDefault() override;
100*8542734aSAndroid Build Coastguard Worker     binder::Status networkSetPermissionForNetwork(int32_t netId, int32_t permission) override;
101*8542734aSAndroid Build Coastguard Worker     binder::Status networkSetPermissionForUser(int32_t permission,
102*8542734aSAndroid Build Coastguard Worker                                                const std::vector<int32_t>& uids) override;
103*8542734aSAndroid Build Coastguard Worker     binder::Status networkClearPermissionForUser(const std::vector<int32_t>& uids) override;
104*8542734aSAndroid Build Coastguard Worker     binder::Status networkSetProtectAllow(int32_t uid) override;
105*8542734aSAndroid Build Coastguard Worker     binder::Status networkSetProtectDeny(int32_t uid) override;
106*8542734aSAndroid Build Coastguard Worker     binder::Status networkAllowBypassVpnOnNetwork(bool allow, int32_t uid, int32_t netId) override;
107*8542734aSAndroid Build Coastguard Worker     // For test (internal use only).
108*8542734aSAndroid Build Coastguard Worker     binder::Status networkGetDefault(int32_t* netId) override;
109*8542734aSAndroid Build Coastguard Worker     binder::Status networkCanProtect(int32_t uid, bool* ret) override;
110*8542734aSAndroid Build Coastguard Worker 
111*8542734aSAndroid Build Coastguard Worker     binder::Status trafficSetNetPermForUids(int32_t permission,
112*8542734aSAndroid Build Coastguard Worker                                             const std::vector<int32_t>& uids) override;
113*8542734aSAndroid Build Coastguard Worker 
114*8542734aSAndroid Build Coastguard Worker     // SOCK_DIAG commands.
115*8542734aSAndroid Build Coastguard Worker     binder::Status socketDestroy(const std::vector<UidRangeParcel>& uids,
116*8542734aSAndroid Build Coastguard Worker                                  const std::vector<int32_t>& skipUids) override;
117*8542734aSAndroid Build Coastguard Worker 
118*8542734aSAndroid Build Coastguard Worker     binder::Status setIPv6AddrGenMode(const std::string& ifName, int32_t mode) override;
119*8542734aSAndroid Build Coastguard Worker 
120*8542734aSAndroid Build Coastguard Worker     // NFLOG-related commands
121*8542734aSAndroid Build Coastguard Worker     binder::Status wakeupAddInterface(const std::string& ifName, const std::string& prefix,
122*8542734aSAndroid Build Coastguard Worker                                       int32_t mark, int32_t mask) override;
123*8542734aSAndroid Build Coastguard Worker 
124*8542734aSAndroid Build Coastguard Worker     binder::Status wakeupDelInterface(const std::string& ifName, const std::string& prefix,
125*8542734aSAndroid Build Coastguard Worker                                       int32_t mark, int32_t mask) override;
126*8542734aSAndroid Build Coastguard Worker 
127*8542734aSAndroid Build Coastguard Worker     // Tethering-related commands.
128*8542734aSAndroid Build Coastguard Worker     binder::Status tetherApplyDnsInterfaces(bool *ret) override;
129*8542734aSAndroid Build Coastguard Worker     binder::Status tetherGetStats(
130*8542734aSAndroid Build Coastguard Worker             std::vector<android::net::TetherStatsParcel>* tetherStatsVec) override;
131*8542734aSAndroid Build Coastguard Worker     binder::Status tetherOffloadGetStats(
132*8542734aSAndroid Build Coastguard Worker             std::vector<android::net::TetherStatsParcel>* tetherStatsVec) override;
133*8542734aSAndroid Build Coastguard Worker     binder::Status tetherStart(const std::vector<std::string>& dhcpRanges) override;
134*8542734aSAndroid Build Coastguard Worker     binder::Status tetherStartWithConfiguration(const TetherConfigParcel& config) override;
135*8542734aSAndroid Build Coastguard Worker     binder::Status tetherStop() override;
136*8542734aSAndroid Build Coastguard Worker     binder::Status tetherIsEnabled(bool* enabled) override;
137*8542734aSAndroid Build Coastguard Worker     binder::Status tetherInterfaceAdd(const std::string& ifName) override;
138*8542734aSAndroid Build Coastguard Worker     binder::Status tetherInterfaceRemove(const std::string& ifName) override;
139*8542734aSAndroid Build Coastguard Worker     binder::Status tetherInterfaceList(std::vector<std::string>* ifList) override;
140*8542734aSAndroid Build Coastguard Worker     binder::Status tetherDnsSet(int32_t netId, const std::vector<std::string>& dnsAddrs) override;
141*8542734aSAndroid Build Coastguard Worker     binder::Status tetherDnsList(std::vector<std::string>* dnsList) override;
142*8542734aSAndroid Build Coastguard Worker     binder::Status tetherAddForward(const std::string& intIface,
143*8542734aSAndroid Build Coastguard Worker                                     const std::string& extIface) override;
144*8542734aSAndroid Build Coastguard Worker     binder::Status tetherRemoveForward(const std::string& intIface,
145*8542734aSAndroid Build Coastguard Worker                                        const std::string& extIface) override;
146*8542734aSAndroid Build Coastguard Worker     binder::Status tetherOffloadRuleAdd(const android::net::TetherOffloadRuleParcel& rule) override;
147*8542734aSAndroid Build Coastguard Worker     binder::Status tetherOffloadRuleRemove(
148*8542734aSAndroid Build Coastguard Worker             const android::net::TetherOffloadRuleParcel& rule) override;
149*8542734aSAndroid Build Coastguard Worker     binder::Status tetherOffloadSetInterfaceQuota(int ifIndex, int64_t quotaBytes) override;
150*8542734aSAndroid Build Coastguard Worker     binder::Status tetherOffloadGetAndClearStats(
151*8542734aSAndroid Build Coastguard Worker             int ifIndex, android::net::TetherStatsParcel* tetherStats) override;
152*8542734aSAndroid Build Coastguard Worker 
153*8542734aSAndroid Build Coastguard Worker     // Interface-related commands.
154*8542734aSAndroid Build Coastguard Worker     binder::Status interfaceAddAddress(const std::string &ifName,
155*8542734aSAndroid Build Coastguard Worker             const std::string &addrString, int prefixLength) override;
156*8542734aSAndroid Build Coastguard Worker     binder::Status interfaceDelAddress(const std::string &ifName,
157*8542734aSAndroid Build Coastguard Worker             const std::string &addrString, int prefixLength) override;
158*8542734aSAndroid Build Coastguard Worker     binder::Status interfaceGetList(std::vector<std::string>* interfaceListResult) override;
159*8542734aSAndroid Build Coastguard Worker     binder::Status interfaceGetCfg(const std::string& ifName,
160*8542734aSAndroid Build Coastguard Worker                                    InterfaceConfigurationParcel* interfaceGetCfgResult) override;
161*8542734aSAndroid Build Coastguard Worker     binder::Status interfaceSetCfg(const InterfaceConfigurationParcel& cfg) override;
162*8542734aSAndroid Build Coastguard Worker     binder::Status interfaceSetIPv6PrivacyExtensions(const std::string& ifName,
163*8542734aSAndroid Build Coastguard Worker                                                      bool enable) override;
164*8542734aSAndroid Build Coastguard Worker     binder::Status interfaceClearAddrs(const std::string& ifName) override;
165*8542734aSAndroid Build Coastguard Worker     binder::Status interfaceSetEnableIPv6(const std::string& ifName, bool enable) override;
166*8542734aSAndroid Build Coastguard Worker     binder::Status interfaceSetMtu(const std::string& ifName, int32_t mtuValue) override;
167*8542734aSAndroid Build Coastguard Worker 
168*8542734aSAndroid Build Coastguard Worker     binder::Status getProcSysNet(int32_t ipversion, int32_t which, const std::string& ifname,
169*8542734aSAndroid Build Coastguard Worker                                  const std::string& parameter, std::string* value) override;
170*8542734aSAndroid Build Coastguard Worker     binder::Status setProcSysNet(int32_t ipversion, int32_t which, const std::string& ifname,
171*8542734aSAndroid Build Coastguard Worker                                  const std::string& parameter, const std::string& value) override;
172*8542734aSAndroid Build Coastguard Worker 
173*8542734aSAndroid Build Coastguard Worker     binder::Status ipSecSetEncapSocketOwner(const os::ParcelFileDescriptor& socket, int newUid);
174*8542734aSAndroid Build Coastguard Worker 
175*8542734aSAndroid Build Coastguard Worker     binder::Status ipSecAllocateSpi(
176*8542734aSAndroid Build Coastguard Worker             int32_t transformId,
177*8542734aSAndroid Build Coastguard Worker             const std::string& localAddress,
178*8542734aSAndroid Build Coastguard Worker             const std::string& remoteAddress,
179*8542734aSAndroid Build Coastguard Worker             int32_t inSpi,
180*8542734aSAndroid Build Coastguard Worker             int32_t* outSpi);
181*8542734aSAndroid Build Coastguard Worker 
182*8542734aSAndroid Build Coastguard Worker     binder::Status ipSecAddSecurityAssociation(
183*8542734aSAndroid Build Coastguard Worker             int32_t transformId, int32_t mode, const std::string& sourceAddress,
184*8542734aSAndroid Build Coastguard Worker             const std::string& destinationAddress, int32_t underlyingNetId, int32_t spi,
185*8542734aSAndroid Build Coastguard Worker             int32_t markValue, int32_t markMask, const std::string& authAlgo,
186*8542734aSAndroid Build Coastguard Worker             const std::vector<uint8_t>& authKey, int32_t authTruncBits,
187*8542734aSAndroid Build Coastguard Worker             const std::string& cryptAlgo, const std::vector<uint8_t>& cryptKey,
188*8542734aSAndroid Build Coastguard Worker             int32_t cryptTruncBits, const std::string& aeadAlgo,
189*8542734aSAndroid Build Coastguard Worker             const std::vector<uint8_t>& aeadKey, int32_t aeadIcvBits, int32_t encapType,
190*8542734aSAndroid Build Coastguard Worker             int32_t encapLocalPort, int32_t encapRemotePort, int32_t interfaceId);
191*8542734aSAndroid Build Coastguard Worker 
192*8542734aSAndroid Build Coastguard Worker     binder::Status ipSecDeleteSecurityAssociation(int32_t transformId,
193*8542734aSAndroid Build Coastguard Worker                                                   const std::string& sourceAddress,
194*8542734aSAndroid Build Coastguard Worker                                                   const std::string& destinationAddress,
195*8542734aSAndroid Build Coastguard Worker                                                   int32_t spi, int32_t markValue, int32_t markMask,
196*8542734aSAndroid Build Coastguard Worker                                                   int32_t interfaceId);
197*8542734aSAndroid Build Coastguard Worker 
198*8542734aSAndroid Build Coastguard Worker     binder::Status ipSecApplyTransportModeTransform(const os::ParcelFileDescriptor& socket,
199*8542734aSAndroid Build Coastguard Worker                                                     int32_t transformId, int32_t direction,
200*8542734aSAndroid Build Coastguard Worker                                                     const std::string& sourceAddress,
201*8542734aSAndroid Build Coastguard Worker                                                     const std::string& destinationAddress,
202*8542734aSAndroid Build Coastguard Worker                                                     int32_t spi);
203*8542734aSAndroid Build Coastguard Worker 
204*8542734aSAndroid Build Coastguard Worker     binder::Status ipSecRemoveTransportModeTransform(const os::ParcelFileDescriptor& socket);
205*8542734aSAndroid Build Coastguard Worker 
206*8542734aSAndroid Build Coastguard Worker     binder::Status ipSecAddSecurityPolicy(int32_t transformId, int32_t selAddrFamily,
207*8542734aSAndroid Build Coastguard Worker                                           int32_t direction, const std::string& tmplSrcAddress,
208*8542734aSAndroid Build Coastguard Worker                                           const std::string& tmplDstAddress, int32_t spi,
209*8542734aSAndroid Build Coastguard Worker                                           int32_t markValue, int32_t markMask, int32_t interfaceId);
210*8542734aSAndroid Build Coastguard Worker 
211*8542734aSAndroid Build Coastguard Worker     binder::Status ipSecUpdateSecurityPolicy(int32_t transformId, int32_t selAddrFamily,
212*8542734aSAndroid Build Coastguard Worker                                              int32_t direction, const std::string& tmplSrcAddress,
213*8542734aSAndroid Build Coastguard Worker                                              const std::string& tmplDstAddress, int32_t spi,
214*8542734aSAndroid Build Coastguard Worker                                              int32_t markValue, int32_t markMask,
215*8542734aSAndroid Build Coastguard Worker                                              int32_t interfaceId);
216*8542734aSAndroid Build Coastguard Worker 
217*8542734aSAndroid Build Coastguard Worker     binder::Status ipSecDeleteSecurityPolicy(int32_t transformId, int32_t selAddrFamily,
218*8542734aSAndroid Build Coastguard Worker                                              int32_t direction, int32_t markValue, int32_t markMask,
219*8542734aSAndroid Build Coastguard Worker                                              int32_t interfaceId);
220*8542734aSAndroid Build Coastguard Worker 
221*8542734aSAndroid Build Coastguard Worker     binder::Status trafficSwapActiveStatsMap() override;
222*8542734aSAndroid Build Coastguard Worker 
223*8542734aSAndroid Build Coastguard Worker     binder::Status ipSecAddTunnelInterface(const std::string& deviceName,
224*8542734aSAndroid Build Coastguard Worker                                            const std::string& localAddress,
225*8542734aSAndroid Build Coastguard Worker                                            const std::string& remoteAddress, int32_t iKey,
226*8542734aSAndroid Build Coastguard Worker                                            int32_t oKey, int32_t interfaceId);
227*8542734aSAndroid Build Coastguard Worker 
228*8542734aSAndroid Build Coastguard Worker     binder::Status ipSecUpdateTunnelInterface(const std::string& deviceName,
229*8542734aSAndroid Build Coastguard Worker                                               const std::string& localAddress,
230*8542734aSAndroid Build Coastguard Worker                                               const std::string& remoteAddress, int32_t iKey,
231*8542734aSAndroid Build Coastguard Worker                                               int32_t oKey, int32_t interfaceId);
232*8542734aSAndroid Build Coastguard Worker 
233*8542734aSAndroid Build Coastguard Worker     binder::Status ipSecRemoveTunnelInterface(const std::string& deviceName);
234*8542734aSAndroid Build Coastguard Worker 
235*8542734aSAndroid Build Coastguard Worker     binder::Status ipSecMigrate(const IpSecMigrateInfoParcel& migrateInfo);
236*8542734aSAndroid Build Coastguard Worker 
237*8542734aSAndroid Build Coastguard Worker     // Idletimer-related commands
238*8542734aSAndroid Build Coastguard Worker     binder::Status idletimerAddInterface(const std::string& ifName, int32_t timeout,
239*8542734aSAndroid Build Coastguard Worker                                          const std::string& classLabel) override;
240*8542734aSAndroid Build Coastguard Worker     binder::Status idletimerRemoveInterface(const std::string& ifName, int32_t timeout,
241*8542734aSAndroid Build Coastguard Worker                                             const std::string& classLabel) override;
242*8542734aSAndroid Build Coastguard Worker 
243*8542734aSAndroid Build Coastguard Worker     // Strict-related commands
244*8542734aSAndroid Build Coastguard Worker     binder::Status strictUidCleartextPenalty(int32_t uid, int32_t policyPenalty) override;
245*8542734aSAndroid Build Coastguard Worker 
246*8542734aSAndroid Build Coastguard Worker     // Clatd-related commands
247*8542734aSAndroid Build Coastguard Worker     binder::Status clatdStart(const std::string& ifName, const std::string& nat64Prefix,
248*8542734aSAndroid Build Coastguard Worker                               std::string* v6Address) override;
249*8542734aSAndroid Build Coastguard Worker     binder::Status clatdStop(const std::string& ifName) override;
250*8542734aSAndroid Build Coastguard Worker 
251*8542734aSAndroid Build Coastguard Worker     // Ipfw-related commands
252*8542734aSAndroid Build Coastguard Worker     binder::Status ipfwdEnabled(bool* status) override;
253*8542734aSAndroid Build Coastguard Worker     binder::Status ipfwdGetRequesterList(std::vector<std::string>* requesterList) override;
254*8542734aSAndroid Build Coastguard Worker     binder::Status ipfwdEnableForwarding(const std::string& requester) override;
255*8542734aSAndroid Build Coastguard Worker     binder::Status ipfwdDisableForwarding(const std::string& requester) override;
256*8542734aSAndroid Build Coastguard Worker     binder::Status ipfwdAddInterfaceForward(const std::string& fromIface,
257*8542734aSAndroid Build Coastguard Worker                                             const std::string& toIface) override;
258*8542734aSAndroid Build Coastguard Worker     binder::Status ipfwdRemoveInterfaceForward(const std::string& fromIface,
259*8542734aSAndroid Build Coastguard Worker                                                const std::string& toIface) override;
260*8542734aSAndroid Build Coastguard Worker 
261*8542734aSAndroid Build Coastguard Worker     // tcp_mem-config command
262*8542734aSAndroid Build Coastguard Worker     binder::Status setTcpRWmemorySize(const std::string& rmemValues,
263*8542734aSAndroid Build Coastguard Worker                                       const std::string& wmemValues) override;
264*8542734aSAndroid Build Coastguard Worker 
265*8542734aSAndroid Build Coastguard Worker     binder::Status registerUnsolicitedEventListener(
266*8542734aSAndroid Build Coastguard Worker             const android::sp<android::net::INetdUnsolicitedEventListener>& listener) override;
267*8542734aSAndroid Build Coastguard Worker 
268*8542734aSAndroid Build Coastguard Worker     binder::Status getOemNetd(android::sp<android::IBinder>* listener) override;
269*8542734aSAndroid Build Coastguard Worker     binder::Status getFwmarkForNetwork(int32_t netId, MarkMaskParcel* markmask);
270*8542734aSAndroid Build Coastguard Worker     binder::Status setNetworkAllowlist(
271*8542734aSAndroid Build Coastguard Worker             const std::vector<netd::aidl::NativeUidRangeConfig>& rangeConfigs) override;
272*8542734aSAndroid Build Coastguard Worker 
273*8542734aSAndroid Build Coastguard Worker   private:
274*8542734aSAndroid Build Coastguard Worker     std::vector<uid_t> intsToUids(const std::vector<int32_t>& intUids);
275*8542734aSAndroid Build Coastguard Worker     Permission convertPermission(int32_t permission);
276*8542734aSAndroid Build Coastguard Worker     static FirewallRule parseRule(int32_t firewallRule);
277*8542734aSAndroid Build Coastguard Worker     static ChildChain parseChildChain(int32_t childChain);
278*8542734aSAndroid Build Coastguard Worker };
279*8542734aSAndroid Build Coastguard Worker 
280*8542734aSAndroid Build Coastguard Worker }  // namespace net
281*8542734aSAndroid Build Coastguard Worker }  // namespace android
282*8542734aSAndroid Build Coastguard Worker 
283*8542734aSAndroid Build Coastguard Worker #endif  // _NETD_NATIVE_SERVICE_H_
284