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