From aa5ee4dce3b7bfc16ecd37c3275f7e3916a9f7ec Mon Sep 17 00:00:00 2001 From: SubmarinePhantom Date: Fri, 10 Nov 2023 15:27:47 +0800 Subject: [PATCH 1/2] Add OH_NetConn_GetAllNets interface to NDK Signed-off-by: SubmarinePhantom --- network/netmanager/BUILD.gn | 10 ++- network/netmanager/include/net_connection.h | 17 ++++ .../include/net_connection_adapter.h | 30 ++++++++ .../netmanager/include/net_connection_type.h | 77 +++++++++++++++++++ network/netmanager/libnet_connection.ndk.json | 8 +- 5 files changed, 138 insertions(+), 4 deletions(-) create mode 100644 network/netmanager/include/net_connection_adapter.h create mode 100644 network/netmanager/include/net_connection_type.h diff --git a/network/netmanager/BUILD.gn b/network/netmanager/BUILD.gn index 339128a89..bcb2c4149 100644 --- a/network/netmanager/BUILD.gn +++ b/network/netmanager/BUILD.gn @@ -20,10 +20,16 @@ ohos_ndk_library("libnet_connection") { ndk_description_file = "./libnet_connection.ndk.json" min_compact_version = "1" system_capability = "SystemCapability.Communication.NetManager.Core" - system_capability_headers = [ "./include/net_connection.h" ] + system_capability_headers = [ + "./include/net_connection.h", + "./include/net_connection_type.h" + ] } ohos_ndk_headers("netconn_header") { dest_dir = "$ndk_headers_out_dir/network/netmanager" - sources = [ "./include/net_connection.h" ] + sources = [ + "./include/net_connection.h", + "./include/net_connection_type.h" + ] } diff --git a/network/netmanager/include/net_connection.h b/network/netmanager/include/net_connection.h index a1b069d78..c62fbe52b 100644 --- a/network/netmanager/include/net_connection.h +++ b/network/netmanager/include/net_connection.h @@ -39,6 +39,8 @@ #include +#include + #ifdef __cplusplus extern "C" { #endif @@ -75,6 +77,21 @@ int32_t OH_NetConn_GetAddrInfo(char *host, char *serv, struct addrinfo *hint, st */ int32_t OH_NetConn_FreeDnsResult(struct addrinfo *res); +/** + * @brief Queries the default network proxy. + * + * @param httpProxy HTTP proxy. + * @return 0 - Success. 201 - Missing permissions. + * 401 - Parameter error. 2100002 - Unable to connect to service. + * 2100003 - Internal error. + * @permission ohos.permission.INTERNET + * @syscap SystemCapability.Communication.NetManager.Core + * @since 11 + * @version 1.0 +*/ +int32_t OH_NetConn_GetAllNets(OH_NetConn_netHandleList *netHandleList); + + #ifdef __cplusplus } #endif diff --git a/network/netmanager/include/net_connection_adapter.h b/network/netmanager/include/net_connection_adapter.h new file mode 100644 index 000000000..a595232d2 --- /dev/null +++ b/network/netmanager/include/net_connection_adapter.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef NATIVE_NET_CONN_ADAPTER_H +#define NATIVE_NET_CONN_ADAPTER_H + +#include "http_proxy.h" +#include "net_connection_type.h" +#include "net_all_capabilities.h" +#include "net_handle.h" +#include "net_link_info.h" +#include "refbase.h" + +namespace OHOS::NetManagerStandard { + int32_t Conv2NetHandleList(std::list> &netHandleObjList, OH_NetConn_NetHandleList *netHandleList); +} // namespace OHOS::NetManagerStandard + +#endif /* NATIVE_NET_CONN_ADAPTER_H */ diff --git a/network/netmanager/include/net_connection_type.h b/network/netmanager/include/net_connection_type.h new file mode 100644 index 000000000..52d74ac3c --- /dev/null +++ b/network/netmanager/include/net_connection_type.h @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef NATIVE_NET_CONN_TYPE_H +#define NATIVE_NET_CONN_TYPE_H + +/** + * @addtogroup NetConnection + * @{ + * + * @brief Provide C interface for the data network connection module of network management. + * + * @since 11 + * @version 1.0 + */ + +/** + * @file net_connection_type.h + * + * @brief Provide C interface for the data network connection module of network management. + * + * @syscap SystemCapability.Communication.NetManager.Core + * @library libnet_connection.so + * @since 11 + * @version 1.0 + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OH_NETCONN_MAX_NET_SIZE 32 + +/** + * @brief Defines the network handle. + * + * @since 11 + * @version 1.0 +*/ +typedef struct OH_NetConn_NetHandle { + /** Network ID*/ + int32_t netId; +} OH_NetConn_NetHandle; + +/** + * @brief Defines the network handle list. + * + * @since 11 + * @version 1.0 +*/ +typedef struct OH_NetConn_NetHandleList { + /** Network handle list*/ + OH_NetConn_NetHandle netHandleList[OH_NETCONN_MAX_NET_SIZE]; + /** Actual size of the network handle list */ + int32_t netHandleListSize; +} OH_NetConn_NetHandleList; + +#ifdef __cplusplus +} +#endif + +/** @} */ +#endif /* NATIVE_NET_CONN_TYPE_H */ diff --git a/network/netmanager/libnet_connection.ndk.json b/network/netmanager/libnet_connection.ndk.json index 2c5ac35b0..9bb58a22a 100644 --- a/network/netmanager/libnet_connection.ndk.json +++ b/network/netmanager/libnet_connection.ndk.json @@ -1,10 +1,14 @@ [ { - "first_introdeced":"11", + "first_introduced":"11", "name": "OH_NetConn_GetAddrInfo" }, { - "first_introdeced":"11", + "first_introduced":"11", "name": "OH_NetConn_FreeDnsResult" + }, + { + "first_introduced":"11", + "name": "OH_NetConn_GetAllNets" } ] \ No newline at end of file -- Gitee From 401ff869ef6a65935a65f1b307d076ca9f4cac4b Mon Sep 17 00:00:00 2001 From: SubmarinePhantom Date: Sat, 11 Nov 2023 15:15:40 +0800 Subject: [PATCH 2/2] Add OH_NetConn_GetAllNets interface to NDK Signed-off-by: SubmarinePhantom --- network/netmanager/BUILD.gn | 10 ++- network/netmanager/include/net_connection.h | 15 ++++ .../include/net_connection_adapter.h | 30 ++++++++ .../netmanager/include/net_connection_type.h | 77 +++++++++++++++++++ network/netmanager/libnet_connection.ndk.json | 8 +- 5 files changed, 136 insertions(+), 4 deletions(-) create mode 100644 network/netmanager/include/net_connection_adapter.h create mode 100644 network/netmanager/include/net_connection_type.h diff --git a/network/netmanager/BUILD.gn b/network/netmanager/BUILD.gn index 339128a89..915cf9590 100644 --- a/network/netmanager/BUILD.gn +++ b/network/netmanager/BUILD.gn @@ -20,10 +20,16 @@ ohos_ndk_library("libnet_connection") { ndk_description_file = "./libnet_connection.ndk.json" min_compact_version = "1" system_capability = "SystemCapability.Communication.NetManager.Core" - system_capability_headers = [ "./include/net_connection.h" ] + system_capability_headers = [ + "./include/net_connection.h", + "./include/net_connection_type.h", + ] } ohos_ndk_headers("netconn_header") { dest_dir = "$ndk_headers_out_dir/network/netmanager" - sources = [ "./include/net_connection.h" ] + sources = [ + "./include/net_connection.h", + "./include/net_connection_type.h" + ] } diff --git a/network/netmanager/include/net_connection.h b/network/netmanager/include/net_connection.h index a1b069d78..56ceb35bd 100644 --- a/network/netmanager/include/net_connection.h +++ b/network/netmanager/include/net_connection.h @@ -38,6 +38,7 @@ */ #include +#include "net_connection_type.h" #ifdef __cplusplus extern "C" { @@ -75,6 +76,20 @@ int32_t OH_NetConn_GetAddrInfo(char *host, char *serv, struct addrinfo *hint, st */ int32_t OH_NetConn_FreeDnsResult(struct addrinfo *res); +/** + * @brief Queries all activated data networks. + * + * @param netHandleList Network handle that stores the network ID list. + * @return 0 - Success. 201 - Missing permissions. + * 401 - Parameter error. 2100002 - Unable to connect to service. + * 2100003 - Internal error. + * @permission ohos.permission.GET_NETWORK_INFO + * @syscap SystemCapability.Communication.NetManager.Core + * @since 11 + * @version 1.0 +*/ +int32_t OH_NetConn_GetAllNets(OH_NetConn_NetHandleList *netHandleList); + #ifdef __cplusplus } #endif diff --git a/network/netmanager/include/net_connection_adapter.h b/network/netmanager/include/net_connection_adapter.h new file mode 100644 index 000000000..252fa6553 --- /dev/null +++ b/network/netmanager/include/net_connection_adapter.h @@ -0,0 +1,30 @@ +/* +* Copyright (c) 2023 Huawei Device Co., Ltd. +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#ifndef NATIVE_NET_CONN_ADAPTER_H +#define NATIVE_NET_CONN_ADAPTER_H + +#include "http_proxy.h" +#include "net_connection_type.h" +#include "net_all_capabilities.h" +#include "net_handle.h" +#include "net_link_info.h" +#include "refbase.h" + +namespace OHOS::NetManagerStandard { + int32_t Conv2NetHandleList(std::list> &netHandleObjList, OH_NetConn_NetHandleList *netHandleList); +} // namespace OHOS::NetManagerStandard + +#endif /* NATIVE_NET_CONN_ADAPTER_H */ diff --git a/network/netmanager/include/net_connection_type.h b/network/netmanager/include/net_connection_type.h new file mode 100644 index 000000000..e04cfcbe4 --- /dev/null +++ b/network/netmanager/include/net_connection_type.h @@ -0,0 +1,77 @@ +/* +* Copyright (c) 2023 Huawei Device Co., Ltd. +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#ifndef NATIVE_NET_CONN_TYPE_H +#define NATIVE_NET_CONN_TYPE_H + +/** +* @addtogroup NetConnection +* @{ +* +* @brief Provides the data structures for the C APIs of the network connection module for network management. +* +* @since 11 +* @version 1.0 +*/ + +/** +* @file net_connection_type.h +* @brief Defines the data structures for the C APIs of the network connection module. +* +* @syscap SystemCapability.Communication.NetManager.Core +* @library libnet_connection.so +* @since 11 +* @version 1.0 +* +*/ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OH_NETCONN_MAX_NET_SIZE 32 + +/** +* @brief Defines the network handle. +* +* @since 11 +* @version 1.0 +*/ +typedef struct OH_NetConn_NetHandle { + /** Network ID */ + int32_t netId; +} OH_NetConn_NetHandle; + +/** +* @brief Defines the network handle list. +* +* @since 11 +* @version 1.0 +*/ +typedef struct OH_NetConn_NetHandleList { + /** Network handle list */ + OH_NetConn_NetHandle netHandles[OH_NETCONN_MAX_NET_SIZE]; + /** Actual size of the network handle list */ + int32_t netHandleListSize; +} OH_NetConn_NetHandleList; + +#ifdef __cplusplus +} +#endif + +/** @} */ +#endif /* NATIVE_NET_CONN_TYPE_H */ diff --git a/network/netmanager/libnet_connection.ndk.json b/network/netmanager/libnet_connection.ndk.json index 2c5ac35b0..999382bde 100644 --- a/network/netmanager/libnet_connection.ndk.json +++ b/network/netmanager/libnet_connection.ndk.json @@ -1,10 +1,14 @@ [ { - "first_introdeced":"11", + "first_introduced":"11", "name": "OH_NetConn_GetAddrInfo" }, { - "first_introdeced":"11", + "first_introduced": "11", "name": "OH_NetConn_FreeDnsResult" + }, + { + "first_introduced":"11", + "name": "OH_NetConn_GetAllNets" } ] \ No newline at end of file -- Gitee