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