diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/BUILD.gn b/wifi/services/wifi_standard/wifi_framework/wifi_manage/BUILD.gn index 43cfc865dad4e012d520b36e19a816030c2f4206..58644adae672ad393d7be77704cbafab889e8404 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/BUILD.gn +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/BUILD.gn @@ -745,6 +745,8 @@ if (defined(ohos_lite)) { "ipc:ipc_single", "libxml2:libxml2", "netmanager_base:net_conn_manager_if", + "netmanager_base:net_native_manager_if", + "netmanager_base:netsys_controller", ] version_script = "libwifi_manager.map" diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_controller/wifi_service_scheduler.cpp b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_controller/wifi_service_scheduler.cpp index db3e7a9442c0f8122a18c96c203d5414f3456a27..aa409442d86b1845eadba825508735cf14cad6d9 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_controller/wifi_service_scheduler.cpp +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_controller/wifi_service_scheduler.cpp @@ -42,6 +42,9 @@ #include "hal_device_manage.h" #endif #include "wifi_global_func.h" +#ifndef OHOS_ARCH_LITE +#include "netsys_controller.h" +#endif namespace OHOS { namespace Wifi { @@ -902,6 +905,11 @@ ErrCode WifiServiceScheduler::AutoStartApService(int instId, std::string &softAp WIFI_LOGE("AutoStartApService, create iface failed!"); return WIFI_OPT_FAILED; } +#ifndef OHOS_ARCH_LITE + int DHCP_IPV6_ENABLE = 1; + WIFI_LOGI("AutoStartApService, set ipv6 enable, ifaceName is %{public}s", ifaceName.c_str()); + NetManagerStandard::NetsysController::GetInstance().SetEnableIpv6(ifaceName, DHCP_IPV6_ENABLE); +#endif WifiConfigCenter::GetInstance().SetApIfaceName(ifaceName); softApIfName = ifaceName; softApIfaceNameMap.insert(std::make_pair(instId, ifaceName)); @@ -931,7 +939,17 @@ ErrCode WifiServiceScheduler::AutoStopApService(int instId) return WIFI_OPT_CLOSE_SUCC_WHEN_CLOSED; } } - +#ifdef HDI_CHIP_INTERFACE_SUPPORT + std::string ifaceName = ""; + if (softApIfaceNameMap.count(instId) > 0) { + ifaceName = softApIfaceNameMap[instId]; + } +#ifndef OHOS_ARCH_LITE + int DHCP_IPV6_DISENABLE = 0; + WIFI_LOGI("AutoStopApService, set ipv6 disable, ifaceName is %{public}s", ifaceName.c_str()); + NetManagerStandard::NetsysController::GetInstance().SetEnableIpv6(ifaceName, DHCP_IPV6_DISENABLE); +#endif +#endif if (!WifiConfigCenter::GetInstance().SetApMidState(apState, WifiOprMidState::CLOSING, instId)) { WIFI_LOGE("AutoStopApService,set ap mid state closing failed!"); return WIFI_OPT_SUCCESS; diff --git a/wifi/test/wifi_standard/wifi_framework/wifi_manage/unittest/BUILD.gn b/wifi/test/wifi_standard/wifi_framework/wifi_manage/unittest/BUILD.gn index 6990a40e91828ee68409ca38be2edae8626677ef..d6a2f85eefea5d5933def0a4e616e46ede7f2cb9 100644 --- a/wifi/test/wifi_standard/wifi_framework/wifi_manage/unittest/BUILD.gn +++ b/wifi/test/wifi_standard/wifi_framework/wifi_manage/unittest/BUILD.gn @@ -221,6 +221,7 @@ ohos_unittest("manager_unittest") { "netmanager_base:net_conn_manager_if", "netmanager_base:net_native_manager_if", "netmanager_base:net_stats_manager_if", + "netmanager_base:netsys_controller", "power_manager:powermgr_client", "safwk:system_ability_fwk", "samgr:samgr_proxy",