• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "distributed_manager.h"
29 #ifdef SUPPORT_SYSVPN
30 #include "multi_vpn_manager.h"
31 #endif
32 
33 using namespace OHOS::NetManagerStandard::CommonUtils;
34 
35 namespace OHOS {
36 namespace nmd {
37 namespace {
38 constexpr const char *TUN_CARD_NAME = "vpn-tun";
39 constexpr const char *TCP_RMEM_PROC_FILE = "/proc/sys/net/ipv4/tcp_rmem";
40 constexpr const char *TCP_WMEM_PROC_FILE = "/proc/sys/net/ipv4/tcp_wmem";
41 constexpr uint32_t TCP_BUFFER_SIZES_TYPE = 2;
42 constexpr uint32_t MAX_TCP_BUFFER_SIZES_COUNT = 6;
43 } // namespace
44 
NetManagerNative()45 NetManagerNative::NetManagerNative()
46     : bandwidthManager_(std::make_shared<BandwidthManager>()),
47       connManager_(std::make_shared<ConnManager>()),
48       firewallManager_(std::make_shared<FirewallManager>()),
49 #ifdef FEATURE_WEARABLE_DISTRIBUTED_NET_ENABLE
50       wearableDistributedNet_(std::make_shared<WearableDistributedNet>()),
51 #endif
52       routeManager_(std::make_shared<RouteManager>()),
53       interfaceManager_(std::make_shared<InterfaceManager>()),
54       sharingManager_(std::make_shared<SharingManager>()),
55       dnsManager_(std::make_shared<DnsManager>())
56 {
57 }
58 
GetOriginInterfaceIndex()59 void NetManagerNative::GetOriginInterfaceIndex()
60 {
61     std::vector<std::string> ifNameList = InterfaceManager::GetInterfaceNames();
62     interfaceIdex_.clear();
63     for (auto iter = ifNameList.begin(); iter != ifNameList.end(); ++iter) {
64         uint32_t infIndex = if_nametoindex((*iter).c_str());
65         interfaceIdex_.push_back(infIndex);
66     }
67 }
68 
UpdateInterfaceIndex(uint32_t infIndex)69 void NetManagerNative::UpdateInterfaceIndex(uint32_t infIndex)
70 {
71     interfaceIdex_.push_back(infIndex);
72 }
73 
GetCurrentInterfaceIndex()74 std::vector<uint32_t> NetManagerNative::GetCurrentInterfaceIndex()
75 {
76     return interfaceIdex_;
77 }
78 
Init()79 void NetManagerNative::Init()
80 {
81     GetOriginInterfaceIndex();
82 }
83 
NetworkReinitRoute()84 int32_t NetManagerNative::NetworkReinitRoute()
85 {
86     return connManager_->ReinitRoute();
87 }
88 
SetInternetPermission(uint32_t uid,uint8_t allow,uint8_t isBroker)89 int32_t NetManagerNative::SetInternetPermission(uint32_t uid, uint8_t allow, uint8_t isBroker)
90 {
91     return connManager_->SetInternetPermission(uid, allow, isBroker);
92 }
93 
NetworkCreatePhysical(int32_t netId,int32_t permission)94 int32_t NetManagerNative::NetworkCreatePhysical(int32_t netId, int32_t permission)
95 {
96     return connManager_->CreatePhysicalNetwork(static_cast<uint16_t>(netId),
97                                                static_cast<NetworkPermission>(permission));
98 }
99 
NetworkCreateVirtual(int32_t netId,bool hasDns)100 int32_t NetManagerNative::NetworkCreateVirtual(int32_t netId, bool hasDns)
101 {
102     return connManager_->CreateVirtualNetwork(netId, hasDns);
103 }
104 
NetworkDestroy(int32_t netId,bool isVpnNet)105 int32_t NetManagerNative::NetworkDestroy(int32_t netId, bool isVpnNet)
106 {
107     auto ret = connManager_->DestroyNetwork(netId);
108     dnsManager_->DestroyNetworkCache(netId, isVpnNet);
109     return ret;
110 }
111 
CreateVnic(uint16_t mtu,const std::string & tunAddr,int32_t prefix,const std::set<int32_t> & uids)112 int32_t NetManagerNative::CreateVnic(uint16_t mtu, const std::string &tunAddr, int32_t prefix,
113                                      const std::set<int32_t> &uids)
114 {
115     return VnicManager::GetInstance().CreateVnic(mtu, tunAddr, prefix, uids);
116 }
117 
DestroyVnic()118 int32_t NetManagerNative::DestroyVnic()
119 {
120     return VnicManager::GetInstance().DestroyVnic();
121 }
122 
EnableDistributedClientNet(const std::string & virnicAddr,const std::string & iif)123 int32_t NetManagerNative::EnableDistributedClientNet(const std::string &virnicAddr, const std::string &iif)
124 {
125     return routeManager_->EnableDistributedClientNet(virnicAddr, iif);
126 }
127 
EnableDistributedServerNet(const std::string & iif,const std::string & devIface,const std::string & dstAddr)128 int32_t NetManagerNative::EnableDistributedServerNet(const std::string &iif, const std::string &devIface,
129                                                      const std::string &dstAddr)
130 {
131     return routeManager_->EnableDistributedServerNet(iif, devIface, dstAddr);
132 }
133 
DisableDistributedNet(bool isServer)134 int32_t NetManagerNative::DisableDistributedNet(bool isServer)
135 {
136     return routeManager_->DisableDistributedNet(isServer);
137 }
138 
NetworkAddUids(int32_t netId,const std::vector<UidRange> & uidRanges)139 int32_t NetManagerNative::NetworkAddUids(int32_t netId, const std::vector<UidRange> &uidRanges)
140 {
141     dnsManager_->AddUidRange(netId, uidRanges);
142     return connManager_->AddUidsToNetwork(netId, uidRanges);
143 }
144 
NetworkDelUids(int32_t netId,const std::vector<UidRange> & uidRanges)145 int32_t NetManagerNative::NetworkDelUids(int32_t netId, const std::vector<UidRange> &uidRanges)
146 {
147     dnsManager_->DelUidRange(netId, uidRanges);
148     return connManager_->RemoveUidsFromNetwork(netId, uidRanges);
149 }
150 
NetworkAddInterface(int32_t netId,std::string interfaceName,NetBearType netBearerType)151 int32_t NetManagerNative::NetworkAddInterface(int32_t netId, std::string interfaceName, NetBearType netBearerType)
152 {
153     return connManager_->AddInterfaceToNetwork(netId, interfaceName, netBearerType);
154 }
155 
NetworkRemoveInterface(int32_t netId,std::string interfaceName)156 int32_t NetManagerNative::NetworkRemoveInterface(int32_t netId, std::string interfaceName)
157 {
158     return connManager_->RemoveInterfaceFromNetwork(netId, interfaceName);
159 }
160 
AddInterfaceAddress(std::string ifName,std::string addrString,int32_t prefixLength)161 int32_t NetManagerNative::AddInterfaceAddress(std::string ifName, std::string addrString, int32_t prefixLength)
162 {
163 #ifdef SUPPORT_SYSVPN
164     if ((strncmp(ifName.c_str(), XFRM_CARD_NAME, strlen(XFRM_CARD_NAME)) == 0) ||
165         (strncmp(ifName.c_str(), PPP_CARD_NAME, strlen(PPP_CARD_NAME)) == 0) ||
166         (strncmp(ifName.c_str(), MULTI_TUN_CARD_NAME, strlen(MULTI_TUN_CARD_NAME)) == 0)) {
167         return MultiVpnManager::GetInstance().SetVpnAddress(ifName, addrString, prefixLength);
168     }
169 #endif // SUPPORT_SYSVPN
170     if (strncmp(ifName.c_str(), TUN_CARD_NAME, strlen(TUN_CARD_NAME)) != 0) {
171         return interfaceManager_->AddAddress(ifName.c_str(), addrString.c_str(), prefixLength);
172     }
173     return VpnManager::GetInstance().SetVpnAddress(ifName, addrString, prefixLength);
174 }
175 
DelInterfaceAddress(std::string ifName,std::string addrString,int32_t prefixLength)176 int32_t NetManagerNative::DelInterfaceAddress(std::string ifName, std::string addrString, int32_t prefixLength)
177 {
178     return interfaceManager_->DelAddress(ifName.c_str(), addrString.c_str(), prefixLength);
179 }
180 
DelInterfaceAddress(std::string ifName,std::string addrString,int32_t prefixLength,const std::string & netCapabilities)181 int32_t NetManagerNative::DelInterfaceAddress(std::string ifName, std::string addrString, int32_t prefixLength,
182                                               const std::string &netCapabilities)
183 {
184     return interfaceManager_->DelAddress(ifName.c_str(), addrString.c_str(), prefixLength, netCapabilities);
185 }
186 
NetworkAddRoute(int32_t netId,std::string interfaceName,std::string destination,std::string nextHop,bool isExcludedRoute)187 int32_t NetManagerNative::NetworkAddRoute(int32_t netId, std::string interfaceName, std::string destination,
188                                           std::string nextHop, bool isExcludedRoute)
189 {
190     bool routeRepeat = false;
191     NetworkRouteInfo networkRouteInfo;
192     networkRouteInfo.ifName = interfaceName;
193     networkRouteInfo.destination = destination;
194     networkRouteInfo.nextHop = nextHop;
195     networkRouteInfo.isExcludedRoute = isExcludedRoute;
196     auto ret = connManager_->AddRoute(netId, networkRouteInfo, routeRepeat);
197     if (!ret || routeRepeat) {
198         dnsManager_->EnableIpv6(netId, destination, nextHop);
199     }
200     return ret;
201 }
202 
203 #ifdef FEATURE_ENTERPRISE_ROUTE_CUSTOM
UpdateEnterpriseRoute(const std::string & interfaceName,uint32_t uid,bool add)204 int32_t NetManagerNative::UpdateEnterpriseRoute(const std::string &interfaceName, uint32_t uid, bool add)
205 {
206     return routeManager_->UpdateEnterpriseRoute(interfaceName, uid, add);
207 }
208 #endif
209 
NetworkRemoveRoute(int32_t netId,std::string interfaceName,std::string destination,std::string nextHop)210 int32_t NetManagerNative::NetworkRemoveRoute(int32_t netId, std::string interfaceName, std::string destination,
211                                              std::string nextHop)
212 {
213     return connManager_->RemoveRoute(netId, interfaceName, destination, nextHop);
214 }
215 
NetworkGetDefault()216 int32_t NetManagerNative::NetworkGetDefault()
217 {
218     return connManager_->GetDefaultNetwork();
219 }
220 
NetworkSetDefault(int32_t netId)221 int32_t NetManagerNative::NetworkSetDefault(int32_t netId)
222 {
223     dnsManager_->SetDefaultNetwork(netId);
224     return connManager_->SetDefaultNetwork(netId);
225 }
226 
NetworkClearDefault()227 int32_t NetManagerNative::NetworkClearDefault()
228 {
229     return connManager_->ClearDefaultNetwork();
230 }
231 
NetworkSetPermissionForNetwork(int32_t netId,NetworkPermission permission)232 int32_t NetManagerNative::NetworkSetPermissionForNetwork(int32_t netId, NetworkPermission permission)
233 {
234     return connManager_->SetPermissionForNetwork(netId, permission);
235 }
236 
InterfaceGetList()237 std::vector<std::string> NetManagerNative::InterfaceGetList()
238 {
239     return InterfaceManager::GetInterfaceNames();
240 }
241 
GetInterfaceConfig(std::string interfaceName)242 nmd::InterfaceConfigurationParcel NetManagerNative::GetInterfaceConfig(std::string interfaceName)
243 {
244     return InterfaceManager::GetIfaceConfig(interfaceName.c_str());
245 }
246 
SetInterfaceConfig(nmd::InterfaceConfigurationParcel parcel)247 void NetManagerNative::SetInterfaceConfig(nmd::InterfaceConfigurationParcel parcel)
248 {
249     InterfaceManager::SetIfaceConfig(parcel);
250 }
251 
ClearInterfaceAddrs(const std::string ifName)252 void NetManagerNative::ClearInterfaceAddrs(const std::string ifName) {}
253 
GetInterfaceMtu(std::string ifName)254 int32_t NetManagerNative::GetInterfaceMtu(std::string ifName)
255 {
256     return InterfaceManager::GetMtu(ifName.c_str());
257 }
258 
SetInterfaceMtu(std::string ifName,int32_t mtuValue)259 int32_t NetManagerNative::SetInterfaceMtu(std::string ifName, int32_t mtuValue)
260 {
261 #ifdef SUPPORT_SYSVPN
262     if ((strncmp(ifName.c_str(), XFRM_CARD_NAME, strlen(XFRM_CARD_NAME)) == 0) ||
263         (strncmp(ifName.c_str(), PPP_CARD_NAME, strlen(PPP_CARD_NAME)) == 0) ||
264         (strncmp(ifName.c_str(), MULTI_TUN_CARD_NAME, strlen(MULTI_TUN_CARD_NAME)) == 0)) {
265         return MultiVpnManager::GetInstance().SetVpnMtu(ifName, mtuValue);
266     }
267 #endif
268     if (strncmp(ifName.c_str(), TUN_CARD_NAME, strlen(TUN_CARD_NAME)) != 0) {
269         return InterfaceManager::SetMtu(ifName.c_str(), std::to_string(mtuValue).c_str());
270     }
271     return VpnManager::GetInstance().SetVpnMtu(ifName, mtuValue);
272 }
273 
SetTcpBufferSizes(const std::string & tcpBufferSizes)274 int32_t NetManagerNative::SetTcpBufferSizes(const std::string &tcpBufferSizes)
275 {
276     NETNATIVE_LOGI("tcpBufferSizes:%{public}s", tcpBufferSizes.c_str());
277     const std::vector<std::string> vTcpBufferSizes = Split(tcpBufferSizes, ",");
278     if (vTcpBufferSizes.size() != MAX_TCP_BUFFER_SIZES_COUNT) {
279         NETNATIVE_LOGE("NetManagerNative::SetTcpBufferSizes size is not equals MAX_TCP_BUFFER_SIZES_COUNT");
280         return -1;
281     }
282     std::string tcp_rwmem[TCP_BUFFER_SIZES_TYPE];
283     for (size_t i = 0; i < TCP_BUFFER_SIZES_TYPE; i++) {
284         for (size_t j = 0; j < MAX_TCP_BUFFER_SIZES_COUNT / TCP_BUFFER_SIZES_TYPE; j++) {
285             tcp_rwmem[i] += Strip(vTcpBufferSizes[i * (MAX_TCP_BUFFER_SIZES_COUNT / TCP_BUFFER_SIZES_TYPE) + j]);
286             tcp_rwmem[i] += ' ';
287         }
288     }
289     if (!WriteFile(TCP_RMEM_PROC_FILE, tcp_rwmem[0]) || !WriteFile(TCP_WMEM_PROC_FILE, tcp_rwmem[1])) {
290         NETNATIVE_LOGE("NetManagerNative::SetTcpBufferSizes sysctlbyname fail %{public}d", errno);
291         return -1;
292     }
293     return 0;
294 }
295 
InterfaceSetIpAddress(const std::string & ifaceName,const std::string & ipAddress)296 int32_t NetManagerNative::InterfaceSetIpAddress(const std::string &ifaceName, const std::string &ipAddress)
297 {
298     return InterfaceManager::SetIpAddress(ifaceName.c_str(), ipAddress.c_str());
299 }
300 
InterfaceSetIffUp(std::string ifaceName)301 int32_t NetManagerNative::InterfaceSetIffUp(std::string ifaceName)
302 {
303     return InterfaceManager::SetIffUp(ifaceName.c_str());
304 }
305 
GetFwmarkForNetwork(int32_t netId)306 nmd::MarkMaskParcel NetManagerNative::GetFwmarkForNetwork(int32_t netId)
307 {
308     nmd::MarkMaskParcel mark;
309     mark.mark = connManager_->GetFwmarkForNetwork(netId);
310     mark.mask = 0XFFFF;
311     return mark;
312 }
313 
NetworkAddRouteParcel(int32_t netId,RouteInfoParcel parcel)314 int32_t NetManagerNative::NetworkAddRouteParcel(int32_t netId, RouteInfoParcel parcel)
315 {
316     bool routeRepeat = false;
317     NetworkRouteInfo networkRouteInfo;
318     networkRouteInfo.ifName = parcel.ifName;
319     networkRouteInfo.destination = parcel.destination;
320     networkRouteInfo.nextHop = parcel.nextHop;
321     networkRouteInfo.isExcludedRoute = false;
322     return connManager_->AddRoute(netId, networkRouteInfo, routeRepeat);
323 }
324 
NetworkRemoveRouteParcel(int32_t netId,RouteInfoParcel parcel)325 int32_t NetManagerNative::NetworkRemoveRouteParcel(int32_t netId, RouteInfoParcel parcel)
326 {
327     return connManager_->RemoveRoute(netId, parcel.ifName, parcel.destination, parcel.nextHop);
328 }
329 
SetProcSysNet(int32_t family,int32_t which,const std::string ifname,const std::string parameter,const std::string value)330 int32_t NetManagerNative::SetProcSysNet(int32_t family, int32_t which, const std::string ifname,
331                                         const std::string parameter, const std::string value)
332 {
333     return 0;
334 }
335 
GetProcSysNet(int32_t family,int32_t which,const std::string ifname,const std::string parameter,std::string * value)336 int32_t NetManagerNative::GetProcSysNet(int32_t family, int32_t which, const std::string ifname,
337                                         const std::string parameter, std::string *value)
338 {
339     return 0;
340 }
341 
GetCellularRxBytes()342 int64_t NetManagerNative::GetCellularRxBytes()
343 {
344     return 0;
345 }
346 
GetCellularTxBytes()347 int64_t NetManagerNative::GetCellularTxBytes()
348 {
349     return 0;
350 }
351 
GetAllRxBytes()352 int64_t NetManagerNative::GetAllRxBytes()
353 {
354     return nmd::TrafficManager::GetAllRxTraffic();
355 }
356 
GetAllTxBytes()357 int64_t NetManagerNative::GetAllTxBytes()
358 {
359     return nmd::TrafficManager::GetAllTxTraffic();
360 }
361 
GetUidTxBytes(int32_t uid)362 int64_t NetManagerNative::GetUidTxBytes(int32_t uid)
363 {
364     return 0;
365 }
366 
GetUidRxBytes(int32_t uid)367 int64_t NetManagerNative::GetUidRxBytes(int32_t uid)
368 {
369     return 0;
370 }
371 
GetIfaceRxBytes(std::string interfaceName)372 int64_t NetManagerNative::GetIfaceRxBytes(std::string interfaceName)
373 {
374     nmd::TrafficStatsParcel interfaceTraffic = nmd::TrafficManager::GetInterfaceTraffic(interfaceName);
375     return interfaceTraffic.rxBytes;
376 }
377 
GetIfaceTxBytes(std::string interfaceName)378 int64_t NetManagerNative::GetIfaceTxBytes(std::string interfaceName)
379 {
380     nmd::TrafficStatsParcel interfaceTraffic = nmd::TrafficManager::GetInterfaceTraffic(interfaceName);
381     return interfaceTraffic.txBytes;
382 }
383 
IpEnableForwarding(const std::string & requester)384 int32_t NetManagerNative::IpEnableForwarding(const std::string &requester)
385 {
386     return sharingManager_->IpEnableForwarding(requester);
387 }
388 
SetIpv6PrivacyExtensions(const std::string & interfaceName,const uint32_t on)389 int32_t NetManagerNative::SetIpv6PrivacyExtensions(const std::string &interfaceName, const uint32_t on)
390 {
391     return sharingManager_->SetIpv6PrivacyExtensions(interfaceName, on);
392 }
393 
SetEnableIpv6(const std::string & interfaceName,const uint32_t on)394 int32_t NetManagerNative::SetEnableIpv6(const std::string &interfaceName, const uint32_t on)
395 {
396     return sharingManager_->SetEnableIpv6(interfaceName, on);
397 }
398 
IpDisableForwarding(const std::string & requester)399 int32_t NetManagerNative::IpDisableForwarding(const std::string &requester)
400 {
401     return sharingManager_->IpDisableForwarding(requester);
402 }
403 
EnableNat(const std::string & downstreamIface,const std::string & upstreamIface)404 int32_t NetManagerNative::EnableNat(const std::string &downstreamIface, const std::string &upstreamIface)
405 {
406     return sharingManager_->EnableNat(downstreamIface, upstreamIface);
407 }
408 
DisableNat(const std::string & downstreamIface,const std::string & upstreamIface)409 int32_t NetManagerNative::DisableNat(const std::string &downstreamIface, const std::string &upstreamIface)
410 {
411     return sharingManager_->DisableNat(downstreamIface, upstreamIface);
412 }
413 
IpfwdAddInterfaceForward(const std::string & fromIface,const std::string & toIface)414 int32_t NetManagerNative::IpfwdAddInterfaceForward(const std::string &fromIface, const std::string &toIface)
415 {
416     return sharingManager_->IpfwdAddInterfaceForward(fromIface, toIface);
417 }
418 
IpfwdRemoveInterfaceForward(const std::string & fromIface,const std::string & toIface)419 int32_t NetManagerNative::IpfwdRemoveInterfaceForward(const std::string &fromIface, const std::string &toIface)
420 {
421     return sharingManager_->IpfwdRemoveInterfaceForward(fromIface, toIface);
422 }
423 
DnsSetResolverConfig(uint16_t netId,uint16_t baseTimeoutMsec,uint8_t retryCount,const std::vector<std::string> & servers,const std::vector<std::string> & domains)424 int32_t NetManagerNative::DnsSetResolverConfig(uint16_t netId, uint16_t baseTimeoutMsec, uint8_t retryCount,
425                                                const std::vector<std::string> &servers,
426                                                const std::vector<std::string> &domains)
427 {
428     return dnsManager_->SetResolverConfig(netId, baseTimeoutMsec, retryCount, servers, domains);
429 }
430 
DnsGetResolverConfig(uint16_t netId,std::vector<std::string> & servers,std::vector<std::string> & domains,uint16_t & baseTimeoutMsec,uint8_t & retryCount)431 int32_t NetManagerNative::DnsGetResolverConfig(uint16_t netId, std::vector<std::string> &servers,
432                                                std::vector<std::string> &domains, uint16_t &baseTimeoutMsec,
433                                                uint8_t &retryCount)
434 {
435     return dnsManager_->GetResolverConfig(netId, servers, domains, baseTimeoutMsec, retryCount);
436 }
437 
DnsCreateNetworkCache(uint16_t netId,bool isVpnNet)438 int32_t NetManagerNative::DnsCreateNetworkCache(uint16_t netId, bool isVpnNet)
439 {
440     return dnsManager_->CreateNetworkCache(netId, isVpnNet);
441 }
442 
DnsDestroyNetworkCache(uint16_t netId,bool isVpnNet)443 int32_t NetManagerNative::DnsDestroyNetworkCache(uint16_t netId, bool isVpnNet)
444 {
445     return dnsManager_->DestroyNetworkCache(netId, isVpnNet);
446 }
447 
BandwidthEnableDataSaver(bool enable)448 int32_t NetManagerNative::BandwidthEnableDataSaver(bool enable)
449 {
450     return bandwidthManager_->EnableDataSaver(enable);
451 }
452 
BandwidthSetIfaceQuota(const std::string & ifName,int64_t bytes)453 int32_t NetManagerNative::BandwidthSetIfaceQuota(const std::string &ifName, int64_t bytes)
454 {
455     return bandwidthManager_->SetIfaceQuota(ifName, bytes);
456 }
457 
BandwidthRemoveIfaceQuota(const std::string & ifName)458 int32_t NetManagerNative::BandwidthRemoveIfaceQuota(const std::string &ifName)
459 {
460     return bandwidthManager_->RemoveIfaceQuota(ifName);
461 }
462 
BandwidthAddDeniedList(uint32_t uid)463 int32_t NetManagerNative::BandwidthAddDeniedList(uint32_t uid)
464 {
465     return bandwidthManager_->AddDeniedList(uid);
466 }
467 
BandwidthRemoveDeniedList(uint32_t uid)468 int32_t NetManagerNative::BandwidthRemoveDeniedList(uint32_t uid)
469 {
470     return bandwidthManager_->RemoveDeniedList(uid);
471 }
472 
BandwidthAddAllowedList(uint32_t uid)473 int32_t NetManagerNative::BandwidthAddAllowedList(uint32_t uid)
474 {
475     return bandwidthManager_->AddAllowedList(uid);
476 }
477 
BandwidthRemoveAllowedList(uint32_t uid)478 int32_t NetManagerNative::BandwidthRemoveAllowedList(uint32_t uid)
479 {
480     return bandwidthManager_->RemoveAllowedList(uid);
481 }
482 
FirewallSetUidsAllowedListChain(uint32_t chain,const std::vector<uint32_t> & uids)483 int32_t NetManagerNative::FirewallSetUidsAllowedListChain(uint32_t chain, const std::vector<uint32_t> &uids)
484 {
485     auto chainType = static_cast<NetManagerStandard::ChainType>(chain);
486     return firewallManager_->SetUidsAllowedListChain(chainType, uids);
487 }
488 
FirewallSetUidsDeniedListChain(uint32_t chain,const std::vector<uint32_t> & uids)489 int32_t NetManagerNative::FirewallSetUidsDeniedListChain(uint32_t chain, const std::vector<uint32_t> &uids)
490 {
491     auto chainType = static_cast<NetManagerStandard::ChainType>(chain);
492     return firewallManager_->SetUidsDeniedListChain(chainType, uids);
493 }
494 
FirewallEnableChain(uint32_t chain,bool enable)495 int32_t NetManagerNative::FirewallEnableChain(uint32_t chain, bool enable)
496 {
497     auto chainType = static_cast<NetManagerStandard::ChainType>(chain);
498     return firewallManager_->EnableChain(chainType, enable);
499 }
500 
FirewallSetUidRule(uint32_t chain,const std::vector<uint32_t> & uids,uint32_t firewallRule)501 int32_t NetManagerNative::FirewallSetUidRule(uint32_t chain, const std::vector<uint32_t> &uids, uint32_t firewallRule)
502 {
503     auto chainType = static_cast<NetManagerStandard::ChainType>(chain);
504     auto rule = static_cast<NetManagerStandard::FirewallRule>(firewallRule);
505     for (auto &uid : uids) {
506         auto ret = firewallManager_->SetUidRule(chainType, uid, rule);
507         if (ret != NetManagerStandard::NETMANAGER_SUCCESS) {
508             NETNATIVE_LOGE("SetUidRule fail, uid is %{public}u, ret is %{public}d", uid, ret);
509         }
510     }
511     return NetManagerStandard::NETMANAGER_SUCCESS;
512 }
513 
514 #ifdef FEATURE_NET_FIREWALL_ENABLE
SetFirewallDefaultAction(FirewallRuleAction inDefault,FirewallRuleAction outDefault)515 int32_t NetManagerNative::SetFirewallDefaultAction(FirewallRuleAction inDefault, FirewallRuleAction outDefault)
516 {
517     NETNATIVE_LOG_D("NetManagerNative, SetFirewallDefaultAction");
518     return dnsManager_->SetFirewallDefaultAction(inDefault, outDefault);
519 }
520 
SetFirewallCurrentUserId(int32_t userId)521 int32_t NetManagerNative::SetFirewallCurrentUserId(int32_t userId)
522 {
523     NETNATIVE_LOG_D("NetManagerNative, SetFirewallCurrentUserId");
524     return dnsManager_->SetFirewallCurrentUserId(userId);
525 }
526 
SetFirewallRules(NetFirewallRuleType type,const std::vector<sptr<NetFirewallBaseRule>> & ruleList,bool isFinish)527 int32_t NetManagerNative::SetFirewallRules(NetFirewallRuleType type,
528                                            const std::vector<sptr<NetFirewallBaseRule>> &ruleList, bool isFinish)
529 {
530     return dnsManager_->SetFirewallRules(type, ruleList, isFinish);
531 }
532 
ClearFirewallRules(NetFirewallRuleType type)533 int32_t NetManagerNative::ClearFirewallRules(NetFirewallRuleType type)
534 {
535     NETNATIVE_LOG_D("NetManagerNative, ClearFirewallRules");
536     return dnsManager_->ClearFirewallRules(type);
537 }
538 
RegisterNetFirewallCallback(const sptr<NetsysNative::INetFirewallCallback> & callback)539 int32_t NetManagerNative::RegisterNetFirewallCallback(const sptr<NetsysNative::INetFirewallCallback> &callback)
540 {
541     NETNATIVE_LOG_D("NetManagerNative, RegisterNetFirewallCallback");
542     return dnsManager_->RegisterNetFirewallCallback(callback);
543 }
544 
UnRegisterNetFirewallCallback(const sptr<NetsysNative::INetFirewallCallback> & callback)545 int32_t NetManagerNative::UnRegisterNetFirewallCallback(const sptr<NetsysNative::INetFirewallCallback> &callback)
546 {
547     NETNATIVE_LOG_D("NetManagerNative, UnRegisterNetFirewallCallback");
548     return dnsManager_->UnRegisterNetFirewallCallback(callback);
549 }
550 #endif
551 
552 #ifdef FEATURE_WEARABLE_DISTRIBUTED_NET_ENABLE
EnableWearableDistributedNetForward(const int32_t tcpPortId,const int32_t udpPortId)553 int32_t NetManagerNative::EnableWearableDistributedNetForward(const int32_t tcpPortId, const int32_t udpPortId)
554 {
555     NETNATIVE_LOG_D("Enabling wearable distributed net forward for TCP port and UDP port");
556     return wearableDistributedNet_->EnableWearableDistributedNetForward(tcpPortId, udpPortId);
557 }
558 
DisableWearableDistributedNetForward()559 int32_t NetManagerNative::DisableWearableDistributedNetForward()
560 {
561     NETNATIVE_LOG_D("NetManagerNative disable wearable distributed net forward");
562     return wearableDistributedNet_->DisableWearableDistributedNetForward();
563 }
564 #endif
565 
ShareDnsSet(uint16_t netId)566 void NetManagerNative::ShareDnsSet(uint16_t netId)
567 {
568     dnsManager_->ShareDnsSet(netId);
569 }
570 
StartDnsProxyListen()571 void NetManagerNative::StartDnsProxyListen()
572 {
573     dnsManager_->StartDnsProxyListen();
574 }
575 
StopDnsProxyListen()576 void NetManagerNative::StopDnsProxyListen()
577 {
578     dnsManager_->StopDnsProxyListen();
579 }
580 
DnsGetAddrInfo(const std::string & hostName,const std::string & serverName,const AddrInfo & hints,uint16_t netId,std::vector<AddrInfo> & res)581 int32_t NetManagerNative::DnsGetAddrInfo(const std::string &hostName, const std::string &serverName,
582                                          const AddrInfo &hints, uint16_t netId, std::vector<AddrInfo> &res)
583 {
584     return dnsManager_->GetAddrInfo(hostName, serverName, hints, netId, res);
585 }
586 
GetDumpInfo(std::string & infos)587 void NetManagerNative::GetDumpInfo(std::string &infos)
588 {
589     connManager_->GetDumpInfos(infos);
590     dnsManager_->GetDumpInfo(infos);
591 }
592 
AddStaticArp(const std::string & ipAddr,const std::string & macAddr,const std::string & ifName)593 int32_t NetManagerNative::AddStaticArp(const std::string &ipAddr, const std::string &macAddr,
594                                        const std::string &ifName)
595 {
596     if (interfaceManager_ == nullptr) {
597         NETNATIVE_LOGE("interfaceManager_ is nullptr");
598         return NETMANAGER_ERR_LOCAL_PTR_NULL;
599     }
600 
601     return interfaceManager_->AddStaticArp(ipAddr, macAddr, ifName);
602 }
603 
DelStaticArp(const std::string & ipAddr,const std::string & macAddr,const std::string & ifName)604 int32_t NetManagerNative::DelStaticArp(const std::string &ipAddr, const std::string &macAddr,
605                                        const std::string &ifName)
606 {
607     if (interfaceManager_ == nullptr) {
608         NETNATIVE_LOGE("interfaceManager_ is nullptr");
609         return NETMANAGER_ERR_LOCAL_PTR_NULL;
610     }
611 
612     return interfaceManager_->DelStaticArp(ipAddr, macAddr, ifName);
613 }
614 
AddStaticIpv6Addr(const std::string & ipAddr,const std::string & macAddr,const std::string & ifName)615 int32_t NetManagerNative::AddStaticIpv6Addr(const std::string &ipAddr, const std::string &macAddr,
616     const std::string &ifName)
617 {
618     NETNATIVE_LOGI("AddStaticIpv6Addr");
619     if (interfaceManager_ == nullptr) {
620         NETNATIVE_LOGE("interfaceManager_ is nullptr");
621         return NETMANAGER_ERR_LOCAL_PTR_NULL;
622     }
623 
624     return interfaceManager_->AddStaticIpv6Addr(ipAddr, macAddr, ifName);
625 }
626 
DelStaticIpv6Addr(const std::string & ipAddr,const std::string & macAddr,const std::string & ifName)627 int32_t NetManagerNative::DelStaticIpv6Addr(const std::string &ipAddr, const std::string &macAddr,
628     const std::string &ifName)
629 {
630     NETNATIVE_LOGI("DelStaticIpv6Addr");
631     if (interfaceManager_ == nullptr) {
632         NETNATIVE_LOGE("interfaceManager_ is nullptr");
633         return NETMANAGER_ERR_LOCAL_PTR_NULL;
634     }
635 
636     return interfaceManager_->DelStaticIpv6Addr(ipAddr, macAddr, ifName);
637 }
638 
RegisterDnsResultCallback(const sptr<INetDnsResultCallback> & callback,uint32_t timeStep)639 int32_t NetManagerNative::RegisterDnsResultCallback(const sptr<INetDnsResultCallback> &callback, uint32_t timeStep)
640 {
641     return dnsManager_->RegisterDnsResultCallback(callback, timeStep);
642 }
643 
UnregisterDnsResultCallback(const sptr<INetDnsResultCallback> & callback)644 int32_t NetManagerNative::UnregisterDnsResultCallback(const sptr<INetDnsResultCallback> &callback)
645 {
646     return dnsManager_->UnregisterDnsResultCallback(callback);
647 }
648 
RegisterDnsHealthCallback(const sptr<INetDnsHealthCallback> & callback)649 int32_t NetManagerNative::RegisterDnsHealthCallback(const sptr<INetDnsHealthCallback> &callback)
650 {
651     return dnsManager_->RegisterDnsHealthCallback(callback);
652 }
653 
UnregisterDnsHealthCallback(const sptr<INetDnsHealthCallback> & callback)654 int32_t NetManagerNative::UnregisterDnsHealthCallback(const sptr<INetDnsHealthCallback> &callback)
655 {
656     return dnsManager_->UnregisterDnsHealthCallback(callback);
657 }
658 
SetNetworkAccessPolicy(uint32_t uid,NetworkAccessPolicy policy,bool reconfirmFlag)659 int32_t NetManagerNative::SetNetworkAccessPolicy(uint32_t uid, NetworkAccessPolicy policy, bool reconfirmFlag)
660 {
661     return connManager_->SetNetworkAccessPolicy(uid, policy, reconfirmFlag);
662 }
663 
DeleteNetworkAccessPolicy(uint32_t uid)664 int32_t NetManagerNative::DeleteNetworkAccessPolicy(uint32_t uid)
665 {
666     return connManager_->DeleteNetworkAccessPolicy(uid);
667 }
668 
NotifyNetBearerTypeChange(std::set<NetBearType> bearerTypes)669 int32_t NetManagerNative::NotifyNetBearerTypeChange(std::set<NetBearType> bearerTypes)
670 {
671     return connManager_->NotifyNetBearerTypeChange(bearerTypes);
672 }
673 
ClearFirewallAllRules()674 int32_t NetManagerNative::ClearFirewallAllRules()
675 {
676     return firewallManager_->ClearAllRules();
677 }
678 
CloseSocketsUid(const std::string & ipAddr,uint32_t uid)679 int32_t NetManagerNative::CloseSocketsUid(const std::string &ipAddr, uint32_t uid)
680 {
681     return connManager_->CloseSocketsUid(ipAddr, uid);
682 }
683 
DnsSetUserDefinedServerFlag(uint16_t netId,bool flag)684 int32_t NetManagerNative::DnsSetUserDefinedServerFlag(uint16_t netId, bool flag)
685 {
686     return dnsManager_->SetUserDefinedServerFlag(netId, flag);
687 }
688 
FlushDnsCache(uint16_t netId)689 int32_t NetManagerNative::FlushDnsCache(uint16_t netId)
690 {
691     return dnsManager_->FlushDnsCache(netId);
692 }
693 
694 #ifdef SUPPORT_SYSVPN
UpdateVpnRules(uint16_t netId,const std::vector<std::string> & extMessages,bool add)695 int32_t NetManagerNative::UpdateVpnRules(uint16_t netId, const std::vector<std::string> &extMessages, bool add)
696 {
697     return connManager_->UpdateVpnRules(netId, extMessages, add);
698 }
699 #endif // SUPPORT_SYSVPN
700 
SetDnsCache(uint16_t netId,const std::string & hostName,const AddrInfo & addrInfo)701 int32_t NetManagerNative::SetDnsCache(uint16_t netId, const std::string &hostName, const AddrInfo &addrInfo)
702 {
703     return dnsManager_->SetDnsCache(netId, hostName, addrInfo);
704 }
705 } // namespace nmd
706 } // namespace OHOS
707