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