1 /*
2  * Copyright (c) 2021-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <net/if.h>
17 
18 #include "interface_manager.h"
19 #include "net_manager_constants.h"
20 #include "net_manager_native.h"
21 #include "netmanager_base_common_utils.h"
22 #include "netnative_log_wrapper.h"
23 #include "network_permission.h"
24 #include "route_manager.h"
25 #include "traffic_manager.h"
26 #include "vpn_manager.h"
27 #include "vnic_manager.h"
28 
29 using namespace OHOS::NetManagerStandard::CommonUtils;
30 
31 namespace OHOS {
32 namespace nmd {
33 namespace {
34 constexpr const char *TUN_CARD_NAME = "vpn-tun";
35 constexpr const char *TCP_RMEM_PROC_FILE = "/proc/sys/net/ipv4/tcp_rmem";
36 constexpr const char *TCP_WMEM_PROC_FILE = "/proc/sys/net/ipv4/tcp_wmem";
37 constexpr uint32_t TCP_BUFFER_SIZES_TYPE = 2;
38 constexpr uint32_t MAX_TCP_BUFFER_SIZES_COUNT = 6;
39 } // namespace
40 
NetManagerNative()41 NetManagerNative::NetManagerNative()
42     : bandwidthManager_(std::make_shared<BandwidthManager>()),
43       connManager_(std::make_shared<ConnManager>()),
44       firewallManager_(std::make_shared<FirewallManager>()),
45       routeManager_(std::make_shared<RouteManager>()),
46       interfaceManager_(std::make_shared<InterfaceManager>()),
47       sharingManager_(std::make_shared<SharingManager>()),
48       dnsManager_(std::make_shared<DnsManager>())
49 {
50 }
51 
GetOriginInterfaceIndex()52 void NetManagerNative::GetOriginInterfaceIndex()
53 {
54     std::vector<std::string> ifNameList = InterfaceManager::GetInterfaceNames();
55     interfaceIdex_.clear();
56     for (auto iter = ifNameList.begin(); iter != ifNameList.end(); ++iter) {
57         uint32_t infIndex = if_nametoindex((*iter).c_str());
58         interfaceIdex_.push_back(infIndex);
59     }
60 }
61 
UpdateInterfaceIndex(uint32_t infIndex)62 void NetManagerNative::UpdateInterfaceIndex(uint32_t infIndex)
63 {
64     interfaceIdex_.push_back(infIndex);
65 }
66 
GetCurrentInterfaceIndex()67 std::vector<uint32_t> NetManagerNative::GetCurrentInterfaceIndex()
68 {
69     return interfaceIdex_;
70 }
71 
Init()72 void NetManagerNative::Init()
73 {
74     GetOriginInterfaceIndex();
75 }
76 
NetworkReinitRoute()77 int32_t NetManagerNative::NetworkReinitRoute()
78 {
79     return connManager_->ReinitRoute();
80 }
81 
SetInternetPermission(uint32_t uid,uint8_t allow,uint8_t isBroker)82 int32_t NetManagerNative::SetInternetPermission(uint32_t uid, uint8_t allow, uint8_t isBroker)
83 {
84     return connManager_->SetInternetPermission(uid, allow, isBroker);
85 }
86 
NetworkCreatePhysical(int32_t netId,int32_t permission)87 int32_t NetManagerNative::NetworkCreatePhysical(int32_t netId, int32_t permission)
88 {
89     return connManager_->CreatePhysicalNetwork(static_cast<uint16_t>(netId),
90                                                static_cast<NetworkPermission>(permission));
91 }
92 
NetworkCreateVirtual(int32_t netId,bool hasDns)93 int32_t NetManagerNative::NetworkCreateVirtual(int32_t netId, bool hasDns)
94 {
95     return connManager_->CreateVirtualNetwork(netId, hasDns);
96 }
97 
NetworkDestroy(int32_t netId)98 int32_t NetManagerNative::NetworkDestroy(int32_t netId)
99 {
100     auto ret = connManager_->DestroyNetwork(netId);
101     dnsManager_->DestroyNetworkCache(netId);
102     return ret;
103 }
104 
CreateVnic(uint16_t mtu,const std::string & tunAddr,int32_t prefix,const std::set<int32_t> & uids)105 int32_t NetManagerNative::CreateVnic(uint16_t mtu, const std::string &tunAddr, int32_t prefix,
106                                      const std::set<int32_t> &uids)
107 {
108     return VnicManager::GetInstance().CreateVnic(mtu, tunAddr, prefix, uids);
109 }
110 
DestroyVnic()111 int32_t NetManagerNative::DestroyVnic()
112 {
113     return VnicManager::GetInstance().DestroyVnic();
114 }
115 
NetworkAddUids(int32_t netId,const std::vector<UidRange> & uidRanges)116 int32_t NetManagerNative::NetworkAddUids(int32_t netId, const std::vector<UidRange> &uidRanges)
117 {
118     dnsManager_->AddUidRange(netId, uidRanges);
119     return connManager_->AddUidsToNetwork(netId, uidRanges);
120 }
121 
NetworkDelUids(int32_t netId,const std::vector<UidRange> & uidRanges)122 int32_t NetManagerNative::NetworkDelUids(int32_t netId, const std::vector<UidRange> &uidRanges)
123 {
124     dnsManager_->DelUidRange(netId, uidRanges);
125     return connManager_->RemoveUidsFromNetwork(netId, uidRanges);
126 }
127 
NetworkAddInterface(int32_t netId,std::string interfaceName,NetBearType netBearerType)128 int32_t NetManagerNative::NetworkAddInterface(int32_t netId, std::string interfaceName, NetBearType netBearerType)
129 {
130     return connManager_->AddInterfaceToNetwork(netId, interfaceName, netBearerType);
131 }
132 
NetworkRemoveInterface(int32_t netId,std::string interfaceName)133 int32_t NetManagerNative::NetworkRemoveInterface(int32_t netId, std::string interfaceName)
134 {
135     return connManager_->RemoveInterfaceFromNetwork(netId, interfaceName);
136 }
137 
AddInterfaceAddress(std::string ifName,std::string addrString,int32_t prefixLength)138 int32_t NetManagerNative::AddInterfaceAddress(std::string ifName, std::string addrString, int32_t prefixLength)
139 {
140     if (strncmp(ifName.c_str(), TUN_CARD_NAME, strlen(TUN_CARD_NAME)) != 0) {
141         return interfaceManager_->AddAddress(ifName.c_str(), addrString.c_str(), prefixLength);
142     }
143     return VpnManager::GetInstance().SetVpnAddress(ifName, addrString, prefixLength);
144 }
145 
DelInterfaceAddress(std::string ifName,std::string addrString,int32_t prefixLength)146 int32_t NetManagerNative::DelInterfaceAddress(std::string ifName, std::string addrString, int32_t prefixLength)
147 {
148     return interfaceManager_->DelAddress(ifName.c_str(), addrString.c_str(), prefixLength);
149 }
150 
DelInterfaceAddress(std::string ifName,std::string addrString,int32_t prefixLength,const std::string & netCapabilities)151 int32_t NetManagerNative::DelInterfaceAddress(std::string ifName, std::string addrString, int32_t prefixLength,
152                                               const std::string &netCapabilities)
153 {
154     return interfaceManager_->DelAddress(ifName.c_str(), addrString.c_str(), prefixLength, netCapabilities);
155 }
156 
NetworkAddRoute(int32_t netId,std::string interfaceName,std::string destination,std::string nextHop)157 int32_t NetManagerNative::NetworkAddRoute(int32_t netId, std::string interfaceName, std::string destination,
158                                           std::string nextHop)
159 {
160     auto ret = connManager_->AddRoute(netId, interfaceName, destination, nextHop);
161     if (!ret) {
162         dnsManager_->EnableIpv6(netId, destination, nextHop);
163     }
164     return ret;
165 }
166 
NetworkRemoveRoute(int32_t netId,std::string interfaceName,std::string destination,std::string nextHop)167 int32_t NetManagerNative::NetworkRemoveRoute(int32_t netId, std::string interfaceName, std::string destination,
168                                              std::string nextHop)
169 {
170     return connManager_->RemoveRoute(netId, interfaceName, destination, nextHop);
171 }
172 
NetworkGetDefault()173 int32_t NetManagerNative::NetworkGetDefault()
174 {
175     return connManager_->GetDefaultNetwork();
176 }
177 
NetworkSetDefault(int32_t netId)178 int32_t NetManagerNative::NetworkSetDefault(int32_t netId)
179 {
180     dnsManager_->SetDefaultNetwork(netId);
181     return connManager_->SetDefaultNetwork(netId);
182 }
183 
NetworkClearDefault()184 int32_t NetManagerNative::NetworkClearDefault()
185 {
186     return connManager_->ClearDefaultNetwork();
187 }
188 
NetworkSetPermissionForNetwork(int32_t netId,NetworkPermission permission)189 int32_t NetManagerNative::NetworkSetPermissionForNetwork(int32_t netId, NetworkPermission permission)
190 {
191     return connManager_->SetPermissionForNetwork(netId, permission);
192 }
193 
InterfaceGetList()194 std::vector<std::string> NetManagerNative::InterfaceGetList()
195 {
196     return InterfaceManager::GetInterfaceNames();
197 }
198 
GetInterfaceConfig(std::string interfaceName)199 nmd::InterfaceConfigurationParcel NetManagerNative::GetInterfaceConfig(std::string interfaceName)
200 {
201     return InterfaceManager::GetIfaceConfig(interfaceName.c_str());
202 }
203 
SetInterfaceConfig(nmd::InterfaceConfigurationParcel parcel)204 void NetManagerNative::SetInterfaceConfig(nmd::InterfaceConfigurationParcel parcel)
205 {
206     InterfaceManager::SetIfaceConfig(parcel);
207 }
208 
ClearInterfaceAddrs(const std::string ifName)209 void NetManagerNative::ClearInterfaceAddrs(const std::string ifName) {}
210 
GetInterfaceMtu(std::string ifName)211 int32_t NetManagerNative::GetInterfaceMtu(std::string ifName)
212 {
213     return InterfaceManager::GetMtu(ifName.c_str());
214 }
215 
SetInterfaceMtu(std::string ifName,int32_t mtuValue)216 int32_t NetManagerNative::SetInterfaceMtu(std::string ifName, int32_t mtuValue)
217 {
218     if (strncmp(ifName.c_str(), TUN_CARD_NAME, strlen(TUN_CARD_NAME)) != 0) {
219         return InterfaceManager::SetMtu(ifName.c_str(), std::to_string(mtuValue).c_str());
220     }
221     return VpnManager::GetInstance().SetVpnMtu(ifName, mtuValue);
222 }
223 
SetTcpBufferSizes(const std::string & tcpBufferSizes)224 int32_t NetManagerNative::SetTcpBufferSizes(const std::string &tcpBufferSizes)
225 {
226     NETNATIVE_LOGI("tcpBufferSizes:%{public}s", tcpBufferSizes.c_str());
227     const std::vector<std::string> vTcpBufferSizes = Split(tcpBufferSizes, ",");
228     if (vTcpBufferSizes.size() != MAX_TCP_BUFFER_SIZES_COUNT) {
229         NETNATIVE_LOGE("NetManagerNative::SetTcpBufferSizes size is not equals MAX_TCP_BUFFER_SIZES_COUNT");
230         return -1;
231     }
232     std::string tcp_rwmem[TCP_BUFFER_SIZES_TYPE];
233     for (size_t i = 0; i < TCP_BUFFER_SIZES_TYPE; i++) {
234         for (size_t j = 0; j < MAX_TCP_BUFFER_SIZES_COUNT / TCP_BUFFER_SIZES_TYPE; j++) {
235             tcp_rwmem[i] += Strip(vTcpBufferSizes[i * (MAX_TCP_BUFFER_SIZES_COUNT / TCP_BUFFER_SIZES_TYPE) + j]);
236             tcp_rwmem[i] += ' ';
237         }
238     }
239     if (!WriteFile(TCP_RMEM_PROC_FILE, tcp_rwmem[0]) || !WriteFile(TCP_WMEM_PROC_FILE, tcp_rwmem[1])) {
240         NETNATIVE_LOGE("NetManagerNative::SetTcpBufferSizes sysctlbyname fail %{public}d", errno);
241         return -1;
242     }
243     return 0;
244 }
245 
InterfaceSetIpAddress(const std::string & ifaceName,const std::string & ipAddress)246 int32_t NetManagerNative::InterfaceSetIpAddress(const std::string &ifaceName, const std::string &ipAddress)
247 {
248     return InterfaceManager::SetIpAddress(ifaceName.c_str(), ipAddress.c_str());
249 }
250 
InterfaceSetIffUp(std::string ifaceName)251 int32_t NetManagerNative::InterfaceSetIffUp(std::string ifaceName)
252 {
253     return InterfaceManager::SetIffUp(ifaceName.c_str());
254 }
255 
GetFwmarkForNetwork(int32_t netId)256 nmd::MarkMaskParcel NetManagerNative::GetFwmarkForNetwork(int32_t netId)
257 {
258     nmd::MarkMaskParcel mark;
259     mark.mark = connManager_->GetFwmarkForNetwork(netId);
260     mark.mask = 0XFFFF;
261     return mark;
262 }
263 
NetworkAddRouteParcel(int32_t netId,RouteInfoParcel parcel)264 int32_t NetManagerNative::NetworkAddRouteParcel(int32_t netId, RouteInfoParcel parcel)
265 {
266     return connManager_->AddRoute(netId, parcel.ifName, parcel.destination, parcel.nextHop);
267 }
268 
NetworkRemoveRouteParcel(int32_t netId,RouteInfoParcel parcel)269 int32_t NetManagerNative::NetworkRemoveRouteParcel(int32_t netId, RouteInfoParcel parcel)
270 {
271     return connManager_->RemoveRoute(netId, parcel.ifName, parcel.destination, parcel.nextHop);
272 }
273 
SetProcSysNet(int32_t family,int32_t which,const std::string ifname,const std::string parameter,const std::string value)274 int32_t NetManagerNative::SetProcSysNet(int32_t family, int32_t which, const std::string ifname,
275                                         const std::string parameter, const std::string value)
276 {
277     return 0;
278 }
279 
GetProcSysNet(int32_t family,int32_t which,const std::string ifname,const std::string parameter,std::string * value)280 int32_t NetManagerNative::GetProcSysNet(int32_t family, int32_t which, const std::string ifname,
281                                         const std::string parameter, std::string *value)
282 {
283     return 0;
284 }
285 
GetCellularRxBytes()286 int64_t NetManagerNative::GetCellularRxBytes()
287 {
288     return 0;
289 }
290 
GetCellularTxBytes()291 int64_t NetManagerNative::GetCellularTxBytes()
292 {
293     return 0;
294 }
295 
GetAllRxBytes()296 int64_t NetManagerNative::GetAllRxBytes()
297 {
298     return nmd::TrafficManager::GetAllRxTraffic();
299 }
300 
GetAllTxBytes()301 int64_t NetManagerNative::GetAllTxBytes()
302 {
303     return nmd::TrafficManager::GetAllTxTraffic();
304 }
305 
GetUidTxBytes(int32_t uid)306 int64_t NetManagerNative::GetUidTxBytes(int32_t uid)
307 {
308     return 0;
309 }
310 
GetUidRxBytes(int32_t uid)311 int64_t NetManagerNative::GetUidRxBytes(int32_t uid)
312 {
313     return 0;
314 }
315 
GetIfaceRxBytes(std::string interfaceName)316 int64_t NetManagerNative::GetIfaceRxBytes(std::string interfaceName)
317 {
318     nmd::TrafficStatsParcel interfaceTraffic = nmd::TrafficManager::GetInterfaceTraffic(interfaceName);
319     return interfaceTraffic.rxBytes;
320 }
321 
GetIfaceTxBytes(std::string interfaceName)322 int64_t NetManagerNative::GetIfaceTxBytes(std::string interfaceName)
323 {
324     nmd::TrafficStatsParcel interfaceTraffic = nmd::TrafficManager::GetInterfaceTraffic(interfaceName);
325     return interfaceTraffic.txBytes;
326 }
327 
IpEnableForwarding(const std::string & requester)328 int32_t NetManagerNative::IpEnableForwarding(const std::string &requester)
329 {
330     return sharingManager_->IpEnableForwarding(requester);
331 }
332 
SetIpv6PrivacyExtensions(const std::string & interfaceName,const uint32_t on)333 int32_t NetManagerNative::SetIpv6PrivacyExtensions(const std::string &interfaceName, const uint32_t on)
334 {
335     return sharingManager_->SetIpv6PrivacyExtensions(interfaceName, on);
336 }
337 
SetEnableIpv6(const std::string & interfaceName,const uint32_t on)338 int32_t NetManagerNative::SetEnableIpv6(const std::string &interfaceName, const uint32_t on)
339 {
340     return sharingManager_->SetEnableIpv6(interfaceName, on);
341 }
342 
IpDisableForwarding(const std::string & requester)343 int32_t NetManagerNative::IpDisableForwarding(const std::string &requester)
344 {
345     return sharingManager_->IpDisableForwarding(requester);
346 }
347 
EnableNat(const std::string & downstreamIface,const std::string & upstreamIface)348 int32_t NetManagerNative::EnableNat(const std::string &downstreamIface, const std::string &upstreamIface)
349 {
350     return sharingManager_->EnableNat(downstreamIface, upstreamIface);
351 }
352 
DisableNat(const std::string & downstreamIface,const std::string & upstreamIface)353 int32_t NetManagerNative::DisableNat(const std::string &downstreamIface, const std::string &upstreamIface)
354 {
355     return sharingManager_->DisableNat(downstreamIface, upstreamIface);
356 }
357 
IpfwdAddInterfaceForward(const std::string & fromIface,const std::string & toIface)358 int32_t NetManagerNative::IpfwdAddInterfaceForward(const std::string &fromIface, const std::string &toIface)
359 {
360     return sharingManager_->IpfwdAddInterfaceForward(fromIface, toIface);
361 }
362 
IpfwdRemoveInterfaceForward(const std::string & fromIface,const std::string & toIface)363 int32_t NetManagerNative::IpfwdRemoveInterfaceForward(const std::string &fromIface, const std::string &toIface)
364 {
365     return sharingManager_->IpfwdRemoveInterfaceForward(fromIface, toIface);
366 }
367 
DnsSetResolverConfig(uint16_t netId,uint16_t baseTimeoutMsec,uint8_t retryCount,const std::vector<std::string> & servers,const std::vector<std::string> & domains)368 int32_t NetManagerNative::DnsSetResolverConfig(uint16_t netId, uint16_t baseTimeoutMsec, uint8_t retryCount,
369                                                const std::vector<std::string> &servers,
370                                                const std::vector<std::string> &domains)
371 {
372     return dnsManager_->SetResolverConfig(netId, baseTimeoutMsec, retryCount, servers, domains);
373 }
374 
DnsGetResolverConfig(uint16_t netId,std::vector<std::string> & servers,std::vector<std::string> & domains,uint16_t & baseTimeoutMsec,uint8_t & retryCount)375 int32_t NetManagerNative::DnsGetResolverConfig(uint16_t netId, std::vector<std::string> &servers,
376                                                std::vector<std::string> &domains, uint16_t &baseTimeoutMsec,
377                                                uint8_t &retryCount)
378 {
379     return dnsManager_->GetResolverConfig(netId, servers, domains, baseTimeoutMsec, retryCount);
380 }
381 
DnsCreateNetworkCache(uint16_t netId)382 int32_t NetManagerNative::DnsCreateNetworkCache(uint16_t netId)
383 {
384     return dnsManager_->CreateNetworkCache(netId);
385 }
386 
DnsDestroyNetworkCache(uint16_t netId)387 int32_t NetManagerNative::DnsDestroyNetworkCache(uint16_t netId)
388 {
389     return dnsManager_->DestroyNetworkCache(netId);
390 }
391 
BandwidthEnableDataSaver(bool enable)392 int32_t NetManagerNative::BandwidthEnableDataSaver(bool enable)
393 {
394     return bandwidthManager_->EnableDataSaver(enable);
395 }
396 
BandwidthSetIfaceQuota(const std::string & ifName,int64_t bytes)397 int32_t NetManagerNative::BandwidthSetIfaceQuota(const std::string &ifName, int64_t bytes)
398 {
399     return bandwidthManager_->SetIfaceQuota(ifName, bytes);
400 }
401 
BandwidthRemoveIfaceQuota(const std::string & ifName)402 int32_t NetManagerNative::BandwidthRemoveIfaceQuota(const std::string &ifName)
403 {
404     return bandwidthManager_->RemoveIfaceQuota(ifName);
405 }
406 
BandwidthAddDeniedList(uint32_t uid)407 int32_t NetManagerNative::BandwidthAddDeniedList(uint32_t uid)
408 {
409     return bandwidthManager_->AddDeniedList(uid);
410 }
411 
BandwidthRemoveDeniedList(uint32_t uid)412 int32_t NetManagerNative::BandwidthRemoveDeniedList(uint32_t uid)
413 {
414     return bandwidthManager_->RemoveDeniedList(uid);
415 }
416 
BandwidthAddAllowedList(uint32_t uid)417 int32_t NetManagerNative::BandwidthAddAllowedList(uint32_t uid)
418 {
419     return bandwidthManager_->AddAllowedList(uid);
420 }
421 
BandwidthRemoveAllowedList(uint32_t uid)422 int32_t NetManagerNative::BandwidthRemoveAllowedList(uint32_t uid)
423 {
424     return bandwidthManager_->RemoveAllowedList(uid);
425 }
426 
FirewallSetUidsAllowedListChain(uint32_t chain,const std::vector<uint32_t> & uids)427 int32_t NetManagerNative::FirewallSetUidsAllowedListChain(uint32_t chain, const std::vector<uint32_t> &uids)
428 {
429     auto chainType = static_cast<NetManagerStandard::ChainType>(chain);
430     return firewallManager_->SetUidsAllowedListChain(chainType, uids);
431 }
432 
FirewallSetUidsDeniedListChain(uint32_t chain,const std::vector<uint32_t> & uids)433 int32_t NetManagerNative::FirewallSetUidsDeniedListChain(uint32_t chain, const std::vector<uint32_t> &uids)
434 {
435     auto chainType = static_cast<NetManagerStandard::ChainType>(chain);
436     return firewallManager_->SetUidsDeniedListChain(chainType, uids);
437 }
438 
FirewallEnableChain(uint32_t chain,bool enable)439 int32_t NetManagerNative::FirewallEnableChain(uint32_t chain, bool enable)
440 {
441     auto chainType = static_cast<NetManagerStandard::ChainType>(chain);
442     return firewallManager_->EnableChain(chainType, enable);
443 }
444 
FirewallSetUidRule(uint32_t chain,const std::vector<uint32_t> & uids,uint32_t firewallRule)445 int32_t NetManagerNative::FirewallSetUidRule(uint32_t chain, const std::vector<uint32_t> &uids, uint32_t firewallRule)
446 {
447     auto chainType = static_cast<NetManagerStandard::ChainType>(chain);
448     auto rule = static_cast<NetManagerStandard::FirewallRule>(firewallRule);
449     for (auto &uid : uids) {
450         auto ret = firewallManager_->SetUidRule(chainType, uid, rule);
451         if (ret != NetManagerStandard::NETMANAGER_SUCCESS) {
452             return ret;
453         }
454     }
455     return NetManagerStandard::NETMANAGER_SUCCESS;
456 }
457 
458 #ifdef FEATURE_NET_FIREWALL_ENABLE
SetFirewallDefaultAction(FirewallRuleAction inDefault,FirewallRuleAction outDefault)459 int32_t NetManagerNative::SetFirewallDefaultAction(FirewallRuleAction inDefault, FirewallRuleAction outDefault)
460 {
461     NETNATIVE_LOG_D("NetManagerNative, SetFirewallDefaultAction");
462     return dnsManager_->SetFirewallDefaultAction(inDefault, outDefault);
463 }
464 
SetFirewallCurrentUserId(int32_t userId)465 int32_t NetManagerNative::SetFirewallCurrentUserId(int32_t userId)
466 {
467     NETNATIVE_LOG_D("NetManagerNative, SetFirewallCurrentUserId");
468     return dnsManager_->SetFirewallCurrentUserId(userId);
469 }
470 
SetFirewallRules(NetFirewallRuleType type,const std::vector<sptr<NetFirewallBaseRule>> & ruleList,bool isFinish)471 int32_t NetManagerNative::SetFirewallRules(NetFirewallRuleType type,
472                                            const std::vector<sptr<NetFirewallBaseRule>> &ruleList, bool isFinish)
473 {
474     return dnsManager_->SetFirewallRules(type, ruleList, isFinish);
475 }
476 
ClearFirewallRules(NetFirewallRuleType type)477 int32_t NetManagerNative::ClearFirewallRules(NetFirewallRuleType type)
478 {
479     NETNATIVE_LOG_D("NetManagerNative, ClearFirewallRules");
480     return dnsManager_->ClearFirewallRules(type);
481 }
482 
RegisterNetFirewallCallback(const sptr<NetsysNative::INetFirewallCallback> & callback)483 int32_t NetManagerNative::RegisterNetFirewallCallback(const sptr<NetsysNative::INetFirewallCallback> &callback)
484 {
485     NETNATIVE_LOG_D("NetManagerNative, RegisterNetFirewallCallback");
486     return dnsManager_->RegisterNetFirewallCallback(callback);
487 }
488 
UnRegisterNetFirewallCallback(const sptr<NetsysNative::INetFirewallCallback> & callback)489 int32_t NetManagerNative::UnRegisterNetFirewallCallback(const sptr<NetsysNative::INetFirewallCallback> &callback)
490 {
491     NETNATIVE_LOG_D("NetManagerNative, UnRegisterNetFirewallCallback");
492     return dnsManager_->UnRegisterNetFirewallCallback(callback);
493 }
494 #endif
495 
ShareDnsSet(uint16_t netId)496 void NetManagerNative::ShareDnsSet(uint16_t netId)
497 {
498     dnsManager_->ShareDnsSet(netId);
499 }
500 
StartDnsProxyListen()501 void NetManagerNative::StartDnsProxyListen()
502 {
503     dnsManager_->StartDnsProxyListen();
504 }
505 
StopDnsProxyListen()506 void NetManagerNative::StopDnsProxyListen()
507 {
508     dnsManager_->StopDnsProxyListen();
509 }
510 
DnsGetAddrInfo(const std::string & hostName,const std::string & serverName,const AddrInfo & hints,uint16_t netId,std::vector<AddrInfo> & res)511 int32_t NetManagerNative::DnsGetAddrInfo(const std::string &hostName, const std::string &serverName,
512                                          const AddrInfo &hints, uint16_t netId, std::vector<AddrInfo> &res)
513 {
514     return dnsManager_->GetAddrInfo(hostName, serverName, hints, netId, res);
515 }
516 
GetDumpInfo(std::string & infos)517 void NetManagerNative::GetDumpInfo(std::string &infos)
518 {
519     connManager_->GetDumpInfos(infos);
520     dnsManager_->GetDumpInfo(infos);
521 }
522 
AddStaticArp(const std::string & ipAddr,const std::string & macAddr,const std::string & ifName)523 int32_t NetManagerNative::AddStaticArp(const std::string &ipAddr, const std::string &macAddr,
524                                        const std::string &ifName)
525 {
526     if (interfaceManager_ == nullptr) {
527         NETNATIVE_LOGE("interfaceManager_ is nullptr");
528         return NETMANAGER_ERR_LOCAL_PTR_NULL;
529     }
530 
531     return interfaceManager_->AddStaticArp(ipAddr, macAddr, ifName);
532 }
533 
DelStaticArp(const std::string & ipAddr,const std::string & macAddr,const std::string & ifName)534 int32_t NetManagerNative::DelStaticArp(const std::string &ipAddr, const std::string &macAddr,
535                                        const std::string &ifName)
536 {
537     if (interfaceManager_ == nullptr) {
538         NETNATIVE_LOGE("interfaceManager_ is nullptr");
539         return NETMANAGER_ERR_LOCAL_PTR_NULL;
540     }
541 
542     return interfaceManager_->DelStaticArp(ipAddr, macAddr, ifName);
543 }
544 
RegisterDnsResultCallback(const sptr<INetDnsResultCallback> & callback,uint32_t timeStep)545 int32_t NetManagerNative::RegisterDnsResultCallback(const sptr<INetDnsResultCallback> &callback, uint32_t timeStep)
546 {
547     return dnsManager_->RegisterDnsResultCallback(callback, timeStep);
548 }
549 
UnregisterDnsResultCallback(const sptr<INetDnsResultCallback> & callback)550 int32_t NetManagerNative::UnregisterDnsResultCallback(const sptr<INetDnsResultCallback> &callback)
551 {
552     return dnsManager_->UnregisterDnsResultCallback(callback);
553 }
554 
RegisterDnsHealthCallback(const sptr<INetDnsHealthCallback> & callback)555 int32_t NetManagerNative::RegisterDnsHealthCallback(const sptr<INetDnsHealthCallback> &callback)
556 {
557     return dnsManager_->RegisterDnsHealthCallback(callback);
558 }
559 
UnregisterDnsHealthCallback(const sptr<INetDnsHealthCallback> & callback)560 int32_t NetManagerNative::UnregisterDnsHealthCallback(const sptr<INetDnsHealthCallback> &callback)
561 {
562     return dnsManager_->UnregisterDnsHealthCallback(callback);
563 }
564 
SetNetworkAccessPolicy(uint32_t uid,NetworkAccessPolicy policy,bool reconfirmFlag,bool isBroker)565 int32_t NetManagerNative::SetNetworkAccessPolicy(uint32_t uid, NetworkAccessPolicy policy, bool reconfirmFlag,
566                                                  bool isBroker)
567 {
568     return connManager_->SetNetworkAccessPolicy(uid, policy, reconfirmFlag, isBroker);
569 }
570 
DeleteNetworkAccessPolicy(uint32_t uid)571 int32_t NetManagerNative::DeleteNetworkAccessPolicy(uint32_t uid)
572 {
573     return connManager_->DeleteNetworkAccessPolicy(uid);
574 }
575 
NotifyNetBearerTypeChange(std::set<NetBearType> bearerTypes)576 int32_t NetManagerNative::NotifyNetBearerTypeChange(std::set<NetBearType> bearerTypes)
577 {
578     return connManager_->NotifyNetBearerTypeChange(bearerTypes);
579 }
580 
ClearFirewallAllRules()581 int32_t NetManagerNative::ClearFirewallAllRules()
582 {
583     return firewallManager_->ClearAllRules();
584 }
585 } // namespace nmd
586 } // namespace OHOS
587