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_NOT_SYSTEM_CALL, "Non-system applications use system APIs"},
66 {NETMANAGER_ERR_PARAMETER_ERROR, "Parameter error"},
67 {NETMANAGER_ERR_CAPABILITY_NOT_SUPPORTED, "Capability not supported"},
68 {NETMANAGER_ERR_INVALID_PARAMETER, "Invalid parameter value"},
69 {NETMANAGER_ERR_OPERATION_FAILED, "Operation failed. Cannot connect to service"},
70 {NETMANAGER_ERR_INTERNAL, "System internal error"},
71 /* Net ext common error */
72 {NETMANAGER_EXT_SUCCESS, "successful"},
73 {NETMANAGER_EXT_ERR_PERMISSION_DENIED, "Permission denied"},
74 {NETMANAGER_EXT_ERR_NOT_SYSTEM_CALL, "System permission denied"},
75 {NETMANAGER_EXT_ERR_PARAMETER_ERROR, "Parameter error"},
76 {NETMANAGER_EXT_ERR_CAPABILITY_NOT_SUPPORTED, "Capability not supported"},
77 {NETMANAGER_EXT_ERR_INVALID_PARAMETER, "Invalid parameter value"},
78 {NETMANAGER_EXT_ERR_OPERATION_FAILED, "Operation failed. Cannot connect to service"},
79 {NETMANAGER_EXT_ERR_INTERNAL, "System internal error"},
80 /* Net Policy Manager */
81 {POLICY_ERR_INVALID_UID, "Invalid uid value"},
82 {POLICY_ERR_INVALID_POLICY, "Invalid policy value"},
83 {POLICY_ERR_INVALID_QUOTA_POLICY, "Invalid quota policy value"},
84 {POLICY_ERR_QUOTA_POLICY_NOT_EXIST, "Quota policy not exist"},
85 /* Net Ethernet Manager */
86 {ETHERNET_ERR_INIT_FAIL, "Failed to initialize the Ethernet"},
87 {ETHERNET_ERR_EMPTY_CONFIGURATION, "The Ethernet configuration file is empty"},
88 {ETHERNET_ERR_DUMP, "Ethernet DUMP error"},
89 {ETHERNET_ERR_DEVICE_CONFIGURATION_INVALID, "Invalid Ethernet configuration file"},
90 {ETHERNET_ERR_DEVICE_INFORMATION_NOT_EXIST, "The device information does not exist"},
91 {ETHERNET_ERR_DEVICE_NOT_LINK, "The Ethernet device is not connected"},
92 {ETHERNET_ERR_USER_CONIFGURATION_WRITE_FAIL,
93 "Description Failed to write user configuration information on the Ethernet"},
94 {ETHERNET_ERR_USER_CONIFGURATION_CLEAR_FAIL, "The Ethernet failed to clear user configuration information"},
95 {ETHERNET_ERR_CONVERT_CONFIGURATINO_FAIL, "The static configuration of Ethernet conversion failed"},
96 /* Net Share Manager */
97 {NETWORKSHARE_ERROR_UNKNOWN_TYPE, "Sharing iface type is unkonwn"},
98 {NETWORKSHARE_ERROR_UNKNOWN_IFACE, "Try to share an unknown iface"},
99 {NETWORKSHARE_ERROR_UNAVAIL_IFACE, "Try to share an unavailable iface"},
100 {NETWORKSHARE_ERROR_WIFI_SHARING, "WiFi sharing failed"},
101 {NETWORKSHARE_ERROR_BT_SHARING, "Bluetooth sharing failed"},
102 {NETWORKSHARE_ERROR_USB_SHARING, "Usb sharing failed"},
103 {NETWORKSHARE_ERROR_SHARING_IFACE_ERROR, "Sharing iface failed"},
104 {NETWORKSHARE_ERROR_ENABLE_FORWARDING_ERROR, "Network share enable forwarding error"},
105 {NETWORKSHARE_ERROR_INTERNAL_ERROR, "Network share internal error"},
106 {NETWORKSHARE_ERROR_IFACE_CFG_ERROR, "Network card configuration doesnot exist"},
107 {NETWORKSHARE_ERROR_DHCPSERVER_ERROR, "DHCP server failed"},
108 {NETWORKSHARE_ERROR_ISSHARING_CALLBACK_ERROR, "Issharing callback doesnot exist"},
109 /* Net Stats Manager */
110 {STATS_DUMP_MESSAGE_FAIL, "Dump message failed"},
111 {STATS_REMOVE_FILE_FAIL, "Remove file failed "},
112 {STATS_ERR_INVALID_TIME_PERIOD, "Time period invalid"},
113 {STATS_ERR_READ_BPF_FAIL, "Read bpf failed"},
114 {STATS_ERR_INVALID_KEY, "The key of bpf is invalid"},
115 {STATS_ERR_INVALID_IFACE_STATS_MAP, "The iface stats map is invalid"},
116 {STATS_ERR_INVALID_STATS_VALUE, "The stats value is invalid"},
117 {STATS_ERR_INVALID_STATS_TYPE, "Invalid stats type"},
118 {STATS_ERR_INVALID_UID_STATS_MAP, "The uid stats map in bpf is invalid"},
119 {STATS_ERR_INVALID_IFACE_NAME_MAP, "The iface map in bpf is invalid"},
120 {STATS_ERR_GET_IFACE_NAME_FAILED, "Get iface name failed"},
121 {STATS_ERR_CLEAR_STATS_DATA_FAIL, "Clear stats data failed"},
122 {STATS_ERR_CREATE_TABLE_FAIL, "Create stats table failed"},
123 {STATS_ERR_DATABASE_RECV_NO_DATA, "The data got from database doesnot exist"},
124 {STATS_ERR_WRITE_DATA_FAIL, "Write data into database failed"},
125 {STATS_ERR_READ_DATA_FAIL, "Read data from database failed"},
126 /* Net connection Manager */
127 {NET_CONN_ERR_INVALID_SUPPLIER_ID, "the supplier id is invalid"},
128 {NET_CONN_ERR_NET_TYPE_NOT_FOUND, "the net type is not found"},
129 {NET_CONN_ERR_NO_ANY_NET_TYPE, "no any net type"},
130 {NET_CONN_ERR_NO_REGISTERED, "no registered"},
131 {NET_CONN_ERR_NETID_NOT_FOUND, "the net id is not found"},
132 {NET_CONN_ERR_CALLBACK_NOT_FOUND, "the callback is not found"},
133 {NET_CONN_ERR_SAME_CALLBACK, "the same callback exists"},
134 {NET_CONN_ERR_REQ_ID_NOT_FOUND, "the request id is not found"},
135 {NET_CONN_ERR_NO_DEFAULT_NET, "the net is not defualt"},
136 {NET_CONN_ERR_HTTP_PROXY_INVALID, "the http proxy is invalid"},
137 {NET_CONN_ERR_NO_HTTP_PROXY, "the httpProxy in service doesnot exist"},
138 {NET_CONN_ERR_INVALID_NETWORK, "the network doesnot exist"},
139 {NET_CONN_ERR_SERVICE_REQUEST_CONNECT_FAIL, "the service request connection failed "},
140 {NET_CONN_ERR_SERVICE_UPDATE_NET_LINK_INFO_FAIL, "the service update net link infomation failed"},
141 {NET_CONN_ERR_NO_SUPPLIER, "supplier doesn't exist"},
142 {NET_CONN_ERR_NET_MONITOR_OPT_FAILED, "net monitor failed"},
143 {NET_CONN_ERR_SERVICE_NO_REQUEST, "no service request"},
144 {NET_CONN_ERR_NO_ADDRESS, "address list doesnot exist"},
145 {NET_CONN_ERR_NET_NOT_FIND_BESTNETWORK_FOR_REQUEST, "the bestnetwork request was not found"},
146 {NET_CONN_ERR_NET_NO_RESTRICT_BACKGROUND, "no restrict background "},
147 {NET_CONN_ERR_NET_OVER_MAX_REQUEST_NUM, "the number of requests exceeded the maximum"},
148 {NET_CONN_ERR_CREATE_DUMP_FAILED, "create dump failed"},
149 /* Net mDNS Manager */
150 {NET_MDNS_ERR_UNKNOWN, "Unknown error"},
151 {NET_MDNS_ERR_CALLBACK_NOT_FOUND, "Callback not found"},
152 {NET_MDNS_ERR_CALLBACK_DUPLICATED, "Callback duplicated"},
153 {NET_MDNS_ERR_PAYLOAD_PARSER_FAIL, "Payload parser failed"},
154 {NET_MDNS_ERR_EMPTY_PAYLOAD, "Empty payload"},
155 {NET_MDNS_ERR_TIMEOUT, "Request timeout"},
156 {NET_MDNS_ERR_ILLEGAL_ARGUMENT, "Illegal argument"},
157 {NET_MDNS_ERR_SERVICE_INSTANCE_DUPLICATE, "Service instance duplicated"},
158 {NET_MDNS_ERR_SERVICE_INSTANCE_NOT_FOUND, "Service instance not found"},
159 {NET_MDNS_ERR_SEND, "Send packet failed"},
160 /* Net vpn Manager */
161 {NETWORKVPN_ERROR_REFUSE_CREATE_VPN, "VPN creation denied, please check the user type"},
162 {NETWORKVPN_ERROR_VPN_EXIST, "VPN exist already, please execute destroy first"},
163 {NETWORKVPN_ERROR_INVALID_FD, "Invalid socket file discriptor"},
164 #ifdef FEATURE_WEARABLE_DISTRIBUTED_NET_ENABLE
165 /* Wearable distributed net manager */
166 {NETMANAGER_WEARABLE_DISTRIBUTED_NET_ERR_START_FAIL, "Wearable distributed net start failed"},
167 {NETMANAGER_WEARABLE_DISTRIBUTED_NET_ERR_STOP_FAIL, "Wearable distributed net stop failed"},
168 {NETMANAGER_WEARABLE_DISTRIBUTED_NET_ERR_INIT_FAIL, "Failed to initialize the wearable distributed net"},
169 {NETMANAGER_WEARABLE_DISTRIBUTED_NET_ERR_INVALID_PORT_ID, "The port id is invalid"},
170 {NETMANAGER_WEARABLE_DISTRIBUTED_NET_ERR_INVALID_UDP_PORT_ID, "The udp port id is invalid"},
171 {NETMANAGER_WEARABLE_DISTRIBUTED_NET_ERR_INVALID_TCP_PORT_ID, "The tcp port id is invalid"},
172 {NETMANAGER_WEARABLE_DISTRIBUTED_NET_ERR_INVALID_RULE_TYPE, "The wearable distributed net is invalid"},
173 {NETMANAGER_WEARABLE_DISTRIBUTED_NET_ERR_INVALID_SUPPLIER_ID, "The supplier id is invalid"},
174 {NETMANAGER_WEARABLE_DISTRIBUTED_NET_ERR_IPTABLES_COMMAND_INVALID, "The iptables command is invalid"},
175 #endif
176 #ifdef FEATURE_NET_FIREWALL_ENABLE
177 /* Net firewall Manager */
178 {FIREWALL_ERR_NO_USER, "The specified user does not exist"},
179 {FIREWALL_ERR_EXCEED_MAX_RULE, "The number of firewall rules exceeds the maximum"},
180 {FIREWALL_ERR_EXCEED_MAX_IP, "The number of IP address rules in the firewall rule exceeds the maximum"},
181 {FIREWALL_ERR_EXCEED_MAX_PORT, "The number of port rules in the firewall rule exceeds the maximum"},
182 {FIREWALL_ERR_EXCEED_MAX_DOMAIN, "The number of domain rules in the firewall rule exceeds the maximum"},
183 {FIREWALL_ERR_EXCEED_ALL_MAX_DOMAIN, "The number of domain rules exceeds the maximum"},
184 {FIREWALL_ERR_NO_RULE, "The specified rule does not exist"},
185 {FIREWALL_ERR_DNS_RULE_DUPLICATION, "The dns rule is duplication"},
186 #endif
187 };
188 } // namespace
ConvertErrorCode(int32_t & errorCode)189 std::string NetBaseErrorCodeConvertor::ConvertErrorCode(int32_t &errorCode)
190 {
191 std::string errmsg;
192 if (errorCode > ERROR_DIVISOR || errorCode == IPC_PROXY_ERR) {
193 if (g_errNumMap.find(errorCode) != g_errNumMap.end()) {
194 errorCode = g_errNumMap.at(errorCode);
195 }
196 }
197 if (g_errStringMap.find(errorCode) != g_errStringMap.end()) {
198 errmsg = g_errStringMap.at(errorCode);
199 }
200 return errmsg;
201 }
202 } // namespace NetManagerStandard
203 } // namespace OHOS
204