1 /*
2 * Copyright (c) 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 "errorcode_convertor.h"
17 #include "ipc_types.h"
18
19 #include "net_conn_constants.h"
20 #include "net_manager_constants.h"
21 #include "net_policy_constants.h"
22 #include "net_stats_constants.h"
23
24 namespace OHOS {
25 namespace NetManagerStandard {
26 namespace {
27 constexpr int32_t ERROR_DIVISOR = 1000;
28 std::map<int32_t, int32_t> g_errNumMap = {
29 {NETMANAGER_ERR_MEMCPY_FAIL, NETMANAGER_ERR_INTERNAL},
30 {NETMANAGER_ERR_MEMSET_FAIL, NETMANAGER_ERR_INTERNAL},
31 {NETMANAGER_ERR_STRCPY_FAIL, NETMANAGER_ERR_INTERNAL},
32 {NETMANAGER_ERR_STRING_EMPTY, NETMANAGER_ERR_INTERNAL},
33 {NETMANAGER_ERR_LOCAL_PTR_NULL, NETMANAGER_ERR_INTERNAL},
34 {NETMANAGER_ERR_DESCRIPTOR_MISMATCH, NETMANAGER_ERR_OPERATION_FAILED},
35 {NETMANAGER_ERR_WRITE_DESCRIPTOR_TOKEN_FAIL, NETMANAGER_ERR_OPERATION_FAILED},
36 {NETMANAGER_ERR_WRITE_DATA_FAIL, NETMANAGER_ERR_OPERATION_FAILED},
37 {NETMANAGER_ERR_WRITE_REPLY_FAIL, NETMANAGER_ERR_OPERATION_FAILED},
38 {NETMANAGER_ERR_READ_DATA_FAIL, NETMANAGER_ERR_OPERATION_FAILED},
39 {NETMANAGER_ERR_READ_REPLY_FAIL, NETMANAGER_ERR_OPERATION_FAILED},
40 {NETMANAGER_ERR_IPC_CONNECT_STUB_FAIL, NETMANAGER_ERR_OPERATION_FAILED},
41 {NETMANAGER_ERR_GET_PROXY_FAIL, NETMANAGER_ERR_OPERATION_FAILED},
42 {POLICY_ERR_INVALID_UID, NETMANAGER_ERR_INVALID_PARAMETER},
43 {POLICY_ERR_INVALID_POLICY, NETMANAGER_ERR_INVALID_PARAMETER},
44 {POLICY_ERR_INVALID_QUOTA_POLICY, NETMANAGER_ERR_INVALID_PARAMETER},
45 {NET_CONN_ERR_INVALID_NETWORK, NETMANAGER_ERR_INVALID_PARAMETER},
46 {NETMANAGER_EXT_ERR_MEMCPY_FAIL, NETMANAGER_EXT_ERR_INTERNAL},
47 {NETMANAGER_EXT_ERR_MEMSET_FAIL, NETMANAGER_EXT_ERR_INTERNAL},
48 {NETMANAGER_EXT_ERR_STRCPY_FAIL, NETMANAGER_EXT_ERR_INTERNAL},
49 {NETMANAGER_EXT_ERR_STRING_EMPTY, NETMANAGER_EXT_ERR_INTERNAL},
50 {NETMANAGER_EXT_ERR_LOCAL_PTR_NULL, NETMANAGER_EXT_ERR_INTERNAL},
51 {IPC_PROXY_ERR, NETMANAGER_EXT_ERR_OPERATION_FAILED},
52 {NETMANAGER_EXT_ERR_DESCRIPTOR_MISMATCH, NETMANAGER_EXT_ERR_OPERATION_FAILED},
53 {NETMANAGER_EXT_ERR_WRITE_DESCRIPTOR_TOKEN_FAIL, NETMANAGER_EXT_ERR_OPERATION_FAILED},
54 {NETMANAGER_EXT_ERR_WRITE_DATA_FAIL, NETMANAGER_EXT_ERR_OPERATION_FAILED},
55 {NETMANAGER_EXT_ERR_WRITE_REPLY_FAIL, NETMANAGER_EXT_ERR_OPERATION_FAILED},
56 {NETMANAGER_EXT_ERR_READ_DATA_FAIL, NETMANAGER_EXT_ERR_OPERATION_FAILED},
57 {NETMANAGER_EXT_ERR_READ_REPLY_FAIL, NETMANAGER_EXT_ERR_OPERATION_FAILED},
58 {NETMANAGER_EXT_ERR_IPC_CONNECT_STUB_FAIL, NETMANAGER_EXT_ERR_OPERATION_FAILED},
59 {NETMANAGER_EXT_ERR_GET_PROXY_FAIL, NETMANAGER_EXT_ERR_OPERATION_FAILED},
60 };
61 std::map<int32_t, const char *> g_errStringMap = {
62 /* Net base common error */
63 {NETMANAGER_SUCCESS, "Successful"},
64 {NETMANAGER_ERR_PERMISSION_DENIED, "Permission denied"},
65 {NETMANAGER_ERR_PARAMETER_ERROR, "Parameter error"},
66 {NETMANAGER_ERR_CAPABILITY_NOT_SUPPORTED, "Capability not supported"},
67 {NETMANAGER_ERR_INVALID_PARAMETER, "Invalid parameter value"},
68 {NETMANAGER_ERR_OPERATION_FAILED, "Operation failed. Cannot connect to service"},
69 {NETMANAGER_ERR_INTERNAL, "System internal error"},
70 /* Net ext common error */
71 {NETMANAGER_EXT_SUCCESS, "successful"},
72 {NETMANAGER_EXT_ERR_PERMISSION_DENIED, "Permission denied"},
73 {NETMANAGER_EXT_ERR_PARAMETER_ERROR, "Parameter error"},
74 {NETMANAGER_EXT_ERR_CAPABILITY_NOT_SUPPORTED, "Capability not supported"},
75 {NETMANAGER_EXT_ERR_INVALID_PARAMETER, "Invalid parameter value"},
76 {NETMANAGER_EXT_ERR_OPERATION_FAILED, "Operation failed. Cannot connect to service"},
77 {NETMANAGER_EXT_ERR_INTERNAL, "System internal error"},
78 /* Net Policy Manager */
79 {POLICY_ERR_INVALID_UID, "Invalid uid value"},
80 {POLICY_ERR_INVALID_POLICY, "Invalid policy value"},
81 {POLICY_ERR_INVALID_QUOTA_POLICY, "Invalid quota policy value"},
82 {POLICY_ERR_QUOTA_POLICY_NOT_EXIST, "Quota policy not exist"},
83 /* Net Ethernet Manager */
84 {ETHERNET_ERR_INIT_FAIL, "Failed to initialize the Ethernet"},
85 {ETHERNET_ERR_EMPTY_CONFIGURATION, "The Ethernet configuration file is empty"},
86 {ETHERNET_ERR_DUMP, "Ethernet DUMP error"},
87 {ETHERNET_ERR_DEVICE_CONFIGURATION_INVALID, "Invalid Ethernet configuration file"},
88 {ETHERNET_ERR_DEVICE_INFORMATION_NOT_EXIST, "The device information does not exist"},
89 {ETHERNET_ERR_DEVICE_NOT_LINK, "The Ethernet device is not connected"},
90 {ETHERNET_ERR_USER_CONIFGURATION_WRITE_FAIL,
91 "Description Failed to write user configuration information on the Ethernet"},
92 {ETHERNET_ERR_USER_CONIFGURATION_CLEAR_FAIL, "The Ethernet failed to clear user configuration information"},
93 {ETHERNET_ERR_CONVERT_CONFIGURATINO_FAIL, "The static configuration of Ethernet conversion failed"},
94 /* Net Share Manager */
95 {NETWORKSHARE_ERROR_UNKNOWN_TYPE, "Sharing iface type is unkonwn"},
96 {NETWORKSHARE_ERROR_UNKNOWN_IFACE, "Try to share an unknown iface"},
97 {NETWORKSHARE_ERROR_UNAVAIL_IFACE, "Try to share an unavailable iface"},
98 {NETWORKSHARE_ERROR_WIFI_SHARING, "WiFi sharing failed"},
99 {NETWORKSHARE_ERROR_BT_SHARING, "Bluetooth sharing failed"},
100 {NETWORKSHARE_ERROR_SHARING_IFACE_ERROR, "Sharing iface failed"},
101 {NETWORKSHARE_ERROR_ENABLE_FORWARDING_ERROR, "Network share enable forwarding error"},
102 {NETWORKSHARE_ERROR_INTERNAL_ERROR, "Network share internal error"},
103 {NETWORKSHARE_ERROR_IFACE_CFG_ERROR, "Get network card configuration is null"},
104 {NETWORKSHARE_ERROR_DHCPSERVER_ERROR, "DHCP server failed"},
105 {NETWORKSHARE_ERROR_ISSHARING_CALLBACK_ERROR, "Issharing callback is null"},
106 /* Net connection Manager */
107 {NET_CONN_ERR_INVALID_SUPPLIER_ID, "the supplier id is invalid"},
108 {NET_CONN_ERR_NET_TYPE_NOT_FOUND, "the net type is not found"},
109 {NET_CONN_ERR_NO_ANY_NET_TYPE, "no any net type"},
110 {NET_CONN_ERR_NO_REGISTERED, "no registered"},
111 {NET_CONN_ERR_NETID_NOT_FOUND, "the net id is not found"},
112 {NET_CONN_ERR_SAME_CALLBACK, "the same callback exists"},
113 {NET_CONN_ERR_CALLBACK_NOT_FOUND, "the callback is not found"},
114 {NET_CONN_ERR_REQ_ID_NOT_FOUND, "the request id is not found"},
115 {NET_CONN_ERR_NO_DEFAULT_NET, "the net is not defualt"},
116 {NET_CONN_ERR_HTTP_PROXY_INVALID, "the http proxy is invalid"},
117 {NET_CONN_ERR_NO_HTTP_PROXY, "the httpProxy in service is null"},
118 {NET_CONN_ERR_INVALID_NETWORK, "the network is nullptr"},
119 {NET_CONN_ERR_SERVICE_REQUEST_CONNECT_FAIL, "the service request connection failed "},
120 {NET_CONN_ERR_SERVICE_UPDATE_NET_LINK_INFO_FAIL, "the service update net link infomation failed"},
121 {NET_CONN_ERR_NO_SUPPLIER, "supplier doesn't exist"},
122 {NET_CONN_ERR_NET_MONITOR_OPT_FAILED, "net monitor failed"},
123 {NET_CONN_ERR_SERVICE_NO_REQUEST, "no service request"},
124 {NET_CONN_ERR_NO_ADDRESS, "address list is null"},
125 {NET_CONN_ERR_NET_NOT_FIND_BESTNETWORK_FOR_REQUEST, "the bestnetwork request was not found"},
126 {NET_CONN_ERR_NET_NO_RESTRICT_BACKGROUND, "no restrict background "},
127 {NET_CONN_ERR_NET_OVER_MAX_REQUEST_NUM, "the number of requests exceeded the maximum"},
128 {NET_CONN_ERR_CREATE_DUMP_FAILED, "create dump failed"},
129 /* Net mDNS Manager */
130 {NET_MDNS_ERR_UNKNOWN, "Unknown error"},
131 {NET_MDNS_ERR_CALLBACK_NOT_FOUND, "Callback not found"},
132 {NET_MDNS_ERR_CALLBACK_DUPLICATED, "Callback duplicated"},
133 {NET_MDNS_ERR_PAYLOAD_PARSER_FAIL, "Payload parser failed"},
134 {NET_MDNS_ERR_EMPTY_PAYLOAD, "Empty payload"},
135 {NET_MDNS_ERR_TIMEOUT, "Request timeout"},
136 {NET_MDNS_ERR_ILLEGAL_ARGUMENT, "Illegal argument"},
137 {NET_MDNS_ERR_SERVICE_INSTANCE_DUPLICATE, "Service instance duplicated"},
138 {NET_MDNS_ERR_SERVICE_INSTANCE_NOT_FOUND, "Service instance not found"},
139 {NET_MDNS_ERR_SEND, "Send packet failed"},
140 };
141 } // namespace
142
ConvertErrorCode(int32_t & errorCode)143 std::string NetBaseErrorCodeConvertor::ConvertErrorCode(int32_t &errorCode)
144 {
145 std::string errmsg;
146 if (g_errStringMap.find(errorCode) != g_errStringMap.end()) {
147 errmsg = g_errStringMap.at(errorCode);
148 }
149 if (errorCode > ERROR_DIVISOR || errorCode == IPC_PROXY_ERR) {
150 if (g_errNumMap.find(errorCode) != g_errNumMap.end()) {
151 errorCode = g_errNumMap.at(errorCode);
152 }
153 }
154 if (errmsg.empty() && g_errStringMap.find(errorCode) != g_errStringMap.end()) {
155 errmsg = g_errStringMap.at(errorCode);
156 }
157 return errmsg;
158 }
159 } // namespace NetManagerStandard
160 } // namespace OHOS
161