• 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 <arpa/inet.h>
17 #include <cstring>
18 #include <fcntl.h>
19 #include <linux/if_tun.h>
20 #include <netinet/in.h>
21 #include <sys/ioctl.h>
22 #include <sys/socket.h>
23 #include <sys/types.h>
24 #include <thread>
25 #include <pthread.h>
26 #include <unistd.h>
27 
28 #include "iservice_registry.h"
29 #include "system_ability_definition.h"
30 
31 #include "net_conn_constants.h"
32 #include "net_conn_types.h"
33 #include "net_manager_constants.h"
34 #include "net_mgr_log_wrapper.h"
35 #include "netmanager_base_common_utils.h"
36 #include "netsys_native_client.h"
37 #include "netsys_native_service_proxy.h"
38 #include "ipc_skeleton.h"
39 
40 using namespace OHOS::NetManagerStandard::CommonUtils;
41 namespace OHOS {
42 namespace NetManagerStandard {
43 static constexpr const char *DEV_NET_TUN_PATH = "/dev/net/tun";
44 static constexpr const char *IF_CFG_UP = "up";
45 static constexpr const char *IF_CFG_DOWN = "down";
46 static constexpr const char *NETSYS_ROUTE_INIT_DIR_PATH = "/data/service/el1/public/netmanager/route";
47 static constexpr uint32_t WAIT_FOR_SERVICE_TIME_S = 1;
48 static constexpr uint32_t MAX_GET_SERVICE_COUNT = 30;
49 static constexpr uint32_t IPV4_MAX_LENGTH = 32;
50 static constexpr int UID_FOUNDATION = 5523;
51 
NativeNotifyCallback(std::weak_ptr<NetsysNativeClient> netsysNativeClient)52 NetsysNativeClient::NativeNotifyCallback::NativeNotifyCallback(std::weak_ptr<NetsysNativeClient> netsysNativeClient)
53     : netsysNativeClient_(netsysNativeClient)
54 {
55 }
56 
OnInterfaceAddressUpdated(const std::string & addr,const std::string & ifName,int flags,int scope)57 int32_t NetsysNativeClient::NativeNotifyCallback::OnInterfaceAddressUpdated(const std::string &addr,
58                                                                             const std::string &ifName, int flags,
59                                                                             int scope)
60 {
61     auto netsysNativeClient = netsysNativeClient_.lock();
62     if (netsysNativeClient == nullptr) {
63         NETMGR_LOG_E("NetsysNativeClient has destory");
64         return NETMANAGER_ERR_LOCAL_PTR_NULL;
65     }
66     std::lock_guard lock(netsysNativeClient->cbObjMutex_);
67     for (auto cb = netsysNativeClient->cbObjects_.begin(); cb != netsysNativeClient->cbObjects_.end();) {
68         if (*cb == nullptr) {
69             cb = netsysNativeClient->cbObjects_.erase(cb);
70         } else {
71             (*cb)->OnInterfaceAddressUpdated(addr, ifName, flags, scope);
72             ++cb;
73         }
74     }
75     return NETMANAGER_SUCCESS;
76 }
77 
OnInterfaceAddressRemoved(const std::string & addr,const std::string & ifName,int flags,int scope)78 int32_t NetsysNativeClient::NativeNotifyCallback::OnInterfaceAddressRemoved(const std::string &addr,
79                                                                             const std::string &ifName, int flags,
80                                                                             int scope)
81 {
82     auto netsysNativeClient = netsysNativeClient_.lock();
83     if (netsysNativeClient == nullptr) {
84         NETMGR_LOG_E("NetsysNativeClient has destory");
85         return NETMANAGER_ERR_LOCAL_PTR_NULL;
86     }
87     std::lock_guard lock(netsysNativeClient->cbObjMutex_);
88     for (auto cb = netsysNativeClient->cbObjects_.begin(); cb != netsysNativeClient->cbObjects_.end();) {
89         if (*cb == nullptr) {
90             cb = netsysNativeClient->cbObjects_.erase(cb);
91         } else {
92             (*cb)->OnInterfaceAddressRemoved(addr, ifName, flags, scope);
93             ++cb;
94         }
95     }
96     return NETMANAGER_SUCCESS;
97 }
98 
OnInterfaceAdded(const std::string & ifName)99 int32_t NetsysNativeClient::NativeNotifyCallback::OnInterfaceAdded(const std::string &ifName)
100 {
101     auto netsysNativeClient = netsysNativeClient_.lock();
102     if (netsysNativeClient == nullptr) {
103         NETMGR_LOG_E("NetsysNativeClient has destory");
104         return NETMANAGER_ERR_LOCAL_PTR_NULL;
105     }
106     std::lock_guard lock(netsysNativeClient->cbObjMutex_);
107     for (auto cb = netsysNativeClient->cbObjects_.begin(); cb != netsysNativeClient->cbObjects_.end();) {
108         if (*cb == nullptr) {
109             cb = netsysNativeClient->cbObjects_.erase(cb);
110         } else {
111             (*cb)->OnInterfaceAdded(ifName);
112             ++cb;
113         }
114     }
115     return NETMANAGER_SUCCESS;
116 }
117 
OnInterfaceRemoved(const std::string & ifName)118 int32_t NetsysNativeClient::NativeNotifyCallback::OnInterfaceRemoved(const std::string &ifName)
119 {
120     auto netsysNativeClient = netsysNativeClient_.lock();
121     if (netsysNativeClient == nullptr) {
122         NETMGR_LOG_E("NetsysNativeClient has destory");
123         return NETMANAGER_ERR_LOCAL_PTR_NULL;
124     }
125     std::lock_guard lock(netsysNativeClient->cbObjMutex_);
126     for (auto cb = netsysNativeClient->cbObjects_.begin(); cb != netsysNativeClient->cbObjects_.end();) {
127         if (*cb == nullptr) {
128             cb = netsysNativeClient->cbObjects_.erase(cb);
129         } else {
130             (*cb)->OnInterfaceRemoved(ifName);
131             ++cb;
132         }
133     }
134     return NETMANAGER_SUCCESS;
135 }
136 
OnInterfaceChanged(const std::string & ifName,bool up)137 int32_t NetsysNativeClient::NativeNotifyCallback::OnInterfaceChanged(const std::string &ifName, bool up)
138 {
139     auto netsysNativeClient = netsysNativeClient_.lock();
140     if (netsysNativeClient == nullptr) {
141         NETMGR_LOG_E("NetsysNativeClient has destory");
142         return NETMANAGER_ERR_LOCAL_PTR_NULL;
143     }
144     std::lock_guard lock(netsysNativeClient->cbObjMutex_);
145     for (auto cb = netsysNativeClient->cbObjects_.begin(); cb != netsysNativeClient->cbObjects_.end();) {
146         if (*cb == nullptr) {
147             cb = netsysNativeClient->cbObjects_.erase(cb);
148         } else {
149             (*cb)->OnInterfaceChanged(ifName, up);
150             ++cb;
151         }
152     }
153     return NETMANAGER_SUCCESS;
154 }
155 
OnInterfaceLinkStateChanged(const std::string & ifName,bool up)156 int32_t NetsysNativeClient::NativeNotifyCallback::OnInterfaceLinkStateChanged(const std::string &ifName, bool up)
157 {
158     auto netsysNativeClient = netsysNativeClient_.lock();
159     if (netsysNativeClient == nullptr) {
160         NETMGR_LOG_E("NetsysNativeClient has destory");
161         return NETMANAGER_ERR_LOCAL_PTR_NULL;
162     }
163     std::lock_guard lock(netsysNativeClient->cbObjMutex_);
164     for (auto cb = netsysNativeClient->cbObjects_.begin(); cb != netsysNativeClient->cbObjects_.end();) {
165         if (*cb == nullptr) {
166             cb = netsysNativeClient->cbObjects_.erase(cb);
167         } else {
168             (*cb)->OnInterfaceLinkStateChanged(ifName, up);
169             ++cb;
170         }
171     }
172     return NETMANAGER_SUCCESS;
173 }
174 
OnRouteChanged(bool updated,const std::string & route,const std::string & gateway,const std::string & ifName)175 int32_t NetsysNativeClient::NativeNotifyCallback::OnRouteChanged(bool updated, const std::string &route,
176                                                                  const std::string &gateway, const std::string &ifName)
177 {
178     auto netsysNativeClient = netsysNativeClient_.lock();
179     if (netsysNativeClient == nullptr) {
180         NETMGR_LOG_E("NetsysNativeClient has destory");
181         return NETMANAGER_ERR_LOCAL_PTR_NULL;
182     }
183     std::lock_guard lock(netsysNativeClient->cbObjMutex_);
184     for (auto cb = netsysNativeClient->cbObjects_.begin(); cb != netsysNativeClient->cbObjects_.end();) {
185         if (*cb == nullptr) {
186             cb = netsysNativeClient->cbObjects_.erase(cb);
187         } else {
188             (*cb)->OnRouteChanged(updated, route, gateway, ifName);
189             ++cb;
190         }
191     }
192     return NETMANAGER_SUCCESS;
193 }
194 
OnDhcpSuccess(sptr<OHOS::NetsysNative::DhcpResultParcel> & dhcpResult)195 int32_t NetsysNativeClient::NativeNotifyCallback::OnDhcpSuccess(sptr<OHOS::NetsysNative::DhcpResultParcel> &dhcpResult)
196 {
197     NETMGR_LOG_I("OnDhcpSuccess");
198     auto netsysNativeClient = netsysNativeClient_.lock();
199     if (netsysNativeClient == nullptr) {
200         NETMGR_LOG_E("NetsysNativeClient has destory");
201         return NETMANAGER_ERR_LOCAL_PTR_NULL;
202     }
203     netsysNativeClient->ProcessDhcpResult(dhcpResult);
204     return NETMANAGER_SUCCESS;
205 }
206 
OnBandwidthReachedLimit(const std::string & limitName,const std::string & iface)207 int32_t NetsysNativeClient::NativeNotifyCallback::OnBandwidthReachedLimit(const std::string &limitName,
208                                                                           const std::string &iface)
209 {
210     NETMGR_LOG_I("OnBandwidthReachedLimit");
211     auto netsysNativeClient = netsysNativeClient_.lock();
212     if (netsysNativeClient == nullptr) {
213         NETMGR_LOG_E("NetsysNativeClient has destory");
214         return NETMANAGER_ERR_LOCAL_PTR_NULL;
215     }
216     netsysNativeClient->ProcessBandwidthReachedLimit(limitName, iface);
217     return NETMANAGER_SUCCESS;
218 }
219 
NativeNetDnsResultCallback(std::weak_ptr<NetsysNativeClient> netsysNativeClient)220 NetsysNativeClient::NativeNetDnsResultCallback::NativeNetDnsResultCallback(
221     std::weak_ptr<NetsysNativeClient> netsysNativeClient) : netsysNativeClient_(netsysNativeClient)
222 {
223 }
224 
OnDnsResultReport(uint32_t size,std::list<OHOS::NetsysNative::NetDnsResultReport> res)225 int32_t NetsysNativeClient::NativeNetDnsResultCallback::OnDnsResultReport(uint32_t size,
226     std::list<OHOS::NetsysNative::NetDnsResultReport> res)
227 {
228     auto netsysNativeClient = netsysNativeClient_.lock();
229     if (netsysNativeClient == nullptr) {
230         NETMGR_LOG_E("NetsysNativeClient has destory");
231         return NETMANAGER_ERR_LOCAL_PTR_NULL;
232     }
233     std::lock_guard lock(netsysNativeClient->cbDnsReportObjMutex_);
234     for (auto cb = netsysNativeClient->cbDnsReportObjects_.begin();
235          cb != netsysNativeClient->cbDnsReportObjects_.end();) {
236         if (*cb == nullptr) {
237             cb = netsysNativeClient->cbDnsReportObjects_.erase(cb);
238         } else {
239             (*cb)->OnDnsResultReport(size, res);
240             ++cb;
241         }
242     }
243     return NETMANAGER_SUCCESS;
244 }
245 
NetsysNativeClient()246 NetsysNativeClient::NetsysNativeClient()
247 {
248     std::thread t([this]() {
249         std::this_thread::sleep_for(std::chrono::seconds(1));
250         RegisterNotifyCallback();
251     });
252     std::string threadName = "registerNotifyCallbackInConstructor";
253     pthread_setname_np(t.native_handle(), threadName.c_str());
254     t.detach();
255 }
256 
~NetsysNativeClient()257 NetsysNativeClient::~NetsysNativeClient()
258 {
259     NETMGR_LOG_I("~NetsysNativeClient : Destroy NetsysNativeService");
260     auto proxy = GetProxy();
261     if (proxy == nullptr) {
262         return;
263     }
264 
265     auto serviceRemote = proxy->AsObject();
266     if (serviceRemote == nullptr) {
267         return;
268     }
269 
270     serviceRemote->RemoveDeathRecipient(deathRecipient_);
271 }
272 
SetInternetPermission(uint32_t uid,uint8_t allow)273 int32_t NetsysNativeClient::SetInternetPermission(uint32_t uid, uint8_t allow)
274 {
275     auto proxy = GetProxy();
276     if (proxy == nullptr) {
277         NETMGR_LOG_E("proxy is nullptr");
278         return NETMANAGER_ERR_GET_PROXY_FAIL;
279     }
280     auto callingUid = IPCSkeleton::GetCallingUid();
281     return proxy->SetInternetPermission(uid, allow, callingUid != UID_FOUNDATION);
282 }
283 
NetworkCreatePhysical(int32_t netId,int32_t permission)284 int32_t NetsysNativeClient::NetworkCreatePhysical(int32_t netId, int32_t permission)
285 {
286     NETMGR_LOG_I("Create Physical network: netId[%{public}d], permission[%{public}d]", netId, permission);
287     auto proxy = GetProxy();
288     if (proxy == nullptr) {
289         NETMGR_LOG_E("proxy is nullptr");
290         return NETMANAGER_ERR_GET_PROXY_FAIL;
291     }
292     return proxy->NetworkCreatePhysical(netId, permission);
293 }
294 
NetworkCreateVirtual(int32_t netId,bool hasDns)295 int32_t NetsysNativeClient::NetworkCreateVirtual(int32_t netId, bool hasDns)
296 {
297     NETMGR_LOG_I("Create Virtual network: netId[%{public}d], hasDns[%{public}d]", netId, hasDns);
298     auto proxy = GetProxy();
299     if (proxy == nullptr) {
300         NETMGR_LOG_E("proxy is nullptr");
301         return NETMANAGER_ERR_GET_PROXY_FAIL;
302     }
303     return proxy->NetworkCreateVirtual(netId, hasDns);
304 }
305 
NetworkDestroy(int32_t netId,bool isVpnNet)306 int32_t NetsysNativeClient::NetworkDestroy(int32_t netId, bool isVpnNet)
307 {
308     NETMGR_LOG_I("Destroy network: netId[%{public}d]", netId);
309     auto proxy = GetProxy();
310     if (proxy == nullptr) {
311         NETMGR_LOG_E("proxy is nullptr");
312         return NETMANAGER_ERR_GET_PROXY_FAIL;
313     }
314     return proxy->NetworkDestroy(netId, isVpnNet);
315 }
316 
CreateVnic(uint16_t mtu,const std::string & tunAddr,int32_t prefix,const std::set<int32_t> & uids)317 int32_t NetsysNativeClient::CreateVnic(uint16_t mtu, const std::string &tunAddr, int32_t prefix,
318                                        const std::set<int32_t> &uids)
319 {
320     NETMGR_LOG_I("Create vnic");
321     auto proxy = GetProxy();
322     if (proxy == nullptr) {
323         NETMGR_LOG_E("proxy is nullptr");
324         return NETMANAGER_ERR_GET_PROXY_FAIL;
325     }
326     return proxy->CreateVnic(mtu, tunAddr, prefix, uids);
327 }
328 
DestroyVnic()329 int32_t NetsysNativeClient::DestroyVnic()
330 {
331     NETMGR_LOG_I("Destroy vnic");
332     auto proxy = GetProxy();
333     if (proxy == nullptr) {
334         NETMGR_LOG_E("proxy is nullptr");
335         return NETMANAGER_ERR_GET_PROXY_FAIL;
336     }
337     return proxy->DestroyVnic();
338 }
339 
EnableDistributedClientNet(const std::string & virnicAddr,const std::string & iif)340 int32_t NetsysNativeClient::EnableDistributedClientNet(const std::string &virnicAddr, const std::string &iif)
341 {
342     auto proxy = GetProxy();
343     if (proxy == nullptr) {
344         NETMGR_LOG_E("proxy is nullptr");
345         return NETMANAGER_ERR_GET_PROXY_FAIL;
346     }
347     return proxy->EnableDistributedClientNet(virnicAddr, iif);
348 }
349 
EnableDistributedServerNet(const std::string & iif,const std::string & devIface,const std::string & dstAddr)350 int32_t NetsysNativeClient::EnableDistributedServerNet(const std::string &iif, const std::string &devIface,
351                                                        const std::string &dstAddr)
352 {
353     auto proxy = GetProxy();
354     if (proxy == nullptr) {
355         NETMGR_LOG_E("proxy is nullptr");
356         return NETMANAGER_ERR_GET_PROXY_FAIL;
357     }
358     return proxy->EnableDistributedServerNet(iif, devIface, dstAddr);
359 }
360 
DisableDistributedNet(bool isServer)361 int32_t NetsysNativeClient::DisableDistributedNet(bool isServer)
362 {
363     auto proxy = GetProxy();
364     if (proxy == nullptr) {
365         NETMGR_LOG_E("proxy is nullptr");
366         return NETMANAGER_ERR_GET_PROXY_FAIL;
367     }
368     return proxy->DisableDistributedNet(isServer);
369 }
370 
NetworkAddUids(int32_t netId,const std::vector<UidRange> & uidRanges)371 int32_t NetsysNativeClient::NetworkAddUids(int32_t netId, const std::vector<UidRange> &uidRanges)
372 {
373     NETMGR_LOG_I("Add uids to vpn network: netId[%{public}d]", netId);
374     auto proxy = GetProxy();
375     if (proxy == nullptr) {
376         NETMGR_LOG_E("proxy is nullptr");
377         return NETMANAGER_ERR_GET_PROXY_FAIL;
378     }
379     return proxy->NetworkAddUids(netId, uidRanges);
380 }
381 
NetworkDelUids(int32_t netId,const std::vector<UidRange> & uidRanges)382 int32_t NetsysNativeClient::NetworkDelUids(int32_t netId, const std::vector<UidRange> &uidRanges)
383 {
384     NETMGR_LOG_I("Remove uids from vpn network: netId[%{public}d]", netId);
385     auto proxy = GetProxy();
386     if (proxy == nullptr) {
387         NETMGR_LOG_E("proxy is nullptr");
388         return NETMANAGER_ERR_GET_PROXY_FAIL;
389     }
390     return proxy->NetworkDelUids(netId, uidRanges);
391 }
392 
NetworkAddInterface(int32_t netId,const std::string & iface,NetBearType netBearerType)393 int32_t NetsysNativeClient::NetworkAddInterface(int32_t netId, const std::string &iface, NetBearType netBearerType)
394 {
395     NETMGR_LOG_I("Add network interface: netId[%{public}d], iface[%{public}s, bearerType[%{public}u]]", netId,
396                  iface.c_str(), netBearerType);
397     auto proxy = GetProxy();
398     if (proxy == nullptr) {
399         NETMGR_LOG_E("proxy is nullptr");
400         return NETMANAGER_ERR_GET_PROXY_FAIL;
401     }
402     return proxy->NetworkAddInterface(netId, iface, netBearerType);
403 }
404 
NetworkRemoveInterface(int32_t netId,const std::string & iface)405 int32_t NetsysNativeClient::NetworkRemoveInterface(int32_t netId, const std::string &iface)
406 {
407     NETMGR_LOG_I("Remove network interface: netId[%{public}d], iface[%{public}s]", netId, iface.c_str());
408     auto proxy = GetProxy();
409     if (proxy == nullptr) {
410         NETMGR_LOG_E("proxy is nullptr");
411         return NETMANAGER_ERR_GET_PROXY_FAIL;
412     }
413     return proxy->NetworkRemoveInterface(netId, iface);
414 }
415 
NetworkAddRoute(int32_t netId,const std::string & ifName,const std::string & destination,const std::string & nextHop)416 int32_t NetsysNativeClient::NetworkAddRoute(int32_t netId, const std::string &ifName, const std::string &destination,
417                                             const std::string &nextHop)
418 {
419     NETMGR_LOG_I("Add Route: netId[%{public}d], ifName[%{public}s], destination[%{public}s], nextHop[%{public}s]",
420                  netId, ifName.c_str(), ToAnonymousIp(destination).c_str(), ToAnonymousIp(nextHop).c_str());
421     auto proxy = GetProxy();
422     if (proxy == nullptr) {
423         NETMGR_LOG_E("proxy is nullptr");
424         return NETMANAGER_ERR_GET_PROXY_FAIL;
425     }
426     return proxy->NetworkAddRoute(netId, ifName, destination, nextHop);
427 }
428 
NetworkRemoveRoute(int32_t netId,const std::string & ifName,const std::string & destination,const std::string & nextHop)429 int32_t NetsysNativeClient::NetworkRemoveRoute(int32_t netId, const std::string &ifName, const std::string &destination,
430                                                const std::string &nextHop)
431 {
432     NETMGR_LOG_D("Remove Route: netId[%{public}d], ifName[%{public}s], destination[%{public}s], nextHop[%{public}s]",
433                  netId, ifName.c_str(), ToAnonymousIp(destination).c_str(), ToAnonymousIp(nextHop).c_str());
434     auto proxy = GetProxy();
435     if (proxy == nullptr) {
436         NETMGR_LOG_E("proxy is nullptr");
437         return NETMANAGER_ERR_GET_PROXY_FAIL;
438     }
439     return proxy->NetworkRemoveRoute(netId, ifName, destination, nextHop);
440 }
441 
GetInterfaceConfig(OHOS::nmd::InterfaceConfigurationParcel & cfg)442 int32_t NetsysNativeClient::GetInterfaceConfig(OHOS::nmd::InterfaceConfigurationParcel &cfg)
443 {
444     NETMGR_LOG_D("Get interface config: ifName[%{public}s]", cfg.ifName.c_str());
445     auto proxy = GetProxy();
446     if (proxy == nullptr) {
447         NETMGR_LOG_E("proxy is nullptr");
448         return NETMANAGER_ERR_GET_PROXY_FAIL;
449     }
450     return proxy->GetInterfaceConfig(cfg);
451 }
452 
SetInterfaceConfig(const OHOS::nmd::InterfaceConfigurationParcel & cfg)453 int32_t NetsysNativeClient::SetInterfaceConfig(const OHOS::nmd::InterfaceConfigurationParcel &cfg)
454 {
455     NETMGR_LOG_D("Set interface config: ifName[%{public}s]", cfg.ifName.c_str());
456     auto proxy = GetProxy();
457     if (proxy == nullptr) {
458         NETMGR_LOG_E("proxy is nullptr");
459         return NETMANAGER_ERR_GET_PROXY_FAIL;
460     }
461     return proxy->SetInterfaceConfig(cfg);
462 }
463 
SetInterfaceDown(const std::string & iface)464 int32_t NetsysNativeClient::SetInterfaceDown(const std::string &iface)
465 {
466     NETMGR_LOG_D("Set interface down: iface[%{public}s]", iface.c_str());
467     auto proxy = GetProxy();
468     if (proxy == nullptr) {
469         NETMGR_LOG_E("proxy is nullptr");
470         return NETMANAGER_ERR_GET_PROXY_FAIL;
471     }
472     OHOS::nmd::InterfaceConfigurationParcel ifCfg;
473     ifCfg.ifName = iface;
474     proxy->GetInterfaceConfig(ifCfg);
475     auto fit = std::find(ifCfg.flags.begin(), ifCfg.flags.end(), IF_CFG_UP);
476     if (fit != ifCfg.flags.end()) {
477         ifCfg.flags.erase(fit);
478     }
479     ifCfg.flags.emplace_back(IF_CFG_DOWN);
480     return proxy->SetInterfaceConfig(ifCfg);
481 }
482 
SetInterfaceUp(const std::string & iface)483 int32_t NetsysNativeClient::SetInterfaceUp(const std::string &iface)
484 {
485     NETMGR_LOG_D("Set interface up: iface[%{public}s]", iface.c_str());
486     auto proxy = GetProxy();
487     if (proxy == nullptr) {
488         NETMGR_LOG_E("proxy is nullptr");
489         return NETMANAGER_ERR_GET_PROXY_FAIL;
490     }
491     OHOS::nmd::InterfaceConfigurationParcel ifCfg;
492     ifCfg.ifName = iface;
493     proxy->GetInterfaceConfig(ifCfg);
494     auto fit = std::find(ifCfg.flags.begin(), ifCfg.flags.end(), IF_CFG_DOWN);
495     if (fit != ifCfg.flags.end()) {
496         ifCfg.flags.erase(fit);
497     }
498     ifCfg.flags.emplace_back(IF_CFG_UP);
499     return proxy->SetInterfaceConfig(ifCfg);
500 }
501 
ClearInterfaceAddrs(const std::string & ifName)502 void NetsysNativeClient::ClearInterfaceAddrs(const std::string &ifName)
503 {
504     NETMGR_LOG_D("Clear addrs: ifName[%{public}s]", ifName.c_str());
505     auto proxy = GetProxy();
506     if (proxy == nullptr) {
507         NETMGR_LOG_E("proxy is nullptr");
508         return;
509     }
510 }
511 
GetInterfaceMtu(const std::string & ifName)512 int32_t NetsysNativeClient::GetInterfaceMtu(const std::string &ifName)
513 {
514     NETMGR_LOG_D("Get mtu: ifName[%{public}s]", ifName.c_str());
515     auto proxy = GetProxy();
516     if (proxy == nullptr) {
517         NETMGR_LOG_E("proxy is nullptr");
518         return NETMANAGER_ERR_GET_PROXY_FAIL;
519     }
520     return proxy->GetInterfaceMtu(ifName);
521 }
522 
SetInterfaceMtu(const std::string & ifName,int32_t mtu)523 int32_t NetsysNativeClient::SetInterfaceMtu(const std::string &ifName, int32_t mtu)
524 {
525     NETMGR_LOG_D("Set mtu: ifName[%{public}s], mtu[%{public}d]", ifName.c_str(), mtu);
526     auto proxy = GetProxy();
527     if (proxy == nullptr) {
528         NETMGR_LOG_E("proxy is nullptr");
529         return NETMANAGER_ERR_GET_PROXY_FAIL;
530     }
531     return proxy->SetInterfaceMtu(ifName, mtu);
532 }
533 
SetTcpBufferSizes(const std::string & tcpBufferSizes)534 int32_t NetsysNativeClient::SetTcpBufferSizes(const std::string &tcpBufferSizes)
535 {
536     NETMGR_LOG_D("Set tcp buffer sizes: tcpBufferSizes[%{public}s]", tcpBufferSizes.c_str());
537     auto proxy = GetProxy();
538     if (proxy == nullptr) {
539         NETMGR_LOG_E("proxy is nullptr");
540         return NETMANAGER_ERR_GET_PROXY_FAIL;
541     }
542     return proxy->SetTcpBufferSizes(tcpBufferSizes);
543 }
544 
AddInterfaceAddress(const std::string & ifName,const std::string & ipAddr,int32_t prefixLength)545 int32_t NetsysNativeClient::AddInterfaceAddress(const std::string &ifName, const std::string &ipAddr,
546                                                 int32_t prefixLength)
547 {
548     NETMGR_LOG_D("Add address: ifName[%{public}s], ipAddr[%{public}s], prefixLength[%{public}d]",
549         ifName.c_str(), ToAnonymousIp(ipAddr).c_str(), prefixLength);
550     auto proxy = GetProxy();
551     if (proxy == nullptr) {
552         NETMGR_LOG_E("proxy is nullptr");
553         return NETMANAGER_ERR_GET_PROXY_FAIL;
554     }
555     return proxy->AddInterfaceAddress(ifName, ipAddr, prefixLength);
556 }
557 
DelInterfaceAddress(const std::string & ifName,const std::string & ipAddr,int32_t prefixLength)558 int32_t NetsysNativeClient::DelInterfaceAddress(const std::string &ifName, const std::string &ipAddr,
559                                                 int32_t prefixLength)
560 {
561     NETMGR_LOG_D("Delete address: ifName[%{public}s], ipAddr[%{public}s], prefixLength[%{public}d]",
562         ifName.c_str(), ToAnonymousIp(ipAddr).c_str(), prefixLength);
563     auto proxy = GetProxy();
564     if (proxy == nullptr) {
565         NETMGR_LOG_E("proxy is nullptr");
566         return NETMANAGER_ERR_GET_PROXY_FAIL;
567     }
568     return proxy->DelInterfaceAddress(ifName, ipAddr, prefixLength);
569 }
570 
DelInterfaceAddress(const std::string & ifName,const std::string & ipAddr,int32_t prefixLength,const std::string & netCapabilities)571 int32_t NetsysNativeClient::DelInterfaceAddress(const std::string &ifName, const std::string &ipAddr,
572                                                 int32_t prefixLength, const std::string &netCapabilities)
573 {
574     NETMGR_LOG_D("Delete address: ifName[%{public}s], ipAddr[%{public}s], prefixLength[%{public}d]",
575         ifName.c_str(), ToAnonymousIp(ipAddr).c_str(), prefixLength);
576     auto proxy = GetProxy();
577     if (proxy == nullptr) {
578         NETMGR_LOG_E("proxy is nullptr");
579         return NETMANAGER_ERR_GET_PROXY_FAIL;
580     }
581     return proxy->DelInterfaceAddress(ifName, ipAddr, prefixLength, netCapabilities);
582 }
583 
InterfaceSetIpAddress(const std::string & ifaceName,const std::string & ipAddress)584 int32_t NetsysNativeClient::InterfaceSetIpAddress(const std::string &ifaceName, const std::string &ipAddress)
585 {
586     NETMGR_LOG_D("Set Ip Address: ifaceName[%{public}s], ipAddr[%{public}s]",
587         ifaceName.c_str(), ToAnonymousIp(ipAddress).c_str());
588     auto proxy = GetProxy();
589     if (proxy == nullptr) {
590         NETMGR_LOG_E("proxy is nullptr");
591         return IPC_PROXY_ERR;
592     }
593     return proxy->InterfaceSetIpAddress(ifaceName, ipAddress);
594 }
595 
InterfaceSetIffUp(const std::string & ifaceName)596 int32_t NetsysNativeClient::InterfaceSetIffUp(const std::string &ifaceName)
597 {
598     NETMGR_LOG_D("Set Iff Up: ifaceName[%{public}s]", ifaceName.c_str());
599     auto proxy = GetProxy();
600     if (proxy == nullptr) {
601         NETMGR_LOG_E("proxy is nullptr");
602         return IPC_PROXY_ERR;
603     }
604     return proxy->InterfaceSetIffUp(ifaceName);
605 }
606 
SetResolverConfig(uint16_t netId,uint16_t baseTimeoutMsec,uint8_t retryCount,const std::vector<std::string> & servers,const std::vector<std::string> & domains)607 int32_t NetsysNativeClient::SetResolverConfig(uint16_t netId, uint16_t baseTimeoutMsec, uint8_t retryCount,
608                                               const std::vector<std::string> &servers,
609                                               const std::vector<std::string> &domains)
610 {
611     NETMGR_LOG_D("Set resolver config: netId[%{public}d]", netId);
612     auto proxy = GetProxy();
613     if (proxy == nullptr) {
614         NETMGR_LOG_E("proxy is nullptr");
615         return NETMANAGER_ERR_GET_PROXY_FAIL;
616     }
617     return proxy->SetResolverConfig(netId, baseTimeoutMsec, retryCount, servers, domains);
618 }
619 
GetResolverConfig(uint16_t netId,std::vector<std::string> & servers,std::vector<std::string> & domains,uint16_t & baseTimeoutMsec,uint8_t & retryCount)620 int32_t NetsysNativeClient::GetResolverConfig(uint16_t netId, std::vector<std::string> &servers,
621                                               std::vector<std::string> &domains, uint16_t &baseTimeoutMsec,
622                                               uint8_t &retryCount)
623 {
624     NETMGR_LOG_D("Get resolver config: netId[%{public}d]", netId);
625     auto proxy = GetProxy();
626     if (proxy == nullptr) {
627         NETMGR_LOG_E("proxy is nullptr");
628         return NETMANAGER_ERR_GET_PROXY_FAIL;
629     }
630     return proxy->GetResolverConfig(netId, servers, domains, baseTimeoutMsec, retryCount);
631 }
632 
CreateNetworkCache(uint16_t netId,bool isVpnNet)633 int32_t NetsysNativeClient::CreateNetworkCache(uint16_t netId, bool isVpnNet)
634 {
635     NETMGR_LOG_D("create dns cache: netId[%{public}d]", netId);
636     auto proxy = GetProxy();
637     if (proxy == nullptr) {
638         NETMGR_LOG_E("proxy is nullptr");
639         return NETMANAGER_ERR_GET_PROXY_FAIL;
640     }
641     return proxy->CreateNetworkCache(netId, isVpnNet);
642 }
643 
DestroyNetworkCache(uint16_t netId,bool isVpnNet)644 int32_t NetsysNativeClient::DestroyNetworkCache(uint16_t netId, bool isVpnNet)
645 {
646     NETMGR_LOG_D("Destroy dns cache: netId[%{public}d]", netId);
647     auto proxy = GetProxy();
648     if (proxy == nullptr) {
649         NETMGR_LOG_E("proxy is nullptr");
650         return NETMANAGER_ERR_GET_PROXY_FAIL;
651     }
652     return proxy->DestroyNetworkCache(netId, isVpnNet);
653 }
654 
GetAddrInfo(const std::string & hostName,const std::string & serverName,const AddrInfo & hints,uint16_t netId,std::vector<AddrInfo> & res)655 int32_t NetsysNativeClient::GetAddrInfo(const std::string &hostName, const std::string &serverName,
656                                         const AddrInfo &hints, uint16_t netId, std::vector<AddrInfo> &res)
657 {
658     auto proxy = GetProxy();
659     if (proxy == nullptr) {
660         NETMGR_LOG_E("GetAddrInfo netsysNativeService_ is null");
661         return NET_CONN_ERR_SERVICE_UPDATE_NET_LINK_INFO_FAIL;
662     }
663     return proxy->GetAddrInfo(hostName, serverName, hints, netId, res);
664 }
665 
GetNetworkSharingTraffic(const std::string & downIface,const std::string & upIface,nmd::NetworkSharingTraffic & traffic)666 int32_t NetsysNativeClient::GetNetworkSharingTraffic(const std::string &downIface, const std::string &upIface,
667     nmd::NetworkSharingTraffic &traffic)
668 {
669     NETMGR_LOG_D("NetsysNativeClient GetNetworkSharingTraffic");
670     auto proxy = GetProxy();
671     if (proxy == nullptr) {
672         NETMGR_LOG_E("proxy is nullptr");
673         return NETMANAGER_ERR_GET_PROXY_FAIL;
674     }
675     return proxy->GetNetworkSharingTraffic(downIface, upIface, traffic);
676 }
677 
GetNetworkCellularSharingTraffic(nmd::NetworkSharingTraffic & traffic,std::string & ifaceName)678 int32_t NetsysNativeClient::GetNetworkCellularSharingTraffic(nmd::NetworkSharingTraffic &traffic,
679     std::string &ifaceName)
680 {
681     NETMGR_LOG_D("NetsysNativeClient GetNetworkCellularSharingTraffic");
682     auto proxy = GetProxy();
683     if (proxy == nullptr) {
684         NETMGR_LOG_E("proxy is nullptr");
685         return NETMANAGER_ERR_GET_PROXY_FAIL;
686     }
687     return proxy->GetNetworkCellularSharingTraffic(traffic, ifaceName);
688 }
689 
GetCellularRxBytes()690 int64_t NetsysNativeClient::GetCellularRxBytes()
691 {
692     NETMGR_LOG_D("NetsysNativeClient GetCellularRxBytes");
693     auto proxy = GetProxy();
694     if (proxy == nullptr) {
695         NETMGR_LOG_E("proxy is nullptr");
696         return NETMANAGER_ERR_GET_PROXY_FAIL;
697     }
698     return NETMANAGER_SUCCESS;
699 }
700 
GetCellularTxBytes()701 int64_t NetsysNativeClient::GetCellularTxBytes()
702 {
703     NETMGR_LOG_D("NetsysNativeClient GetCellularTxBytes");
704     auto proxy = GetProxy();
705     if (proxy == nullptr) {
706         NETMGR_LOG_E("proxy is nullptr");
707         return NETMANAGER_ERR_GET_PROXY_FAIL;
708     }
709     return NETMANAGER_SUCCESS;
710 }
711 
GetAllRxBytes()712 int64_t NetsysNativeClient::GetAllRxBytes()
713 {
714     NETMGR_LOG_D("NetsysNativeClient GetAllRxBytes");
715     auto proxy = GetProxy();
716     if (proxy == nullptr) {
717         NETMGR_LOG_E("proxy is nullptr");
718         return NETMANAGER_ERR_GET_PROXY_FAIL;
719     }
720     return NETMANAGER_SUCCESS;
721 }
722 
GetAllTxBytes()723 int64_t NetsysNativeClient::GetAllTxBytes()
724 {
725     NETMGR_LOG_D("NetsysNativeClient GetAllTxBytes");
726     auto proxy = GetProxy();
727     if (proxy == nullptr) {
728         NETMGR_LOG_E("proxy is nullptr");
729         return NETMANAGER_ERR_GET_PROXY_FAIL;
730     }
731     return NETMANAGER_SUCCESS;
732 }
733 
GetUidRxBytes(uint32_t uid)734 int64_t NetsysNativeClient::GetUidRxBytes(uint32_t uid)
735 {
736     NETMGR_LOG_D("NetsysNativeClient GetUidRxBytes uid is [%{public}u]", uid);
737     auto proxy = GetProxy();
738     if (proxy == nullptr) {
739         NETMGR_LOG_E("proxy is nullptr");
740         return NETMANAGER_ERR_GET_PROXY_FAIL;
741     }
742     return NETMANAGER_SUCCESS;
743 }
744 
GetUidTxBytes(uint32_t uid)745 int64_t NetsysNativeClient::GetUidTxBytes(uint32_t uid)
746 {
747     NETMGR_LOG_D("NetsysNativeClient GetUidTxBytes uid is [%{public}u]", uid);
748     auto proxy = GetProxy();
749     if (proxy == nullptr) {
750         NETMGR_LOG_E("proxy is nullptr");
751         return NETMANAGER_ERR_GET_PROXY_FAIL;
752     }
753     return NETMANAGER_SUCCESS;
754 }
755 
GetUidOnIfaceRxBytes(uint32_t uid,const std::string & interfaceName)756 int64_t NetsysNativeClient::GetUidOnIfaceRxBytes(uint32_t uid, const std::string &interfaceName)
757 {
758     NETMGR_LOG_D("NetsysNativeClient GetUidOnIfaceRxBytes uid is [%{public}u] iface name is [%{public}s]", uid,
759                  interfaceName.c_str());
760     auto proxy = GetProxy();
761     if (proxy == nullptr) {
762         NETMGR_LOG_E("proxy is nullptr");
763         return NETMANAGER_ERR_GET_PROXY_FAIL;
764     }
765     return NETMANAGER_SUCCESS;
766 }
767 
GetUidOnIfaceTxBytes(uint32_t uid,const std::string & interfaceName)768 int64_t NetsysNativeClient::GetUidOnIfaceTxBytes(uint32_t uid, const std::string &interfaceName)
769 {
770     NETMGR_LOG_D("NetsysNativeClient GetUidOnIfaceTxBytes uid is [%{public}u] iface name is [%{public}s]", uid,
771                  interfaceName.c_str());
772     auto proxy = GetProxy();
773     if (proxy == nullptr) {
774         NETMGR_LOG_E("proxy is nullptr");
775         return NETMANAGER_ERR_GET_PROXY_FAIL;
776     }
777     return NETMANAGER_SUCCESS;
778 }
779 
GetIfaceRxBytes(const std::string & interfaceName)780 int64_t NetsysNativeClient::GetIfaceRxBytes(const std::string &interfaceName)
781 {
782     NETMGR_LOG_D("NetsysNativeClient GetIfaceRxBytes iface name is [%{public}s]", interfaceName.c_str());
783     auto proxy = GetProxy();
784     if (proxy == nullptr) {
785         NETMGR_LOG_E("proxy is nullptr");
786         return NETMANAGER_ERR_GET_PROXY_FAIL;
787     }
788     return NETMANAGER_SUCCESS;
789 }
790 
GetIfaceTxBytes(const std::string & interfaceName)791 int64_t NetsysNativeClient::GetIfaceTxBytes(const std::string &interfaceName)
792 {
793     NETMGR_LOG_D("NetsysNativeClient GetIfaceTxBytes iface name is [%{public}s]", interfaceName.c_str());
794     auto proxy = GetProxy();
795     if (proxy == nullptr) {
796         NETMGR_LOG_E("proxy is nullptr");
797         return NETMANAGER_ERR_GET_PROXY_FAIL;
798     }
799     return NETMANAGER_SUCCESS;
800 }
801 
InterfaceGetList()802 std::vector<std::string> NetsysNativeClient::InterfaceGetList()
803 {
804     NETMGR_LOG_D("NetsysNativeClient InterfaceGetList");
805     std::vector<std::string> ret;
806     auto proxy = GetProxy();
807     if (proxy == nullptr) {
808         NETMGR_LOG_E("proxy is nullptr");
809         return ret;
810     }
811     proxy->InterfaceGetList(ret);
812     return ret;
813 }
814 
UidGetList()815 std::vector<std::string> NetsysNativeClient::UidGetList()
816 {
817     NETMGR_LOG_D("NetsysNativeClient UidGetList");
818     auto proxy = GetProxy();
819     if (proxy == nullptr) {
820         NETMGR_LOG_E("proxy is nullptr");
821         return {};
822     }
823     return {};
824 }
825 
GetIfaceRxPackets(const std::string & interfaceName)826 int64_t NetsysNativeClient::GetIfaceRxPackets(const std::string &interfaceName)
827 {
828     NETMGR_LOG_D("NetsysNativeClient GetIfaceRxPackets iface name is [%{public}s]", interfaceName.c_str());
829     return NETMANAGER_SUCCESS;
830 }
831 
GetIfaceTxPackets(const std::string & interfaceName)832 int64_t NetsysNativeClient::GetIfaceTxPackets(const std::string &interfaceName)
833 {
834     NETMGR_LOG_D("NetsysNativeClient GetIfaceTxPackets iface name is [%{public}s]", interfaceName.c_str());
835     return NETMANAGER_SUCCESS;
836 }
837 
SetDefaultNetWork(int32_t netId)838 int32_t NetsysNativeClient::SetDefaultNetWork(int32_t netId)
839 {
840     NETMGR_LOG_D("NetsysNativeClient SetDefaultNetWork");
841     auto proxy = GetProxy();
842     if (proxy == nullptr) {
843         NETMGR_LOG_E("proxy is nullptr");
844         return NETMANAGER_ERR_GET_PROXY_FAIL;
845     }
846     return proxy->NetworkSetDefault(netId);
847 }
848 
ClearDefaultNetWorkNetId()849 int32_t NetsysNativeClient::ClearDefaultNetWorkNetId()
850 {
851     NETMGR_LOG_D("NetsysNativeClient ClearDefaultNetWorkNetId");
852     auto proxy = GetProxy();
853     if (proxy == nullptr) {
854         NETMGR_LOG_E("proxy is nullptr");
855         return NETMANAGER_ERR_GET_PROXY_FAIL;
856     }
857     return NETMANAGER_SUCCESS;
858 }
859 
BindSocket(int32_t socketFd,uint32_t netId)860 int32_t NetsysNativeClient::BindSocket(int32_t socketFd, uint32_t netId)
861 {
862     NETMGR_LOG_D("NetsysNativeClient::BindSocket: netId = [%{public}u]", netId);
863     auto proxy = GetProxy();
864     if (proxy == nullptr) {
865         NETMGR_LOG_E("proxy is nullptr");
866         return NETMANAGER_ERR_GET_PROXY_FAIL;
867     }
868     return NETMANAGER_SUCCESS;
869 }
870 
IpEnableForwarding(const std::string & requestor)871 int32_t NetsysNativeClient::IpEnableForwarding(const std::string &requestor)
872 {
873     NETMGR_LOG_D("NetsysNativeClient IpEnableForwarding: requestor[%{public}s]", requestor.c_str());
874     auto proxy = GetProxy();
875     if (proxy == nullptr) {
876         NETMGR_LOG_E("proxy is nullptr");
877         return NETMANAGER_ERR_GET_PROXY_FAIL;
878     }
879     return proxy->IpEnableForwarding(requestor);
880 }
881 
IpDisableForwarding(const std::string & requestor)882 int32_t NetsysNativeClient::IpDisableForwarding(const std::string &requestor)
883 {
884     NETMGR_LOG_D("NetsysNativeClient IpDisableForwarding: requestor[%{public}s]", requestor.c_str());
885     auto proxy = GetProxy();
886     if (proxy == nullptr) {
887         NETMGR_LOG_E("proxy is nullptr");
888         return NETMANAGER_ERR_GET_PROXY_FAIL;
889     }
890     return proxy->IpDisableForwarding(requestor);
891 }
892 
EnableNat(const std::string & downstreamIface,const std::string & upstreamIface)893 int32_t NetsysNativeClient::EnableNat(const std::string &downstreamIface, const std::string &upstreamIface)
894 {
895     NETMGR_LOG_D("NetsysNativeClient EnableNat: intIface[%{public}s] intIface[%{public}s]", downstreamIface.c_str(),
896                  upstreamIface.c_str());
897     auto proxy = GetProxy();
898     if (proxy == nullptr) {
899         NETMGR_LOG_E("proxy is nullptr");
900         return NETMANAGER_ERR_GET_PROXY_FAIL;
901     }
902     return proxy->EnableNat(downstreamIface, upstreamIface);
903 }
904 
DisableNat(const std::string & downstreamIface,const std::string & upstreamIface)905 int32_t NetsysNativeClient::DisableNat(const std::string &downstreamIface, const std::string &upstreamIface)
906 {
907     NETMGR_LOG_D("NetsysNativeClient DisableNat: intIface[%{public}s] intIface[%{public}s]", downstreamIface.c_str(),
908                  upstreamIface.c_str());
909     auto proxy = GetProxy();
910     if (proxy == nullptr) {
911         NETMGR_LOG_E("proxy is nullptr");
912         return NETMANAGER_ERR_GET_PROXY_FAIL;
913     }
914     return proxy->DisableNat(downstreamIface, upstreamIface);
915 }
916 
IpfwdAddInterfaceForward(const std::string & fromIface,const std::string & toIface)917 int32_t NetsysNativeClient::IpfwdAddInterfaceForward(const std::string &fromIface, const std::string &toIface)
918 {
919     auto proxy = GetProxy();
920     if (proxy == nullptr) {
921         NETMGR_LOG_E("proxy is nullptr");
922         return NETMANAGER_ERR_GET_PROXY_FAIL;
923     }
924     return proxy->IpfwdAddInterfaceForward(fromIface, toIface);
925 }
926 
IpfwdRemoveInterfaceForward(const std::string & fromIface,const std::string & toIface)927 int32_t NetsysNativeClient::IpfwdRemoveInterfaceForward(const std::string &fromIface, const std::string &toIface)
928 {
929     NETMGR_LOG_D("NetsysNativeClient IpfwdRemoveInterfaceForward: fromIface[%{public}s], toIface[%{public}s]",
930                  fromIface.c_str(), toIface.c_str());
931     auto proxy = GetProxy();
932     if (proxy == nullptr) {
933         NETMGR_LOG_E("proxy is nullptr");
934         return NETMANAGER_ERR_GET_PROXY_FAIL;
935     }
936     return proxy->IpfwdRemoveInterfaceForward(fromIface, toIface);
937 }
938 
ShareDnsSet(uint16_t netId)939 int32_t NetsysNativeClient::ShareDnsSet(uint16_t netId)
940 {
941     auto proxy = GetProxy();
942     if (proxy == nullptr) {
943         NETMGR_LOG_E("proxy is nullptr");
944         return NETMANAGER_ERR_GET_PROXY_FAIL;
945     }
946     return proxy->ShareDnsSet(netId);
947 }
948 
StartDnsProxyListen()949 int32_t NetsysNativeClient::StartDnsProxyListen()
950 {
951     auto proxy = GetProxy();
952     if (proxy == nullptr) {
953         NETMGR_LOG_E("proxy is nullptr");
954         return NETMANAGER_ERR_GET_PROXY_FAIL;
955     }
956     return proxy->StartDnsProxyListen();
957 }
958 
StopDnsProxyListen()959 int32_t NetsysNativeClient::StopDnsProxyListen()
960 {
961     auto proxy = GetProxy();
962     if (proxy == nullptr) {
963         NETMGR_LOG_E("proxy is nullptr");
964         return NETMANAGER_ERR_GET_PROXY_FAIL;
965     }
966     return proxy->StopDnsProxyListen();
967 }
968 
RegisterNetsysNotifyCallback(const NetsysNotifyCallback & callback)969 int32_t NetsysNativeClient::RegisterNetsysNotifyCallback(const NetsysNotifyCallback &callback)
970 {
971     (void)callback;
972     NETMGR_LOG_D("NetsysNativeClient RegisterNetsysNotifyCallback");
973     return NETMANAGER_SUCCESS;
974 }
975 
GetProxy()976 __attribute__((no_sanitize("cfi"))) sptr<OHOS::NetsysNative::INetsysService> NetsysNativeClient::GetProxy()
977 {
978     std::lock_guard lock(mutex_);
979     if (netsysNativeService_) {
980         return netsysNativeService_;
981     }
982 
983     NETMGR_LOG_D("Execute GetSystemAbilityManager");
984     auto samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
985     if (samgr == nullptr) {
986         NETMGR_LOG_E("NetsysNativeClient samgr null");
987         return nullptr;
988     }
989 
990     auto remote = samgr->GetSystemAbility(OHOS::COMM_NETSYS_NATIVE_SYS_ABILITY_ID);
991     if (remote == nullptr) {
992         NETMGR_LOG_E("Get remote service failed");
993         return nullptr;
994     }
995 
996     deathRecipient_ = sptr<NetNativeConnDeathRecipient>::MakeSptr(shared_from_this());
997     if (deathRecipient_ == nullptr) {
998         NETMGR_LOG_E("Recipient new failed!");
999         return nullptr;
1000     }
1001 
1002     if ((remote->IsProxyObject()) && (!remote->AddDeathRecipient(deathRecipient_))) {
1003         NETMGR_LOG_E("add death recipient failed");
1004         return nullptr;
1005     }
1006 
1007     netsysNativeService_ = iface_cast<NetsysNative::INetsysService>(remote);
1008     if (netsysNativeService_ == nullptr) {
1009         NETMGR_LOG_E("Get remote service proxy failed");
1010         return nullptr;
1011     }
1012 
1013     return netsysNativeService_;
1014 }
1015 
RegisterNotifyCallback()1016 void NetsysNativeClient::RegisterNotifyCallback()
1017 {
1018     std::thread t([client = shared_from_this()]() {
1019         uint32_t count = 0;
1020         while (client->GetProxy() == nullptr && count < MAX_GET_SERVICE_COUNT) {
1021             std::this_thread::sleep_for(std::chrono::seconds(WAIT_FOR_SERVICE_TIME_S));
1022             count++;
1023         }
1024         auto proxy = client->GetProxy();
1025         NETMGR_LOG_W("Get proxy %{public}s, count: %{public}u", proxy == nullptr ? "failed" : "success", count);
1026         if (proxy != nullptr) {
1027             if (client->nativeNotifyCallback_ == nullptr) {
1028                 client->nativeNotifyCallback_ = sptr<NativeNotifyCallback>::MakeSptr(client);
1029             }
1030 
1031             NETMGR_LOG_D("call proxy->RegisterNotifyCallback");
1032             proxy->RegisterNotifyCallback(client->nativeNotifyCallback_);
1033 
1034             if (client->nativeNetDnsResultCallback_ == nullptr) {
1035                 client->nativeNetDnsResultCallback_ = sptr<NativeNetDnsResultCallback>::MakeSptr(client);
1036             }
1037 
1038             NETMGR_LOG_D("call proxy->RegisterDnsResultCallback");
1039             proxy->RegisterDnsResultCallback(client->nativeNetDnsResultCallback_, client->dnsReportTimeStep);
1040         }
1041     });
1042     std::string threadName = "netsysGetProxy";
1043     pthread_setname_np(t.native_handle(), threadName.c_str());
1044     t.detach();
1045 }
1046 
UnRegisterNotifyCallback()1047 void NetsysNativeClient::UnRegisterNotifyCallback()
1048 {
1049     auto proxy = GetProxy();
1050     if (proxy == nullptr) {
1051         NETMGR_LOG_E("proxy is nullptr");
1052         return;
1053     }
1054     if (nativeNotifyCallback_ != nullptr) {
1055         proxy->UnRegisterNotifyCallback(nativeNotifyCallback_);
1056         nativeNotifyCallback_ = nullptr;
1057     }
1058 
1059     if (nativeNetDnsResultCallback_ != nullptr) {
1060         proxy->UnregisterDnsResultCallback(nativeNetDnsResultCallback_);
1061         nativeNetDnsResultCallback_ = nullptr;
1062     }
1063 }
1064 
OnRemoteDied(const wptr<IRemoteObject> & remote)1065 void NetsysNativeClient::OnRemoteDied(const wptr<IRemoteObject> &remote)
1066 {
1067     NETMGR_LOG_D("on remote died");
1068     if (remote == nullptr) {
1069         NETMGR_LOG_E("remote object is nullptr");
1070         return;
1071     }
1072 
1073     std::lock_guard lock(mutex_);
1074     if (netsysNativeService_ == nullptr) {
1075         NETMGR_LOG_E("netsysNativeService_ is nullptr");
1076         return;
1077     }
1078 
1079     sptr<IRemoteObject> local = netsysNativeService_->AsObject();
1080     if (local != remote.promote()) {
1081         NETMGR_LOG_E("proxy and stub is not same remote object");
1082         return;
1083     }
1084     local->RemoveDeathRecipient(deathRecipient_);
1085 
1086     if (access(NETSYS_ROUTE_INIT_DIR_PATH, F_OK) == 0) {
1087         NETMGR_LOG_D("NetConnService netsys restart, clear NETSYS_ROUTE_INIT_DIR_PATH");
1088         rmdir(NETSYS_ROUTE_INIT_DIR_PATH);
1089     }
1090 
1091     netsysNativeService_ = nullptr;
1092 
1093     RegisterNotifyCallback();
1094 }
1095 
BindNetworkServiceVpn(int32_t socketFd)1096 int32_t NetsysNativeClient::BindNetworkServiceVpn(int32_t socketFd)
1097 {
1098     NETMGR_LOG_D("NetsysNativeClient::BindNetworkServiceVpn: socketFd[%{public}d]", socketFd);
1099     /* netsys provide default interface name */
1100     const char *defaultNetName = "wlan0";
1101     socklen_t defaultNetNameLen = strlen(defaultNetName);
1102     /* set socket by option. */
1103     int32_t ret = setsockopt(socketFd, SOL_SOCKET, SO_MARK, defaultNetName, defaultNetNameLen);
1104     if (ret < 0) {
1105         NETMGR_LOG_E("The SO_BINDTODEVICE of setsockopt failed.");
1106         return NETSYS_ERR_VPN;
1107     }
1108     return NETMANAGER_SUCCESS;
1109 }
1110 
EnableVirtualNetIfaceCard(int32_t socketFd,struct ifreq & ifRequest,int32_t & ifaceFd)1111 int32_t NetsysNativeClient::EnableVirtualNetIfaceCard(int32_t socketFd, struct ifreq &ifRequest, int32_t &ifaceFd)
1112 {
1113     NETMGR_LOG_D("NetsysNativeClient::EnableVirtualNetIfaceCard: socketFd[%{public}d]", socketFd);
1114     int32_t ifaceFdTemp = 0;
1115     if ((ifaceFdTemp = open(DEV_NET_TUN_PATH, O_RDWR)) < 0) {
1116         NETMGR_LOG_E("VPN tunnel device open was failed.");
1117         return NETSYS_ERR_VPN;
1118     }
1119 
1120     /*
1121      * Flags:
1122      * IFF_TUN   - TUN device (no Ethernet headers)
1123      * IFF_TAP   - TAP device
1124      * IFF_NO_PI - Do not provide packet information
1125      **/
1126     ifRequest.ifr_flags = IFF_TUN | IFF_NO_PI;
1127     /**
1128      * Try to create the device. if it cannot assign the device interface name, kernel can
1129      * allocate the next device interface name. for example, there is tun0, kernel can
1130      * allocate tun1.
1131      **/
1132     if (ioctl(ifaceFdTemp, TUNSETIFF, &ifRequest) < 0) {
1133         NETMGR_LOG_E("The TUNSETIFF of ioctl failed, ifRequest.ifr_name[%{public}s]", ifRequest.ifr_name);
1134         close(ifaceFdTemp);
1135         return NETSYS_ERR_VPN;
1136     }
1137 
1138     /* Activate the device */
1139     ifRequest.ifr_flags = IFF_UP;
1140     if (ioctl(socketFd, SIOCSIFFLAGS, &ifRequest) < 0) {
1141         NETMGR_LOG_E("The SIOCSIFFLAGS of ioctl failed.");
1142         close(ifaceFdTemp);
1143         return NETSYS_ERR_VPN;
1144     }
1145 
1146     ifaceFd = ifaceFdTemp;
1147     return NETMANAGER_SUCCESS;
1148 }
1149 
AsInAddr(sockaddr * sa)1150 static inline in_addr_t *AsInAddr(sockaddr *sa)
1151 {
1152     return &(reinterpret_cast<sockaddr_in *>(sa))->sin_addr.s_addr;
1153 }
1154 
SetIpAddress(int32_t socketFd,const std::string & ipAddress,int32_t prefixLen,struct ifreq & ifRequest)1155 int32_t NetsysNativeClient::SetIpAddress(int32_t socketFd, const std::string &ipAddress, int32_t prefixLen,
1156                                          struct ifreq &ifRequest)
1157 {
1158     NETMGR_LOG_D("NetsysNativeClient::SetIpAddress: socketFd[%{public}d]", socketFd);
1159 
1160     ifRequest.ifr_addr.sa_family = AF_INET;
1161     ifRequest.ifr_netmask.sa_family = AF_INET;
1162 
1163     /* inet_pton is IP ipAddress translation to binary network byte order. */
1164     if (inet_pton(AF_INET, ipAddress.c_str(), AsInAddr(&ifRequest.ifr_addr)) != 1) {
1165         NETMGR_LOG_E("inet_pton failed.");
1166         return NETSYS_ERR_VPN;
1167     }
1168     if (ioctl(socketFd, SIOCSIFADDR, &ifRequest) < 0) {
1169         NETMGR_LOG_E("The SIOCSIFADDR of ioctl failed.");
1170         return NETSYS_ERR_VPN;
1171     }
1172     in_addr_t addressPrefixLength = prefixLen ? (~0 << (IPV4_MAX_LENGTH - prefixLen)) : 0;
1173     *AsInAddr(&ifRequest.ifr_netmask) = htonl(addressPrefixLength);
1174     if (ioctl(socketFd, SIOCSIFNETMASK, &ifRequest)) {
1175         NETMGR_LOG_E("The SIOCSIFNETMASK of ioctl failed.");
1176         return NETSYS_ERR_VPN;
1177     }
1178 
1179     return NETMANAGER_SUCCESS;
1180 }
1181 
SetBlocking(int32_t ifaceFd,bool isBlock)1182 int32_t NetsysNativeClient::SetBlocking(int32_t ifaceFd, bool isBlock)
1183 {
1184     NETMGR_LOG_D("NetsysNativeClient::SetBlocking");
1185     int32_t blockingFlag = 0;
1186     blockingFlag = fcntl(ifaceFd, F_GETFL);
1187     if (blockingFlag < 0) {
1188         NETMGR_LOG_E("The blockingFlag of fcntl failed.");
1189         return NETSYS_ERR_VPN;
1190     }
1191 
1192     if (!isBlock) {
1193         blockingFlag = static_cast<int>(static_cast<uint32_t>(blockingFlag) | static_cast<uint32_t>(O_NONBLOCK));
1194     } else {
1195         blockingFlag = static_cast<int>(static_cast<uint32_t>(blockingFlag) | static_cast<uint32_t>(~O_NONBLOCK));
1196     }
1197 
1198     if (fcntl(ifaceFd, F_SETFL, blockingFlag) < 0) {
1199         NETMGR_LOG_E("The F_SETFL of fcntl failed.");
1200         return NETSYS_ERR_VPN;
1201     }
1202     return NETMANAGER_SUCCESS;
1203 }
1204 
StartDhcpClient(const std::string & iface,bool bIpv6)1205 int32_t NetsysNativeClient::StartDhcpClient(const std::string &iface, bool bIpv6)
1206 {
1207     NETMGR_LOG_D("NetsysNativeClient::StartDhcpClient");
1208     auto proxy = GetProxy();
1209     if (proxy == nullptr) {
1210         NETMGR_LOG_E("proxy is nullptr");
1211         return NETMANAGER_ERR_GET_PROXY_FAIL;
1212     }
1213     return proxy->StartDhcpClient(iface, bIpv6);
1214 }
1215 
StopDhcpClient(const std::string & iface,bool bIpv6)1216 int32_t NetsysNativeClient::StopDhcpClient(const std::string &iface, bool bIpv6)
1217 {
1218     NETMGR_LOG_D("NetsysNativeClient::StopDhcpClient");
1219     auto proxy = GetProxy();
1220     if (proxy == nullptr) {
1221         NETMGR_LOG_E("proxy is nullptr");
1222         return NETMANAGER_ERR_GET_PROXY_FAIL;
1223     }
1224     return proxy->StopDhcpClient(iface, bIpv6);
1225 }
1226 
RegisterCallback(const sptr<NetsysControllerCallback> & callback)1227 int32_t NetsysNativeClient::RegisterCallback(const sptr<NetsysControllerCallback> &callback)
1228 {
1229     NETMGR_LOG_D("NetsysNativeClient::RegisterCallback");
1230     if (callback == nullptr) {
1231         NETMGR_LOG_E("Callback is nullptr");
1232         return NETMANAGER_ERR_LOCAL_PTR_NULL;
1233     }
1234     std::lock_guard lock(cbObjMutex_);
1235     cbObjects_.push_back(callback);
1236     return NETMANAGER_SUCCESS;
1237 }
1238 
ProcessDhcpResult(sptr<OHOS::NetsysNative::DhcpResultParcel> & dhcpResult)1239 void NetsysNativeClient::ProcessDhcpResult(sptr<OHOS::NetsysNative::DhcpResultParcel> &dhcpResult)
1240 {
1241     NETMGR_LOG_I("NetsysNativeClient::ProcessDhcpResult");
1242     std::lock_guard lock(cbObjMutex_);
1243     NetsysControllerCallback::DhcpResult result;
1244     for (auto cb = cbObjects_.begin(); cb != cbObjects_.end();) {
1245         if (*cb == nullptr) {
1246             cb = cbObjects_.erase(cb);
1247         } else {
1248             result.iface_ = dhcpResult->iface_;
1249             result.ipAddr_ = dhcpResult->ipAddr_;
1250             result.gateWay_ = dhcpResult->gateWay_;
1251             result.subNet_ = dhcpResult->subNet_;
1252             result.route1_ = dhcpResult->route1_;
1253             result.route2_ = dhcpResult->route2_;
1254             result.dns1_ = dhcpResult->dns1_;
1255             result.dns2_ = dhcpResult->dns2_;
1256             (*cb)->OnDhcpSuccess(result);
1257             ++cb;
1258         }
1259     }
1260 }
1261 
StartDhcpService(const std::string & iface,const std::string & ipv4addr)1262 int32_t NetsysNativeClient::StartDhcpService(const std::string &iface, const std::string &ipv4addr)
1263 {
1264     NETMGR_LOG_D("NetsysNativeClient StartDhcpService");
1265     auto proxy = GetProxy();
1266     if (proxy == nullptr) {
1267         NETMGR_LOG_E("proxy is nullptr");
1268         return NETMANAGER_ERR_GET_PROXY_FAIL;
1269     }
1270     return proxy->StartDhcpService(iface, ipv4addr);
1271 }
1272 
StopDhcpService(const std::string & iface)1273 int32_t NetsysNativeClient::StopDhcpService(const std::string &iface)
1274 {
1275     NETMGR_LOG_D("NetsysNativeClient StopDhcpService");
1276     auto proxy = GetProxy();
1277     if (proxy == nullptr) {
1278         NETMGR_LOG_E("proxy is nullptr");
1279         return NETMANAGER_ERR_GET_PROXY_FAIL;
1280     }
1281     return proxy->StopDhcpService(iface);
1282 }
1283 
ProcessBandwidthReachedLimit(const std::string & limitName,const std::string & iface)1284 void NetsysNativeClient::ProcessBandwidthReachedLimit(const std::string &limitName, const std::string &iface)
1285 {
1286     NETMGR_LOG_D("NetsysNativeClient ProcessBandwidthReachedLimit, limitName=%{public}s, iface=%{public}s",
1287                  limitName.c_str(), iface.c_str());
1288     std::lock_guard lock(cbObjMutex_);
1289     for (auto cb = cbObjects_.begin(); cb != cbObjects_.end();) {
1290         if (*cb == nullptr) {
1291             cb = cbObjects_.erase(cb);
1292         } else {
1293             (*cb)->OnBandwidthReachedLimit(limitName, iface);
1294             ++cb;
1295         }
1296     }
1297 }
1298 
BandwidthEnableDataSaver(bool enable)1299 int32_t NetsysNativeClient::BandwidthEnableDataSaver(bool enable)
1300 {
1301     auto proxy = GetProxy();
1302     if (proxy == nullptr) {
1303         NETMGR_LOG_E("proxy is nullptr");
1304         return NETMANAGER_ERR_GET_PROXY_FAIL;
1305     }
1306     return proxy->BandwidthEnableDataSaver(enable);
1307 }
1308 
BandwidthSetIfaceQuota(const std::string & ifName,int64_t bytes)1309 int32_t NetsysNativeClient::BandwidthSetIfaceQuota(const std::string &ifName, int64_t bytes)
1310 {
1311     auto proxy = GetProxy();
1312     if (proxy == nullptr) {
1313         NETMGR_LOG_E("proxy is nullptr");
1314         return NETMANAGER_ERR_GET_PROXY_FAIL;
1315     }
1316     return proxy->BandwidthSetIfaceQuota(ifName, bytes);
1317 }
1318 
BandwidthRemoveIfaceQuota(const std::string & ifName)1319 int32_t NetsysNativeClient::BandwidthRemoveIfaceQuota(const std::string &ifName)
1320 {
1321     auto proxy = GetProxy();
1322     if (proxy == nullptr) {
1323         NETMGR_LOG_E("proxy is nullptr");
1324         return NETMANAGER_ERR_GET_PROXY_FAIL;
1325     }
1326     return proxy->BandwidthRemoveIfaceQuota(ifName);
1327 }
1328 
BandwidthAddDeniedList(uint32_t uid)1329 int32_t NetsysNativeClient::BandwidthAddDeniedList(uint32_t uid)
1330 {
1331     auto proxy = GetProxy();
1332     if (proxy == nullptr) {
1333         NETMGR_LOG_E("proxy is nullptr");
1334         return NETMANAGER_ERR_GET_PROXY_FAIL;
1335     }
1336     return proxy->BandwidthAddDeniedList(uid);
1337 }
1338 
BandwidthRemoveDeniedList(uint32_t uid)1339 int32_t NetsysNativeClient::BandwidthRemoveDeniedList(uint32_t uid)
1340 {
1341     auto proxy = GetProxy();
1342     if (proxy == nullptr) {
1343         NETMGR_LOG_E("proxy is nullptr");
1344         return NETMANAGER_ERR_GET_PROXY_FAIL;
1345     }
1346     return proxy->BandwidthRemoveDeniedList(uid);
1347 }
1348 
BandwidthAddAllowedList(uint32_t uid)1349 int32_t NetsysNativeClient::BandwidthAddAllowedList(uint32_t uid)
1350 {
1351     auto proxy = GetProxy();
1352     if (proxy == nullptr) {
1353         NETMGR_LOG_E("proxy is nullptr");
1354         return NETMANAGER_ERR_GET_PROXY_FAIL;
1355     }
1356     return proxy->BandwidthAddAllowedList(uid);
1357 }
1358 
BandwidthRemoveAllowedList(uint32_t uid)1359 int32_t NetsysNativeClient::BandwidthRemoveAllowedList(uint32_t uid)
1360 {
1361     auto proxy = GetProxy();
1362     if (proxy == nullptr) {
1363         NETMGR_LOG_E("proxy is nullptr");
1364         return NETMANAGER_ERR_GET_PROXY_FAIL;
1365     }
1366     return proxy->BandwidthRemoveAllowedList(uid);
1367 }
1368 
FirewallSetUidsAllowedListChain(uint32_t chain,const std::vector<uint32_t> & uids)1369 int32_t NetsysNativeClient::FirewallSetUidsAllowedListChain(uint32_t chain, const std::vector<uint32_t> &uids)
1370 {
1371     auto proxy = GetProxy();
1372     if (proxy == nullptr) {
1373         NETMGR_LOG_E("proxy is nullptr");
1374         return NETMANAGER_ERR_GET_PROXY_FAIL;
1375     }
1376     return proxy->FirewallSetUidsAllowedListChain(chain, uids);
1377 }
1378 
FirewallSetUidsDeniedListChain(uint32_t chain,const std::vector<uint32_t> & uids)1379 int32_t NetsysNativeClient::FirewallSetUidsDeniedListChain(uint32_t chain, const std::vector<uint32_t> &uids)
1380 {
1381     auto proxy = GetProxy();
1382     if (proxy == nullptr) {
1383         NETMGR_LOG_E("proxy is nullptr");
1384         return NETMANAGER_ERR_GET_PROXY_FAIL;
1385     }
1386     return proxy->FirewallSetUidsDeniedListChain(chain, uids);
1387 }
1388 
FirewallEnableChain(uint32_t chain,bool enable)1389 int32_t NetsysNativeClient::FirewallEnableChain(uint32_t chain, bool enable)
1390 {
1391     auto proxy = GetProxy();
1392     if (proxy == nullptr) {
1393         NETMGR_LOG_E("proxy is nullptr");
1394         return NETMANAGER_ERR_GET_PROXY_FAIL;
1395     }
1396     return proxy->FirewallEnableChain(chain, enable);
1397 }
1398 
FirewallSetUidRule(uint32_t chain,const std::vector<uint32_t> & uids,uint32_t firewallRule)1399 int32_t NetsysNativeClient::FirewallSetUidRule(uint32_t chain, const std::vector<uint32_t> &uids, uint32_t firewallRule)
1400 {
1401     auto proxy = GetProxy();
1402     if (proxy == nullptr) {
1403         NETMGR_LOG_E("proxy is nullptr");
1404         return NETMANAGER_ERR_GET_PROXY_FAIL;
1405     }
1406     return proxy->FirewallSetUidRule(chain, uids, firewallRule);
1407 }
1408 
GetTotalStats(uint64_t & stats,uint32_t type)1409 int32_t NetsysNativeClient::GetTotalStats(uint64_t &stats, uint32_t type)
1410 {
1411     auto proxy = GetProxy();
1412     if (proxy == nullptr) {
1413         NETMGR_LOG_E("proxy is nullptr");
1414         return NETMANAGER_ERR_GET_PROXY_FAIL;
1415     }
1416     return proxy->GetTotalStats(stats, type);
1417 }
1418 
GetUidStats(uint64_t & stats,uint32_t type,uint32_t uid)1419 int32_t NetsysNativeClient::GetUidStats(uint64_t &stats, uint32_t type, uint32_t uid)
1420 {
1421     auto proxy = GetProxy();
1422     if (proxy == nullptr) {
1423         NETMGR_LOG_E("proxy is nullptr");
1424         return NETMANAGER_ERR_GET_PROXY_FAIL;
1425     }
1426     return proxy->GetUidStats(stats, type, uid);
1427 }
1428 
GetIfaceStats(uint64_t & stats,uint32_t type,const std::string & interfaceName)1429 int32_t NetsysNativeClient::GetIfaceStats(uint64_t &stats, uint32_t type, const std::string &interfaceName)
1430 {
1431     auto proxy = GetProxy();
1432     if (proxy == nullptr) {
1433         NETMGR_LOG_E("proxy is nullptr");
1434         return NETMANAGER_ERR_GET_PROXY_FAIL;
1435     }
1436     return proxy->GetIfaceStats(stats, type, interfaceName);
1437 }
1438 
GetAllSimStatsInfo(std::vector<OHOS::NetManagerStandard::NetStatsInfo> & stats)1439 int32_t NetsysNativeClient::GetAllSimStatsInfo(std::vector<OHOS::NetManagerStandard::NetStatsInfo> &stats)
1440 {
1441     auto proxy = GetProxy();
1442     if (proxy == nullptr) {
1443         NETMGR_LOG_E("proxy is nullptr");
1444         return NETMANAGER_ERR_GET_PROXY_FAIL;
1445     }
1446     return proxy->GetAllSimStatsInfo(stats);
1447 }
1448 
DeleteSimStatsInfo(uint32_t uid)1449 int32_t NetsysNativeClient::DeleteSimStatsInfo(uint32_t uid)
1450 {
1451     auto proxy = GetProxy();
1452     if (proxy == nullptr) {
1453         NETMGR_LOG_E("proxy is nullptr");
1454         return NETMANAGER_ERR_GET_PROXY_FAIL;
1455     }
1456     return proxy->DeleteSimStatsInfo(uid);
1457 }
1458 
GetAllStatsInfo(std::vector<OHOS::NetManagerStandard::NetStatsInfo> & stats)1459 int32_t NetsysNativeClient::GetAllStatsInfo(std::vector<OHOS::NetManagerStandard::NetStatsInfo> &stats)
1460 {
1461     auto proxy = GetProxy();
1462     if (proxy == nullptr) {
1463         NETMGR_LOG_E("proxy is nullptr");
1464         return NETMANAGER_ERR_GET_PROXY_FAIL;
1465     }
1466     return proxy->GetAllStatsInfo(stats);
1467 }
1468 
DeleteStatsInfo(uint32_t uid)1469 int32_t NetsysNativeClient::DeleteStatsInfo(uint32_t uid)
1470 {
1471     auto proxy = GetProxy();
1472     if (proxy == nullptr) {
1473         NETMGR_LOG_E("proxy is nullptr");
1474         return NETMANAGER_ERR_GET_PROXY_FAIL;
1475     }
1476     return proxy->DeleteStatsInfo(uid);
1477 }
1478 
SetNetStateTrafficMap(uint8_t flag,uint64_t availableTraffic)1479 int32_t NetsysNativeClient::SetNetStateTrafficMap(uint8_t flag, uint64_t availableTraffic)
1480 {
1481     auto proxy = GetProxy();
1482     if (proxy == nullptr) {
1483         NETMGR_LOG_E("proxy is nullptr");
1484         return NETMANAGER_ERR_GET_PROXY_FAIL;
1485     }
1486     return proxy->SetNetStateTrafficMap(flag, availableTraffic);
1487 }
1488 
GetNetStateTrafficMap(uint8_t flag,uint64_t & availableTraffic)1489 int32_t NetsysNativeClient::GetNetStateTrafficMap(uint8_t flag, uint64_t &availableTraffic)
1490 {
1491     auto proxy = GetProxy();
1492     if (proxy == nullptr) {
1493         NETMGR_LOG_E("proxy is nullptr");
1494         return NETMANAGER_ERR_GET_PROXY_FAIL;
1495     }
1496     return proxy->GetNetStateTrafficMap(flag, availableTraffic);
1497 }
1498 
ClearIncreaseTrafficMap()1499 int32_t NetsysNativeClient::ClearIncreaseTrafficMap()
1500 {
1501     auto proxy = GetProxy();
1502     if (proxy == nullptr) {
1503         NETMGR_LOG_E("proxy is nullptr");
1504         return NETMANAGER_ERR_GET_PROXY_FAIL;
1505     }
1506     return proxy->ClearIncreaseTrafficMap();
1507 }
1508 
UpdateIfIndexMap(int8_t key,uint64_t index)1509 int32_t NetsysNativeClient::UpdateIfIndexMap(int8_t key, uint64_t index)
1510 {
1511     auto proxy = GetProxy();
1512     if (proxy == nullptr) {
1513         NETMGR_LOG_E("proxy is nullptr");
1514         return NETMANAGER_ERR_GET_PROXY_FAIL;
1515     }
1516     return proxy->UpdateIfIndexMap(key, index);
1517 }
1518 
SetIptablesCommandForRes(const std::string & cmd,std::string & respond,NetsysNative::IptablesType ipType)1519 int32_t NetsysNativeClient::SetIptablesCommandForRes(const std::string &cmd, std::string &respond,
1520     NetsysNative::IptablesType ipType)
1521 {
1522     auto proxy = GetProxy();
1523     if (proxy == nullptr) {
1524         NETMGR_LOG_E("NetsysNativeClient proxy is nullptr");
1525         return NETMANAGER_ERR_GET_PROXY_FAIL;
1526     }
1527     return proxy->SetIptablesCommandForRes(cmd, respond, ipType);
1528 }
1529 
SetIpCommandForRes(const std::string & cmd,std::string & respond)1530 int32_t NetsysNativeClient::SetIpCommandForRes(const std::string &cmd, std::string &respond)
1531 {
1532     auto proxy = GetProxy();
1533     if (proxy == nullptr) {
1534         NETMGR_LOG_E("NetsysNativeClient proxy is nullptr");
1535         return NETMANAGER_ERR_GET_PROXY_FAIL;
1536     }
1537     return proxy->SetIpCommandForRes(cmd, respond);
1538 }
1539 
NetDiagPingHost(const OHOS::NetsysNative::NetDiagPingOption & pingOption,const sptr<OHOS::NetsysNative::INetDiagCallback> & callback)1540 int32_t NetsysNativeClient::NetDiagPingHost(const OHOS::NetsysNative::NetDiagPingOption &pingOption,
1541                                             const sptr<OHOS::NetsysNative::INetDiagCallback> &callback)
1542 {
1543     auto proxy = GetProxy();
1544     if (proxy == nullptr) {
1545         NETMGR_LOG_E("NetsysNativeClient proxy is nullptr");
1546         return NETMANAGER_ERR_GET_PROXY_FAIL;
1547     }
1548     return proxy->NetDiagPingHost(pingOption, callback);
1549 }
1550 
NetDiagGetRouteTable(std::list<OHOS::NetsysNative::NetDiagRouteTable> & routeTables)1551 int32_t NetsysNativeClient::NetDiagGetRouteTable(std::list<OHOS::NetsysNative::NetDiagRouteTable> &routeTables)
1552 {
1553     auto proxy = GetProxy();
1554     if (proxy == nullptr) {
1555         NETMGR_LOG_E("NetsysNativeClient proxy is nullptr");
1556         return NETMANAGER_ERR_GET_PROXY_FAIL;
1557     }
1558     return proxy->NetDiagGetRouteTable(routeTables);
1559 }
1560 
NetDiagGetSocketsInfo(OHOS::NetsysNative::NetDiagProtocolType socketType,OHOS::NetsysNative::NetDiagSocketsInfo & socketsInfo)1561 int32_t NetsysNativeClient::NetDiagGetSocketsInfo(OHOS::NetsysNative::NetDiagProtocolType socketType,
1562                                                   OHOS::NetsysNative::NetDiagSocketsInfo &socketsInfo)
1563 {
1564     auto proxy = GetProxy();
1565     if (proxy == nullptr) {
1566         NETMGR_LOG_E("NetsysNativeClient proxy is nullptr");
1567         return NETMANAGER_ERR_GET_PROXY_FAIL;
1568     }
1569     return proxy->NetDiagGetSocketsInfo(socketType, socketsInfo);
1570 }
1571 
NetDiagGetInterfaceConfig(std::list<OHOS::NetsysNative::NetDiagIfaceConfig> & configs,const std::string & ifaceName)1572 int32_t NetsysNativeClient::NetDiagGetInterfaceConfig(std::list<OHOS::NetsysNative::NetDiagIfaceConfig> &configs,
1573                                                       const std::string &ifaceName)
1574 {
1575     auto proxy = GetProxy();
1576     if (proxy == nullptr) {
1577         NETMGR_LOG_E("NetsysNativeClient proxy is nullptr");
1578         return NETMANAGER_ERR_GET_PROXY_FAIL;
1579     }
1580     return proxy->NetDiagGetInterfaceConfig(configs, ifaceName);
1581 }
1582 
NetDiagUpdateInterfaceConfig(const OHOS::NetsysNative::NetDiagIfaceConfig & config,const std::string & ifaceName,bool add)1583 int32_t NetsysNativeClient::NetDiagUpdateInterfaceConfig(const OHOS::NetsysNative::NetDiagIfaceConfig &config,
1584                                                          const std::string &ifaceName, bool add)
1585 {
1586     auto proxy = GetProxy();
1587     if (proxy == nullptr) {
1588         NETMGR_LOG_E("NetsysNativeClient proxy is nullptr");
1589         return NETMANAGER_ERR_GET_PROXY_FAIL;
1590     }
1591     return proxy->NetDiagUpdateInterfaceConfig(config, ifaceName, add);
1592 }
1593 
NetDiagSetInterfaceActiveState(const std::string & ifaceName,bool up)1594 int32_t NetsysNativeClient::NetDiagSetInterfaceActiveState(const std::string &ifaceName, bool up)
1595 {
1596     auto proxy = GetProxy();
1597     if (proxy == nullptr) {
1598         NETMGR_LOG_E("NetsysNativeClient proxy is nullptr");
1599         return NETMANAGER_ERR_GET_PROXY_FAIL;
1600     }
1601     return proxy->NetDiagSetInterfaceActiveState(ifaceName, up);
1602 }
1603 
AddStaticArp(const std::string & ipAddr,const std::string & macAddr,const std::string & ifName)1604 int32_t NetsysNativeClient::AddStaticArp(const std::string &ipAddr, const std::string &macAddr,
1605                                          const std::string &ifName)
1606 {
1607     auto proxy = GetProxy();
1608     if (proxy == nullptr) {
1609         NETMGR_LOG_E("NetsysNativeClient proxy is nullptr");
1610         return NETMANAGER_ERR_GET_PROXY_FAIL;
1611     }
1612     return proxy->AddStaticArp(ipAddr, macAddr, ifName);
1613 }
1614 
DelStaticArp(const std::string & ipAddr,const std::string & macAddr,const std::string & ifName)1615 int32_t NetsysNativeClient::DelStaticArp(const std::string &ipAddr, const std::string &macAddr,
1616                                          const std::string &ifName)
1617 {
1618     auto proxy = GetProxy();
1619     if (proxy == nullptr) {
1620         NETMGR_LOG_E("NetsysNativeClient proxy is nullptr");
1621         return NETMANAGER_ERR_GET_PROXY_FAIL;
1622     }
1623     return proxy->DelStaticArp(ipAddr, macAddr, ifName);
1624 }
1625 
RegisterDnsResultCallback(const sptr<OHOS::NetManagerStandard::NetsysDnsReportCallback> & callback,uint32_t timeStep)1626 int32_t NetsysNativeClient::RegisterDnsResultCallback(
1627     const sptr<OHOS::NetManagerStandard::NetsysDnsReportCallback> &callback, uint32_t timeStep)
1628 {
1629     NETMGR_LOG_I("NetsysNativeClient::RegisterCallback");
1630     if (callback == nullptr) {
1631         NETMGR_LOG_E("Callback is nullptr");
1632         return NETMANAGER_ERR_LOCAL_PTR_NULL;
1633     }
1634     std::lock_guard lock(cbDnsReportObjMutex_);
1635     cbDnsReportObjects_.push_back(callback);
1636     dnsReportTimeStep = timeStep;
1637     return NETMANAGER_SUCCESS;
1638 }
1639 
UnregisterDnsResultCallback(const sptr<OHOS::NetManagerStandard::NetsysDnsReportCallback> & callback)1640 int32_t NetsysNativeClient::UnregisterDnsResultCallback(
1641     const sptr<OHOS::NetManagerStandard::NetsysDnsReportCallback> &callback)
1642 {
1643     if (callback == nullptr) {
1644         NETMGR_LOG_E("Callback is nullptr");
1645         return NETMANAGER_ERR_LOCAL_PTR_NULL;
1646     }
1647     std::lock_guard lock(cbDnsReportObjMutex_);
1648     cbDnsReportObjects_.remove(callback);
1649     return NETMANAGER_SUCCESS;
1650 }
1651 
RegisterDnsHealthCallback(const sptr<OHOS::NetsysNative::INetDnsHealthCallback> & callback)1652 int32_t NetsysNativeClient::RegisterDnsHealthCallback(const sptr<OHOS::NetsysNative::INetDnsHealthCallback> &callback)
1653 {
1654     auto proxy = GetProxy();
1655     if (proxy == nullptr) {
1656         NETMGR_LOG_E("NetsysNativeClient proxy is nullptr");
1657         return NETMANAGER_ERR_GET_PROXY_FAIL;
1658     }
1659     return proxy->RegisterDnsHealthCallback(callback);
1660 }
1661 
UnregisterDnsHealthCallback(const sptr<OHOS::NetsysNative::INetDnsHealthCallback> & callback)1662 int32_t NetsysNativeClient::UnregisterDnsHealthCallback(const sptr<OHOS::NetsysNative::INetDnsHealthCallback> &callback)
1663 {
1664     auto proxy = GetProxy();
1665     if (proxy == nullptr) {
1666         NETMGR_LOG_E("NetsysNativeClient proxy is nullptr");
1667         return NETMANAGER_ERR_GET_PROXY_FAIL;
1668     }
1669     return proxy->UnregisterDnsHealthCallback(callback);
1670 }
1671 
GetCookieStats(uint64_t & stats,uint32_t type,uint64_t cookie)1672 int32_t NetsysNativeClient::GetCookieStats(uint64_t &stats, uint32_t type, uint64_t cookie)
1673 {
1674     auto proxy = GetProxy();
1675     if (proxy == nullptr) {
1676         NETMGR_LOG_E("proxy is nullptr");
1677         return NETMANAGER_ERR_GET_PROXY_FAIL;
1678     }
1679     return proxy->GetCookieStats(stats, type, cookie);
1680 }
1681 
GetNetworkSharingType(std::set<uint32_t> & sharingTypeIsOn)1682 int32_t NetsysNativeClient::GetNetworkSharingType(std::set<uint32_t>& sharingTypeIsOn)
1683 {
1684     auto proxy = GetProxy();
1685     if (proxy == nullptr) {
1686         NETMGR_LOG_E("proxy is nullptr");
1687         return NETMANAGER_ERR_GET_PROXY_FAIL;
1688     }
1689     return proxy->GetNetworkSharingType(sharingTypeIsOn);
1690 }
1691 
UpdateNetworkSharingType(uint32_t type,bool isOpen)1692 int32_t NetsysNativeClient::UpdateNetworkSharingType(uint32_t type, bool isOpen)
1693 {
1694     auto proxy = GetProxy();
1695     if (proxy == nullptr) {
1696         NETMGR_LOG_E("proxy is nullptr");
1697         return NETMANAGER_ERR_GET_PROXY_FAIL;
1698     }
1699     return proxy->UpdateNetworkSharingType(type, isOpen);
1700 }
1701 
1702 #ifdef FEATURE_NET_FIREWALL_ENABLE
SetFirewallRules(NetFirewallRuleType type,const std::vector<sptr<NetFirewallBaseRule>> & ruleList,bool isFinish)1703 int32_t NetsysNativeClient::SetFirewallRules(NetFirewallRuleType type,
1704                                              const std::vector<sptr<NetFirewallBaseRule>> &ruleList, bool isFinish)
1705 {
1706     NETMGR_LOG_D("NetsysNativeClient::SetFirewallRules");
1707     auto proxy = GetProxy();
1708     if (proxy == nullptr) {
1709         NETMGR_LOG_E("proxy is nullptr");
1710         return NETMANAGER_ERR_GET_PROXY_FAIL;
1711     }
1712     return proxy->SetFirewallRules(type, ruleList, isFinish);
1713 }
1714 
SetFirewallDefaultAction(int32_t userId,FirewallRuleAction inDefault,FirewallRuleAction outDefault)1715 int32_t NetsysNativeClient::SetFirewallDefaultAction(int32_t userId, FirewallRuleAction inDefault,
1716     FirewallRuleAction outDefault)
1717 {
1718     NETMGR_LOG_D("NetsysNativeClient::SetFirewallDefaultAction");
1719     auto proxy = GetProxy();
1720     if (proxy == nullptr) {
1721         NETMGR_LOG_E("proxy is nullptr");
1722         return NETMANAGER_ERR_GET_PROXY_FAIL;
1723     }
1724     return proxy->SetFirewallDefaultAction(userId, inDefault, outDefault);
1725 }
1726 
SetFirewallCurrentUserId(int32_t userId)1727 int32_t NetsysNativeClient::SetFirewallCurrentUserId(int32_t userId)
1728 {
1729     NETMGR_LOG_D("NetsysNativeClient::SetFirewallCurrentUserId");
1730     auto proxy = GetProxy();
1731     if (proxy == nullptr) {
1732         NETMGR_LOG_E("proxy is nullptr");
1733         return NETMANAGER_ERR_GET_PROXY_FAIL;
1734     }
1735     return proxy->SetFirewallCurrentUserId(userId);
1736 }
1737 
ClearFirewallRules(NetFirewallRuleType type)1738 int32_t NetsysNativeClient::ClearFirewallRules(NetFirewallRuleType type)
1739 {
1740     NETMGR_LOG_D("NetsysNativeClient::ClearFirewallRules");
1741     auto proxy = GetProxy();
1742     if (proxy == nullptr) {
1743         NETMGR_LOG_E("proxy is nullptr");
1744         return NETMANAGER_ERR_GET_PROXY_FAIL;
1745     }
1746     return proxy->ClearFirewallRules(type);
1747 }
1748 
RegisterNetFirewallCallback(const sptr<NetsysNative::INetFirewallCallback> & callback)1749 int32_t NetsysNativeClient::RegisterNetFirewallCallback(const sptr<NetsysNative::INetFirewallCallback> &callback)
1750 {
1751     NETMGR_LOG_D("NetsysNativeClient::RegisterNetFirewallCallback");
1752     auto proxy = GetProxy();
1753     if (proxy == nullptr) {
1754         NETMGR_LOG_E("proxy is nullptr");
1755         return NETMANAGER_ERR_GET_PROXY_FAIL;
1756     }
1757     return proxy->RegisterNetFirewallCallback(callback);
1758 }
1759 
UnRegisterNetFirewallCallback(const sptr<NetsysNative::INetFirewallCallback> & callback)1760 int32_t NetsysNativeClient::UnRegisterNetFirewallCallback(const sptr<NetsysNative::INetFirewallCallback> &callback)
1761 {
1762     NETMGR_LOG_D("NetsysNativeClient::UnRegisterNetFirewallCallback");
1763     auto proxy = GetProxy();
1764     if (proxy == nullptr) {
1765         NETMGR_LOG_E("proxy is nullptr");
1766         return NETMANAGER_ERR_GET_PROXY_FAIL;
1767     }
1768     return proxy->UnRegisterNetFirewallCallback(callback);
1769 }
1770 #endif
1771 
1772 #ifdef FEATURE_WEARABLE_DISTRIBUTED_NET_ENABLE
EnableWearableDistributedNetForward(const int32_t tcpPortId,const int32_t udpPortId)1773 int32_t NetsysNativeClient::EnableWearableDistributedNetForward(const int32_t tcpPortId, const int32_t udpPortId)
1774 {
1775     NETMGR_LOG_I("Enabling wearable distributed net forward for TCP port and UDP port");
1776     auto proxy = GetProxy();
1777     if (proxy == nullptr) {
1778         NETMGR_LOG_E("proxy is nullptr");
1779         return NETMANAGER_ERR_GET_PROXY_FAIL;
1780     }
1781     return proxy->EnableWearableDistributedNetForward(tcpPortId, udpPortId);
1782 }
1783 
DisableWearableDistributedNetForward()1784 int32_t NetsysNativeClient::DisableWearableDistributedNetForward()
1785 {
1786     NETMGR_LOG_I("Disabling wearable distributed net forward");
1787     auto proxy = GetProxy();
1788     if (proxy == nullptr) {
1789         NETMGR_LOG_E("proxy is nullptr");
1790         return NETMANAGER_ERR_GET_PROXY_FAIL;
1791     }
1792     return proxy->DisableWearableDistributedNetForward();
1793 }
1794 #endif
1795 
RegisterNetsysTrafficCallback(const sptr<NetsysNative::INetsysTrafficCallback> & callback)1796 int32_t NetsysNativeClient::RegisterNetsysTrafficCallback(const sptr<NetsysNative::INetsysTrafficCallback> &callback)
1797 {
1798     NETMGR_LOG_I("NetsysNativeClient::RegisterNetsysTrafficCallback");
1799     auto proxy = GetProxy();
1800     if (proxy == nullptr) {
1801         NETMGR_LOG_E("proxy is nullptr");
1802         return NETMANAGER_ERR_GET_PROXY_FAIL;
1803     }
1804     return proxy->RegisterNetsysTrafficCallback(callback);
1805 }
1806 
UnRegisterNetsysTrafficCallback(const sptr<NetsysNative::INetsysTrafficCallback> & callback)1807 int32_t NetsysNativeClient::UnRegisterNetsysTrafficCallback(const sptr<NetsysNative::INetsysTrafficCallback> &callback)
1808 {
1809     NETMGR_LOG_D("NetsysNativeClient::UnRegisterNetsysTrafficCallback");
1810     auto proxy = GetProxy();
1811     if (proxy == nullptr) {
1812         NETMGR_LOG_E("proxy is nullptr");
1813         return NETMANAGER_ERR_GET_PROXY_FAIL;
1814     }
1815     return proxy->UnRegisterNetsysTrafficCallback(callback);
1816 }
1817 
SetIpv6PrivacyExtensions(const std::string & interfaceName,const uint32_t on)1818 int32_t NetsysNativeClient::SetIpv6PrivacyExtensions(const std::string &interfaceName, const uint32_t on)
1819 {
1820     auto proxy = GetProxy();
1821     if (proxy == nullptr) {
1822         NETMGR_LOG_E("proxy is nullptr");
1823         return NETMANAGER_ERR_GET_PROXY_FAIL;
1824     }
1825     return proxy->SetIpv6PrivacyExtensions(interfaceName, on);
1826 }
1827 
SetEnableIpv6(const std::string & interfaceName,const uint32_t on)1828 int32_t NetsysNativeClient::SetEnableIpv6(const std::string &interfaceName, const uint32_t on)
1829 {
1830     auto proxy = GetProxy();
1831     if (proxy == nullptr) {
1832         NETMGR_LOG_E("proxy is nullptr");
1833         return NETMANAGER_ERR_GET_PROXY_FAIL;
1834     }
1835     return proxy->SetEnableIpv6(interfaceName, on);
1836 }
1837 
SetNetworkAccessPolicy(uint32_t uid,NetworkAccessPolicy policy,bool reconfirmFlag)1838 int32_t NetsysNativeClient::SetNetworkAccessPolicy(uint32_t uid, NetworkAccessPolicy policy, bool reconfirmFlag)
1839 {
1840     auto proxy = GetProxy();
1841     if (proxy == nullptr) {
1842         NETMGR_LOG_E("proxy is nullptr");
1843         return NETMANAGER_ERR_GET_PROXY_FAIL;
1844     }
1845 
1846     return proxy->SetNetworkAccessPolicy(uid, policy, reconfirmFlag);
1847 }
1848 
DeleteNetworkAccessPolicy(uint32_t uid)1849 int32_t NetsysNativeClient::DeleteNetworkAccessPolicy(uint32_t uid)
1850 {
1851     auto proxy = GetProxy();
1852     if (proxy == nullptr) {
1853         NETMGR_LOG_E("proxy is nullptr");
1854         return NETMANAGER_ERR_GET_PROXY_FAIL;
1855     }
1856 
1857     return proxy->DeleteNetworkAccessPolicy(uid);
1858 }
1859 
ClearFirewallAllRules()1860 int32_t NetsysNativeClient::ClearFirewallAllRules()
1861 {
1862     auto proxy = GetProxy();
1863     if (proxy == nullptr) {
1864         NETMGR_LOG_E("proxy is nullptr");
1865         return NETMANAGER_ERR_GET_PROXY_FAIL;
1866     }
1867 
1868     return proxy->ClearFirewallAllRules();
1869 }
1870 
NotifyNetBearerTypeChange(std::set<NetBearType> bearerTypes)1871 int32_t NetsysNativeClient::NotifyNetBearerTypeChange(std::set<NetBearType> bearerTypes)
1872 {
1873     auto proxy = GetProxy();
1874     if (proxy == nullptr) {
1875         NETMGR_LOG_E("proxy is nullptr");
1876         return NETMANAGER_ERR_GET_PROXY_FAIL;
1877     }
1878 
1879     return proxy->NotifyNetBearerTypeChange(bearerTypes);
1880 }
1881 
StartClat(const std::string & interfaceName,int32_t netId,const std::string & nat64PrefixStr)1882 int32_t NetsysNativeClient::StartClat(const std::string &interfaceName, int32_t netId,
1883                                       const std::string &nat64PrefixStr)
1884 {
1885     auto proxy = GetProxy();
1886     if (proxy == nullptr) {
1887         NETMGR_LOG_E("proxy is nullptr");
1888         return NETMANAGER_ERR_GET_PROXY_FAIL;
1889     }
1890     return proxy->StartClat(interfaceName, netId, nat64PrefixStr);
1891 }
1892 
StopClat(const std::string & interfaceName)1893 int32_t NetsysNativeClient::StopClat(const std::string &interfaceName)
1894 {
1895     auto proxy = GetProxy();
1896     if (proxy == nullptr) {
1897         NETMGR_LOG_E("proxy is nullptr");
1898         return NETMANAGER_ERR_GET_PROXY_FAIL;
1899     }
1900     return proxy->StopClat(interfaceName);
1901 }
1902 
SetNicTrafficAllowed(const std::vector<std::string> & ifaceNames,bool status)1903 int32_t NetsysNativeClient::SetNicTrafficAllowed(const std::vector<std::string> &ifaceNames, bool status)
1904 {
1905     auto proxy = GetProxy();
1906     if (proxy == nullptr) {
1907         NETMGR_LOG_E("proxy is nullptr");
1908         return NETMANAGER_ERR_GET_PROXY_FAIL;
1909     }
1910     return proxy->SetNicTrafficAllowed(ifaceNames, status);
1911 }
1912 
1913 #ifdef SUPPORT_SYSVPN
ProcessVpnStage(NetsysNative::SysVpnStageCode stage)1914 int32_t NetsysNativeClient::ProcessVpnStage(NetsysNative::SysVpnStageCode stage)
1915 {
1916     auto proxy = GetProxy();
1917     if (proxy == nullptr) {
1918         NETMGR_LOG_E("proxy is nullptr");
1919         return NETMANAGER_ERR_GET_PROXY_FAIL;
1920     }
1921     return proxy->ProcessVpnStage(stage);
1922 }
1923 #endif // SUPPORT_SYSVPN
1924 
CloseSocketsUid(const std::string & ipAddr,uint32_t uid)1925 int32_t NetsysNativeClient::CloseSocketsUid(const std::string &ipAddr, uint32_t uid)
1926 {
1927     auto proxy = GetProxy();
1928     if (proxy == nullptr) {
1929         NETMGR_LOG_E("proxy is nullptr");
1930         return NETMANAGER_ERR_GET_PROXY_FAIL;
1931     }
1932     return proxy->CloseSocketsUid(ipAddr, uid);
1933 }
1934 
SetBrokerUidAccessPolicyMap(const std::unordered_map<uint32_t,uint32_t> & uidMaps)1935 int32_t NetsysNativeClient::SetBrokerUidAccessPolicyMap(const std::unordered_map<uint32_t, uint32_t> &uidMaps)
1936 {
1937     auto proxy = GetProxy();
1938     if (proxy == nullptr) {
1939         NETMGR_LOG_E("proxy is nullptr");
1940         return NETMANAGER_ERR_GET_PROXY_FAIL;
1941     }
1942     return proxy->SetBrokerUidAccessPolicyMap(uidMaps);
1943 }
1944 
DelBrokerUidAccessPolicyMap(uint32_t uid)1945 int32_t NetsysNativeClient::DelBrokerUidAccessPolicyMap(uint32_t uid)
1946 {
1947     auto proxy = GetProxy();
1948     if (proxy == nullptr) {
1949         NETMGR_LOG_E("proxy is nullptr");
1950         return NETMANAGER_ERR_GET_PROXY_FAIL;
1951     }
1952     return proxy->DelBrokerUidAccessPolicyMap(uid);
1953 }
1954 
SetUserDefinedServerFlag(uint16_t netId,bool isUserDefinedServer)1955 int32_t NetsysNativeClient::SetUserDefinedServerFlag(uint16_t netId, bool isUserDefinedServer)
1956 {
1957     auto proxy = GetProxy();
1958     if (proxy == nullptr) {
1959         NETMGR_LOG_E("proxy is nullptr");
1960         return NETMANAGER_ERR_GET_PROXY_FAIL;
1961     }
1962     return proxy->SetUserDefinedServerFlag(netId, isUserDefinedServer);
1963 }
1964 
1965 
1966 } // namespace NetManagerStandard
1967 } // namespace OHOS
1968