• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <net/if.h>
17 
18 #include "interface_manager.h"
19 #include "net_manager_constants.h"
20 #include "net_manager_native.h"
21 #include "netmanager_base_common_utils.h"
22 #include "netnative_log_wrapper.h"
23 #include "network_permission.h"
24 #include "route_manager.h"
25 #include "traffic_manager.h"
26 #include "vpn_manager.h"
27 
28 using namespace OHOS::NetManagerStandard::CommonUtils;
29 std::vector<uint32_t> OHOS::nmd::NetManagerNative::interfaceIdex_;
30 
31 namespace OHOS {
32 namespace nmd {
33 namespace {
34 constexpr const char *TUN_CARD_NAME = "vpn-tun";
35 constexpr const char *TCP_RMEM_PROC_FILE = "/proc/sys/net/ipv4/tcp_rmem";
36 constexpr const char *TCP_WMEM_PROC_FILE = "/proc/sys/net/ipv4/tcp_wmem";
37 constexpr uint32_t TCP_BUFFER_SIZES_TYPE = 2;
38 constexpr uint32_t MAX_TCP_BUFFER_SIZES_COUNT = 6;
39 } // namespace
40 
NetManagerNative()41 NetManagerNative::NetManagerNative()
42     : bandwidthManager_(std::make_shared<BandwidthManager>()),
43       connManager_(std::make_shared<ConnManager>()),
44       firewallManager_(std::make_shared<FirewallManager>()),
45       routeManager_(std::make_shared<RouteManager>()),
46       interfaceManager_(std::make_shared<InterfaceManager>()),
47       sharingManager_(std::make_shared<SharingManager>()),
48       dnsManager_(std::make_shared<DnsManager>())
49 {
50 }
51 
GetOriginInterfaceIndex()52 void NetManagerNative::GetOriginInterfaceIndex()
53 {
54     std::vector<std::string> ifNameList = InterfaceManager::GetInterfaceNames();
55     interfaceIdex_.clear();
56     for (auto iter = ifNameList.begin(); iter != ifNameList.end(); ++iter) {
57         uint32_t infIndex = if_nametoindex((*iter).c_str());
58         interfaceIdex_.push_back(infIndex);
59     }
60 }
61 
UpdateInterfaceIndex(uint32_t infIndex)62 void NetManagerNative::UpdateInterfaceIndex(uint32_t infIndex)
63 {
64     interfaceIdex_.push_back(infIndex);
65 }
66 
GetCurrentInterfaceIndex()67 std::vector<uint32_t> NetManagerNative::GetCurrentInterfaceIndex()
68 {
69     return interfaceIdex_;
70 }
71 
Init()72 void NetManagerNative::Init()
73 {
74     GetOriginInterfaceIndex();
75 }
76 
NetworkReinitRoute()77 int32_t NetManagerNative::NetworkReinitRoute()
78 {
79     return connManager_->ReinitRoute();
80 }
81 
SetInternetPermission(uint32_t uid,uint8_t allow,uint8_t isBroker)82 int32_t NetManagerNative::SetInternetPermission(uint32_t uid, uint8_t allow, uint8_t isBroker)
83 {
84     return connManager_->SetInternetPermission(uid, allow, isBroker);
85 }
86 
NetworkCreatePhysical(int32_t netId,int32_t permission)87 int32_t NetManagerNative::NetworkCreatePhysical(int32_t netId, int32_t permission)
88 {
89     return connManager_->CreatePhysicalNetwork(static_cast<uint16_t>(netId),
90                                                static_cast<NetworkPermission>(permission));
91 }
92 
NetworkCreateVirtual(int32_t netId,bool hasDns)93 int32_t NetManagerNative::NetworkCreateVirtual(int32_t netId, bool hasDns)
94 {
95     return connManager_->CreateVirtualNetwork(netId, hasDns);
96 }
97 
NetworkDestroy(int32_t netId)98 int32_t NetManagerNative::NetworkDestroy(int32_t netId)
99 {
100     auto ret = connManager_->DestroyNetwork(netId);
101     dnsManager_->DestroyNetworkCache(netId);
102     return ret;
103 }
104 
NetworkAddUids(int32_t netId,const std::vector<UidRange> & uidRanges)105 int32_t NetManagerNative::NetworkAddUids(int32_t netId, const std::vector<UidRange> &uidRanges)
106 {
107     return connManager_->AddUidsToNetwork(netId, uidRanges);
108 }
109 
NetworkDelUids(int32_t netId,const std::vector<UidRange> & uidRanges)110 int32_t NetManagerNative::NetworkDelUids(int32_t netId, const std::vector<UidRange> &uidRanges)
111 {
112     return connManager_->RemoveUidsFromNetwork(netId, uidRanges);
113 }
114 
NetworkAddInterface(int32_t netId,std::string interfaceName)115 int32_t NetManagerNative::NetworkAddInterface(int32_t netId, std::string interfaceName)
116 {
117     return connManager_->AddInterfaceToNetwork(netId, interfaceName);
118 }
119 
NetworkRemoveInterface(int32_t netId,std::string interfaceName)120 int32_t NetManagerNative::NetworkRemoveInterface(int32_t netId, std::string interfaceName)
121 {
122     return connManager_->RemoveInterfaceFromNetwork(netId, interfaceName);
123 }
124 
AddInterfaceAddress(std::string ifName,std::string addrString,int32_t prefixLength)125 int32_t NetManagerNative::AddInterfaceAddress(std::string ifName, std::string addrString, int32_t prefixLength)
126 {
127     if (strncmp(ifName.c_str(), TUN_CARD_NAME, strlen(TUN_CARD_NAME)) != 0) {
128         return interfaceManager_->AddAddress(ifName.c_str(), addrString.c_str(), prefixLength);
129     }
130     return VpnManager::GetInstance().SetVpnAddress(ifName, addrString, prefixLength);
131 }
132 
DelInterfaceAddress(std::string ifName,std::string addrString,int32_t prefixLength)133 int32_t NetManagerNative::DelInterfaceAddress(std::string ifName, std::string addrString, int32_t prefixLength)
134 {
135     interfaceManager_->DelAddress(ifName.c_str(), addrString.c_str(), prefixLength);
136     return NETMANAGER_SUCCESS;
137 }
138 
NetworkAddRoute(int32_t netId,std::string interfaceName,std::string destination,std::string nextHop)139 int32_t NetManagerNative::NetworkAddRoute(int32_t netId, std::string interfaceName, std::string destination,
140                                           std::string nextHop)
141 {
142     auto ret = connManager_->AddRoute(netId, interfaceName, destination, nextHop);
143     if (!ret) {
144         dnsManager_->EnableIpv6(netId, destination, nextHop);
145     }
146     return ret;
147 }
148 
NetworkRemoveRoute(int32_t netId,std::string interfaceName,std::string destination,std::string nextHop)149 int32_t NetManagerNative::NetworkRemoveRoute(int32_t netId, std::string interfaceName, std::string destination,
150                                              std::string nextHop)
151 {
152     return connManager_->RemoveRoute(netId, interfaceName, destination, nextHop);
153 }
154 
NetworkGetDefault()155 int32_t NetManagerNative::NetworkGetDefault()
156 {
157     return connManager_->GetDefaultNetwork();
158 }
159 
NetworkSetDefault(int32_t netId)160 int32_t NetManagerNative::NetworkSetDefault(int32_t netId)
161 {
162     dnsManager_->SetDefaultNetwork(netId);
163     return connManager_->SetDefaultNetwork(netId);
164 }
165 
NetworkClearDefault()166 int32_t NetManagerNative::NetworkClearDefault()
167 {
168     return connManager_->ClearDefaultNetwork();
169 }
170 
NetworkSetPermissionForNetwork(int32_t netId,NetworkPermission permission)171 int32_t NetManagerNative::NetworkSetPermissionForNetwork(int32_t netId, NetworkPermission permission)
172 {
173     return connManager_->SetPermissionForNetwork(netId, permission);
174 }
175 
InterfaceGetList()176 std::vector<std::string> NetManagerNative::InterfaceGetList()
177 {
178     return InterfaceManager::GetInterfaceNames();
179 }
180 
GetInterfaceConfig(std::string interfaceName)181 nmd::InterfaceConfigurationParcel NetManagerNative::GetInterfaceConfig(std::string interfaceName)
182 {
183     return InterfaceManager::GetIfaceConfig(interfaceName.c_str());
184 }
185 
SetInterfaceConfig(nmd::InterfaceConfigurationParcel parcel)186 void NetManagerNative::SetInterfaceConfig(nmd::InterfaceConfigurationParcel parcel)
187 {
188     InterfaceManager::SetIfaceConfig(parcel);
189 }
190 
ClearInterfaceAddrs(const std::string ifName)191 void NetManagerNative::ClearInterfaceAddrs(const std::string ifName) {}
192 
GetInterfaceMtu(std::string ifName)193 int32_t NetManagerNative::GetInterfaceMtu(std::string ifName)
194 {
195     return InterfaceManager::GetMtu(ifName.c_str());
196 }
197 
SetInterfaceMtu(std::string ifName,int32_t mtuValue)198 int32_t NetManagerNative::SetInterfaceMtu(std::string ifName, int32_t mtuValue)
199 {
200     if (strncmp(ifName.c_str(), TUN_CARD_NAME, strlen(TUN_CARD_NAME)) != 0) {
201         return InterfaceManager::SetMtu(ifName.c_str(), std::to_string(mtuValue).c_str());
202     }
203     return VpnManager::GetInstance().SetVpnMtu(ifName, mtuValue);
204 }
205 
SetTcpBufferSizes(const std::string & tcpBufferSizes)206 int32_t NetManagerNative::SetTcpBufferSizes(const std::string &tcpBufferSizes)
207 {
208     NETNATIVE_LOGI("tcpBufferSizes:%{public}s", tcpBufferSizes.c_str());
209     const std::vector<std::string> vTcpBufferSizes = Split(tcpBufferSizes, ",");
210     if (vTcpBufferSizes.size() != MAX_TCP_BUFFER_SIZES_COUNT) {
211         NETNATIVE_LOGE("NetManagerNative::SetTcpBufferSizes size is not equals MAX_TCP_BUFFER_SIZES_COUNT");
212         return -1;
213     }
214     std::string tcp_rwmem[TCP_BUFFER_SIZES_TYPE];
215     for (size_t i = 0; i < TCP_BUFFER_SIZES_TYPE; i++) {
216         for (size_t j = 0; j < MAX_TCP_BUFFER_SIZES_COUNT / TCP_BUFFER_SIZES_TYPE; j++) {
217             tcp_rwmem[i] += Strip(vTcpBufferSizes[i * (MAX_TCP_BUFFER_SIZES_COUNT / TCP_BUFFER_SIZES_TYPE) + j]);
218             tcp_rwmem[i] += ' ';
219         }
220     }
221     if (!WriteFile(TCP_RMEM_PROC_FILE, tcp_rwmem[0]) || !WriteFile(TCP_WMEM_PROC_FILE, tcp_rwmem[1])) {
222         NETNATIVE_LOGE("NetManagerNative::SetTcpBufferSizes sysctlbyname fail %{public}d", errno);
223         return -1;
224     }
225     return 0;
226 }
227 
InterfaceSetIpAddress(const std::string & ifaceName,const std::string & ipAddress)228 int32_t NetManagerNative::InterfaceSetIpAddress(const std::string &ifaceName, const std::string &ipAddress)
229 {
230     return InterfaceManager::SetIpAddress(ifaceName.c_str(), ipAddress.c_str());
231 }
232 
InterfaceSetIffUp(std::string ifaceName)233 int32_t NetManagerNative::InterfaceSetIffUp(std::string ifaceName)
234 {
235     return InterfaceManager::SetIffUp(ifaceName.c_str());
236 }
237 
GetFwmarkForNetwork(int32_t netId)238 nmd::MarkMaskParcel NetManagerNative::GetFwmarkForNetwork(int32_t netId)
239 {
240     nmd::MarkMaskParcel mark;
241     mark.mark = connManager_->GetFwmarkForNetwork(netId);
242     mark.mask = 0XFFFF;
243     return mark;
244 }
245 
NetworkAddRouteParcel(int32_t netId,RouteInfoParcel parcel)246 int32_t NetManagerNative::NetworkAddRouteParcel(int32_t netId, RouteInfoParcel parcel)
247 {
248     return connManager_->AddRoute(netId, parcel.ifName, parcel.destination, parcel.nextHop);
249 }
250 
NetworkRemoveRouteParcel(int32_t netId,RouteInfoParcel parcel)251 int32_t NetManagerNative::NetworkRemoveRouteParcel(int32_t netId, RouteInfoParcel parcel)
252 {
253     return connManager_->RemoveRoute(netId, parcel.ifName, parcel.destination, parcel.nextHop);
254 }
255 
SetProcSysNet(int32_t family,int32_t which,const std::string ifname,const std::string parameter,const std::string value)256 int32_t NetManagerNative::SetProcSysNet(int32_t family, int32_t which, const std::string ifname,
257                                         const std::string parameter, const std::string value)
258 {
259     return 0;
260 }
261 
GetProcSysNet(int32_t family,int32_t which,const std::string ifname,const std::string parameter,std::string * value)262 int32_t NetManagerNative::GetProcSysNet(int32_t family, int32_t which, const std::string ifname,
263                                         const std::string parameter, std::string *value)
264 {
265     return 0;
266 }
267 
GetCellularRxBytes()268 int64_t NetManagerNative::GetCellularRxBytes()
269 {
270     return 0;
271 }
272 
GetCellularTxBytes()273 int64_t NetManagerNative::GetCellularTxBytes()
274 {
275     return 0;
276 }
277 
GetAllRxBytes()278 int64_t NetManagerNative::GetAllRxBytes()
279 {
280     return nmd::TrafficManager::GetAllRxTraffic();
281 }
282 
GetAllTxBytes()283 int64_t NetManagerNative::GetAllTxBytes()
284 {
285     return nmd::TrafficManager::GetAllTxTraffic();
286 }
287 
GetUidTxBytes(int32_t uid)288 int64_t NetManagerNative::GetUidTxBytes(int32_t uid)
289 {
290     return 0;
291 }
292 
GetUidRxBytes(int32_t uid)293 int64_t NetManagerNative::GetUidRxBytes(int32_t uid)
294 {
295     return 0;
296 }
297 
GetIfaceRxBytes(std::string interfaceName)298 int64_t NetManagerNative::GetIfaceRxBytes(std::string interfaceName)
299 {
300     nmd::TrafficStatsParcel interfaceTraffic = nmd::TrafficManager::GetInterfaceTraffic(interfaceName);
301     return interfaceTraffic.rxBytes;
302 }
303 
GetIfaceTxBytes(std::string interfaceName)304 int64_t NetManagerNative::GetIfaceTxBytes(std::string interfaceName)
305 {
306     nmd::TrafficStatsParcel interfaceTraffic = nmd::TrafficManager::GetInterfaceTraffic(interfaceName);
307     return interfaceTraffic.txBytes;
308 }
309 
IpEnableForwarding(const std::string & requester)310 int32_t NetManagerNative::IpEnableForwarding(const std::string &requester)
311 {
312     return sharingManager_->IpEnableForwarding(requester);
313 }
314 
IpDisableForwarding(const std::string & requester)315 int32_t NetManagerNative::IpDisableForwarding(const std::string &requester)
316 {
317     return sharingManager_->IpDisableForwarding(requester);
318 }
319 
EnableNat(const std::string & downstreamIface,const std::string & upstreamIface)320 int32_t NetManagerNative::EnableNat(const std::string &downstreamIface, const std::string &upstreamIface)
321 {
322     return sharingManager_->EnableNat(downstreamIface, upstreamIface);
323 }
324 
DisableNat(const std::string & downstreamIface,const std::string & upstreamIface)325 int32_t NetManagerNative::DisableNat(const std::string &downstreamIface, const std::string &upstreamIface)
326 {
327     return sharingManager_->DisableNat(downstreamIface, upstreamIface);
328 }
329 
IpfwdAddInterfaceForward(const std::string & fromIface,const std::string & toIface)330 int32_t NetManagerNative::IpfwdAddInterfaceForward(const std::string &fromIface, const std::string &toIface)
331 {
332     return sharingManager_->IpfwdAddInterfaceForward(fromIface, toIface);
333 }
334 
IpfwdRemoveInterfaceForward(const std::string & fromIface,const std::string & toIface)335 int32_t NetManagerNative::IpfwdRemoveInterfaceForward(const std::string &fromIface, const std::string &toIface)
336 {
337     return sharingManager_->IpfwdRemoveInterfaceForward(fromIface, toIface);
338 }
339 
DnsSetResolverConfig(uint16_t netId,uint16_t baseTimeoutMsec,uint8_t retryCount,const std::vector<std::string> & servers,const std::vector<std::string> & domains)340 int32_t NetManagerNative::DnsSetResolverConfig(uint16_t netId, uint16_t baseTimeoutMsec, uint8_t retryCount,
341                                                const std::vector<std::string> &servers,
342                                                const std::vector<std::string> &domains)
343 {
344     return dnsManager_->SetResolverConfig(netId, baseTimeoutMsec, retryCount, servers, domains);
345 }
346 
DnsGetResolverConfig(uint16_t netId,std::vector<std::string> & servers,std::vector<std::string> & domains,uint16_t & baseTimeoutMsec,uint8_t & retryCount)347 int32_t NetManagerNative::DnsGetResolverConfig(uint16_t netId, std::vector<std::string> &servers,
348                                                std::vector<std::string> &domains, uint16_t &baseTimeoutMsec,
349                                                uint8_t &retryCount)
350 {
351     return dnsManager_->GetResolverConfig(netId, servers, domains, baseTimeoutMsec, retryCount);
352 }
353 
DnsCreateNetworkCache(uint16_t netId)354 int32_t NetManagerNative::DnsCreateNetworkCache(uint16_t netId)
355 {
356     return dnsManager_->CreateNetworkCache(netId);
357 }
358 
DnsDestroyNetworkCache(uint16_t netId)359 int32_t NetManagerNative::DnsDestroyNetworkCache(uint16_t netId)
360 {
361     return dnsManager_->DestroyNetworkCache(netId);
362 }
363 
BandwidthEnableDataSaver(bool enable)364 int32_t NetManagerNative::BandwidthEnableDataSaver(bool enable)
365 {
366     return bandwidthManager_->EnableDataSaver(enable);
367 }
368 
BandwidthSetIfaceQuota(const std::string & ifName,int64_t bytes)369 int32_t NetManagerNative::BandwidthSetIfaceQuota(const std::string &ifName, int64_t bytes)
370 {
371     return bandwidthManager_->SetIfaceQuota(ifName, bytes);
372 }
373 
BandwidthRemoveIfaceQuota(const std::string & ifName)374 int32_t NetManagerNative::BandwidthRemoveIfaceQuota(const std::string &ifName)
375 {
376     return bandwidthManager_->RemoveIfaceQuota(ifName);
377 }
378 
BandwidthAddDeniedList(uint32_t uid)379 int32_t NetManagerNative::BandwidthAddDeniedList(uint32_t uid)
380 {
381     return bandwidthManager_->AddDeniedList(uid);
382 }
383 
BandwidthRemoveDeniedList(uint32_t uid)384 int32_t NetManagerNative::BandwidthRemoveDeniedList(uint32_t uid)
385 {
386     return bandwidthManager_->RemoveDeniedList(uid);
387 }
388 
BandwidthAddAllowedList(uint32_t uid)389 int32_t NetManagerNative::BandwidthAddAllowedList(uint32_t uid)
390 {
391     return bandwidthManager_->AddAllowedList(uid);
392 }
393 
BandwidthRemoveAllowedList(uint32_t uid)394 int32_t NetManagerNative::BandwidthRemoveAllowedList(uint32_t uid)
395 {
396     return bandwidthManager_->RemoveAllowedList(uid);
397 }
398 
FirewallSetUidsAllowedListChain(uint32_t chain,const std::vector<uint32_t> & uids)399 int32_t NetManagerNative::FirewallSetUidsAllowedListChain(uint32_t chain, const std::vector<uint32_t> &uids)
400 {
401     auto chainType = static_cast<NetManagerStandard::ChainType>(chain);
402     return firewallManager_->SetUidsAllowedListChain(chainType, uids);
403 }
404 
FirewallSetUidsDeniedListChain(uint32_t chain,const std::vector<uint32_t> & uids)405 int32_t NetManagerNative::FirewallSetUidsDeniedListChain(uint32_t chain, const std::vector<uint32_t> &uids)
406 {
407     auto chainType = static_cast<NetManagerStandard::ChainType>(chain);
408     return firewallManager_->SetUidsDeniedListChain(chainType, uids);
409 }
410 
FirewallEnableChain(uint32_t chain,bool enable)411 int32_t NetManagerNative::FirewallEnableChain(uint32_t chain, bool enable)
412 {
413     auto chainType = static_cast<NetManagerStandard::ChainType>(chain);
414     return firewallManager_->EnableChain(chainType, enable);
415 }
416 
FirewallSetUidRule(uint32_t chain,const std::vector<uint32_t> & uids,uint32_t firewallRule)417 int32_t NetManagerNative::FirewallSetUidRule(uint32_t chain, const std::vector<uint32_t> &uids, uint32_t firewallRule)
418 {
419     auto chainType = static_cast<NetManagerStandard::ChainType>(chain);
420     auto rule = static_cast<NetManagerStandard::FirewallRule>(firewallRule);
421     for (auto &uid : uids) {
422         auto ret = firewallManager_->SetUidRule(chainType, uid, rule);
423         if (ret != NetManagerStandard::NETMANAGER_SUCCESS) {
424             return ret;
425         }
426     }
427     return NetManagerStandard::NETMANAGER_SUCCESS;
428 }
429 
ShareDnsSet(uint16_t netId)430 void NetManagerNative::ShareDnsSet(uint16_t netId)
431 {
432     dnsManager_->ShareDnsSet(netId);
433 }
434 
StartDnsProxyListen()435 void NetManagerNative::StartDnsProxyListen()
436 {
437     dnsManager_->StartDnsProxyListen();
438 }
439 
StopDnsProxyListen()440 void NetManagerNative::StopDnsProxyListen()
441 {
442     dnsManager_->StopDnsProxyListen();
443 }
444 
DnsGetAddrInfo(const std::string & hostName,const std::string & serverName,const AddrInfo & hints,uint16_t netId,std::vector<AddrInfo> & res)445 int32_t NetManagerNative::DnsGetAddrInfo(const std::string &hostName, const std::string &serverName,
446                                          const AddrInfo &hints, uint16_t netId, std::vector<AddrInfo> &res)
447 {
448     return dnsManager_->GetAddrInfo(hostName, serverName, hints, netId, res);
449 }
450 
GetDumpInfo(std::string & infos)451 void NetManagerNative::GetDumpInfo(std::string &infos)
452 {
453     connManager_->GetDumpInfos(infos);
454     dnsManager_->GetDumpInfo(infos);
455 }
456 
AddStaticArp(const std::string & ipAddr,const std::string & macAddr,const std::string & ifName)457 int32_t NetManagerNative::AddStaticArp(const std::string &ipAddr, const std::string &macAddr,
458                                        const std::string &ifName)
459 {
460     if (interfaceManager_ == nullptr) {
461         NETNATIVE_LOGE("interfaceManager_ is nullptr");
462         return NETMANAGER_ERR_LOCAL_PTR_NULL;
463     }
464 
465     return interfaceManager_->AddStaticArp(ipAddr, macAddr, ifName);
466 }
467 
DelStaticArp(const std::string & ipAddr,const std::string & macAddr,const std::string & ifName)468 int32_t NetManagerNative::DelStaticArp(const std::string &ipAddr, const std::string &macAddr,
469                                        const std::string &ifName)
470 {
471     if (interfaceManager_ == nullptr) {
472         NETNATIVE_LOGE("interfaceManager_ is nullptr");
473         return NETMANAGER_ERR_LOCAL_PTR_NULL;
474     }
475 
476     return interfaceManager_->DelStaticArp(ipAddr, macAddr, ifName);
477 }
478 
RegisterDnsResultCallback(const sptr<INetDnsResultCallback> & callback,uint32_t timeStep)479 int32_t NetManagerNative::RegisterDnsResultCallback(const sptr<INetDnsResultCallback> &callback, uint32_t timeStep)
480 {
481     return dnsManager_->RegisterDnsResultCallback(callback, timeStep);
482 }
483 
UnregisterDnsResultCallback(const sptr<INetDnsResultCallback> & callback)484 int32_t NetManagerNative::UnregisterDnsResultCallback(const sptr<INetDnsResultCallback> &callback)
485 {
486     return dnsManager_->UnregisterDnsResultCallback(callback);
487 }
488 
RegisterDnsHealthCallback(const sptr<INetDnsHealthCallback> & callback)489 int32_t NetManagerNative::RegisterDnsHealthCallback(const sptr<INetDnsHealthCallback> &callback)
490 {
491     return dnsManager_->RegisterDnsHealthCallback(callback);
492 }
493 
UnregisterDnsHealthCallback(const sptr<INetDnsHealthCallback> & callback)494 int32_t NetManagerNative::UnregisterDnsHealthCallback(const sptr<INetDnsHealthCallback> &callback)
495 {
496     return dnsManager_->UnregisterDnsHealthCallback(callback);
497 }
498 
499 } // namespace nmd
500 } // namespace OHOS
501