2 * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 #include <arpa/inet.h>
22 #include <netinet/in.h>
24 #include "network_internal.h"
25 #include "wifi_internal.h"
27 #define MAX_PREFIX_LENGTH 6
30 static char *__ap_convert_ip_to_string(net_addr_s *ip_addr,
31 wifi_manager_address_family_e address_family)
33 unsigned char *ipaddr = NULL;
36 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4) {
37 ipaddr = (unsigned char *)&ip_addr->Data.Ipv4.s_addr;
38 ipstr = g_try_malloc0(INET_ADDRSTRLEN);
42 inet_ntop(AF_INET, ipaddr, ipstr, INET_ADDRSTRLEN);
44 ipaddr = (unsigned char *)&ip_addr->Data.Ipv6;
45 ipstr = g_try_malloc0(INET6_ADDRSTRLEN);
49 inet_ntop(AF_INET6, ipaddr, ipstr, INET6_ADDRSTRLEN);
54 static void __wifi_init_ap(wifi_manager_handle_s *wifi_handle,
55 net_profile_info_s *profile_info, const char *essid)
57 profile_info->ProfileState = NET_STATE_TYPE_IDLE;
58 profile_info->net_info.IpConfigType = NET_IP_CONFIG_TYPE_OFF;
59 profile_info->net_info.ProxyMethod = NET_PROXY_TYPE_DIRECT;
60 profile_info->wlan_mode = NET_WLAN_CONNMODE_AUTO;
61 profile_info->security_info.sec_mode = WLAN_SEC_MODE_NONE;
62 profile_info->security_info.enc_mode = WLAN_ENC_MODE_NONE;
63 g_strlcpy(profile_info->essid, essid, NET_WLAN_ESSID_LEN+1);
65 profile_info->network_info = wifi_handle->network_info;
68 static char *__wifi_create_profile_name(const char *ssid,
69 const int net_mode, const int sec_mode)
73 const char *hidden_str = "hidden";
74 char buf_tmp[32] = { 0, };
78 const char *mode = "managed";
81 if (net_mode == NET_WLAN_CONNMODE_ADHOC) {
82 WIFI_LOG(WIFI_ERROR, "wlan_mode is adhoc");
87 case WLAN_SEC_MODE_NONE:
90 case WLAN_SEC_MODE_WEP:
93 case WLAN_SEC_MODE_IEEE8021X:
96 case WLAN_SEC_MODE_WPA_PSK:
97 case WLAN_SEC_MODE_WPA2_PSK:
100 case WLAN_SEC_MODE_WPA_FT_PSK:
103 case WLAN_SEC_MODE_SAE:
106 case WLAN_SEC_MODE_OWE:
109 case WLAN_SEC_MODE_DPP:
113 WIFI_LOG(WIFI_ERROR, "Invalid security type");
118 ssid_len = strlen(ssid);
119 actual_len = ssid_len * 2;
121 ssid_len = strlen(hidden_str);
122 actual_len = ssid_len;
125 buf = g_try_malloc0(actual_len + strlen(mode) + strlen(g_sec) + 3);
132 for (i = 0; i < ssid_len; i++) {
133 g_snprintf(pbuf, 3, "%02x", ssid[i]);
137 g_strlcat(buf, hidden_str,
138 actual_len + strlen(mode) + strlen(g_sec) + 3);
140 g_snprintf(buf_tmp, 32, "_%s_%s", mode, g_sec);
141 g_strlcat(buf, buf_tmp,
142 actual_len + strlen(mode) + strlen(g_sec) + 3);
144 WIFI_LOG(WIFI_INFO, "Profile name: %s", buf);
149 int __ap_convert_netmask_to_prefix_len(const char *netmask)
154 in_addr_t mask = inet_network(netmask);
157 for (; mask; mask <<= 1)
163 static in_addr_t __ap_convert_prefix_len_to_netmask(int prefix_len)
165 return (prefix_len ? (in_addr_t) 0xFFFFFFFFu >> (32 - prefix_len) : 0);
168 static wifi_manager_rssi_level_e __ap_convert_dbm_to_level_24(int rssi_dbm)
170 wifi_manager_rssi_level_e rssi_level = WIFI_MANAGER_RSSI_LEVEL_0;
172 /* Wi-Fi Signal Strength Display (for 2.4G (dB))
177 * Very weak : -83 ~ -88
182 rssi_level = WIFI_MANAGER_RSSI_LEVEL_4;
183 else if (rssi_dbm >= -74)
184 rssi_level = WIFI_MANAGER_RSSI_LEVEL_3;
185 else if (rssi_dbm >= -82)
186 rssi_level = WIFI_MANAGER_RSSI_LEVEL_2;
187 else if (rssi_dbm >= -88)
188 rssi_level = WIFI_MANAGER_RSSI_LEVEL_1;
190 rssi_level = WIFI_MANAGER_RSSI_LEVEL_0;
195 static wifi_manager_rssi_level_e __ap_convert_dbm_to_level_50(int rssi_dbm)
197 wifi_manager_rssi_level_e rssi_level = WIFI_MANAGER_RSSI_LEVEL_0;
199 /* Wi-Fi Signal Strength Display (for 5G (dB))
204 * Very weak : -83 ~ -88
209 rssi_level = WIFI_MANAGER_RSSI_LEVEL_4;
210 else if (rssi_dbm >= -76)
211 rssi_level = WIFI_MANAGER_RSSI_LEVEL_3;
212 else if (rssi_dbm >= -82)
213 rssi_level = WIFI_MANAGER_RSSI_LEVEL_2;
214 else if (rssi_dbm >= -88)
215 rssi_level = WIFI_MANAGER_RSSI_LEVEL_1;
217 rssi_level = WIFI_MANAGER_RSSI_LEVEL_0;
222 static bool _wifi_set_profile_name_to_ap(net_profile_info_s *ap_info)
224 char *profile_name = NULL;
226 if (ap_info == NULL) {
227 WIFI_LOG(WIFI_ERROR, "profile_info is NULL");
231 profile_name = __wifi_create_profile_name(
232 ap_info->is_hidden == TRUE ?
233 NULL : ap_info->essid,
235 ap_info->security_info.sec_mode);
236 if (profile_name == NULL) {
237 WIFI_LOG(WIFI_ERROR, "Failed to make a group name");
241 g_strlcpy(ap_info->net_info.ProfileName,
242 profile_name, NET_PROFILE_NAME_LEN_MAX + 1);
244 g_free(profile_name);
249 wifi_manager_connection_state_e _wifi_convert_to_ap_state(net_state_type_e state)
251 wifi_manager_connection_state_e ap_state;
254 case NET_STATE_TYPE_ONLINE:
255 case NET_STATE_TYPE_READY:
256 ap_state = WIFI_MANAGER_CONNECTION_STATE_CONNECTED;
258 case NET_STATE_TYPE_FAILURE:
259 ap_state = WIFI_MANAGER_CONNECTION_STATE_FAILURE;
261 case NET_STATE_TYPE_IDLE:
262 case NET_STATE_TYPE_DISCONNECT:
263 ap_state = WIFI_MANAGER_CONNECTION_STATE_DISCONNECTED;
265 case NET_STATE_TYPE_ASSOCIATION:
266 ap_state = WIFI_MANAGER_CONNECTION_STATE_ASSOCIATION;
268 case NET_STATE_TYPE_CONFIGURATION:
269 ap_state = WIFI_MANAGER_CONNECTION_STATE_CONFIGURATION;
279 wifi_manager_error_e __wifi_convert_to_ap_error_state(net_error_state_type_e error)
281 wifi_manager_error_e ap_error_state;
284 case NET_STATE_ERROR_OUT_OF_RANGE:
285 ap_error_state = WIFI_MANAGER_ERROR_OUT_OF_RANGE;
287 case NET_STATE_ERROR_PIN_MISSING:
288 ap_error_state = WIFI_MANAGER_ERROR_PIN_MISSING;
290 case NET_STATE_ERROR_DHCP_FAILED:
291 ap_error_state = WIFI_MANAGER_ERROR_DHCP_FAILED;
293 case NET_STATE_ERROR_CONNECT_FAILED:
294 ap_error_state = WIFI_MANAGER_ERROR_OPERATION_FAILED;
296 case NET_STATE_ERROR_LOGIN_FAILED:
297 ap_error_state = WIFI_MANAGER_ERROR_LOGIN_FAILED;
299 case NET_STATE_ERROR_AUTH_FAILED:
300 ap_error_state = WIFI_MANAGER_ERROR_AUTHENTICATION_FAILED;
302 case NET_STATE_ERROR_ASSOC_FAILED:
303 ap_error_state = WIFI_MANAGER_ERROR_ASSOCIATION_FAILED;
305 case NET_STATE_ERROR_INVALID_KEY:
306 ap_error_state = WIFI_MANAGER_ERROR_INVALID_KEY;
309 ap_error_state = WIFI_MANAGER_ERROR_NONE;
313 return ap_error_state;
316 wifi_manager_connection_mode_e __ap_convert_string_to_connection_mode(char *mode)
318 if (g_strcmp0(mode, "802.11b") == 0)
319 return WIFI_MANAGER_CONNECTION_MODE_80211_B;
320 else if (g_strcmp0(mode, "802.11g") == 0)
321 return WIFI_MANAGER_CONNECTION_MODE_80211_G;
322 else if (g_strcmp0(mode, "802.11n") == 0)
323 return WIFI_MANAGER_CONNECTION_MODE_80211_N;
324 else if (g_strcmp0(mode, "802.11a") == 0)
325 return WIFI_MANAGER_CONNECTION_MODE_80211_A;
326 else if (g_strcmp0(mode, "802.11ac") == 0)
327 return WIFI_MANAGER_CONNECTION_MODE_80211_AC;
328 else if (g_strcmp0(mode, "802.11ax") == 0)
329 return WIFI_MANAGER_CONNECTION_MODE_80211_AX;
331 return WIFI_MANAGER_CONNECTION_MODE_UNKNOWN;
335 EXPORT_API int wifi_manager_ap_create(wifi_manager_h wifi,
336 const char *essid, wifi_manager_ap_h *ap)
338 __NETWORK_CAPI_FUNC_ENTER__;
340 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
342 RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(wifi, __NETWORK_CAPI_FUNC_EXIT__);
344 if (!_wifi_check_essid_validity(essid) || ap == NULL) {
345 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
346 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
347 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
350 net_profile_info_s *ap_info = g_try_malloc0(sizeof(net_profile_info_s));
351 if (ap_info == NULL) {
352 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
353 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
356 __wifi_init_ap(wifi, ap_info, essid);
358 _wifi_add_to_ap_list(ap_info);
359 *ap = (wifi_manager_ap_h)ap_info;
361 __NETWORK_CAPI_FUNC_EXIT__;
363 return WIFI_MANAGER_ERROR_NONE;
366 EXPORT_API int wifi_manager_ap_hidden_create(wifi_manager_h wifi,
367 const char *essid, wifi_manager_ap_h *ap)
369 __NETWORK_CAPI_FUNC_ENTER__;
371 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
373 RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(wifi, __NETWORK_CAPI_FUNC_EXIT__);
375 if (essid == NULL || ap == NULL) {
376 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
377 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
378 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
381 net_profile_info_s *ap_info = g_try_malloc0(sizeof(net_profile_info_s));
382 if (ap_info == NULL) {
383 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
384 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
387 __wifi_init_ap(wifi, ap_info, essid);
388 ap_info->is_hidden = TRUE;
390 _wifi_add_to_ap_list(ap_info);
391 *ap = (wifi_manager_ap_h)ap_info;
393 __NETWORK_CAPI_FUNC_EXIT__;
395 return WIFI_MANAGER_ERROR_NONE;
398 EXPORT_API int wifi_manager_ap_destroy(wifi_manager_ap_h ap)
400 /* __NETWORK_CAPI_FUNC_ENTER__; */
402 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
404 net_profile_info_s *ap_info = (net_profile_info_s *)ap;
406 if (_wifi_check_ap_validity(ap) == false) {
407 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
408 /* __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE */
409 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
412 _wifi_remove_from_ap_list(ap);
414 g_slist_free_full(ap_info->vsie_list, g_free);
415 g_slist_free_full(ap_info->bssid_list, g_free);
418 /* __NETWORK_CAPI_FUNC_EXIT__; */
420 return WIFI_MANAGER_ERROR_NONE;
423 EXPORT_API int wifi_manager_ap_clone(wifi_manager_ap_h *cloned_ap, wifi_manager_ap_h origin)
425 /* __NETWORK_CAPI_FUNC_ENTER__; */
427 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
429 if (_wifi_check_ap_validity(origin) == false || cloned_ap == NULL) {
430 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
431 /* __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE */
432 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
435 net_profile_info_s *origin_info = origin;
436 net_profile_info_s *ap_info = g_try_malloc0(sizeof(net_profile_info_s));
437 if (ap_info == NULL) {
438 /* __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE */
439 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
442 memcpy(ap_info, origin, sizeof(net_profile_info_s));
443 ap_info->vsie_list = g_slist_copy_deep(origin_info->vsie_list,
444 _wifi_copy_vsie_list, NULL);
445 ap_info->bssid_list = g_slist_copy_deep(origin_info->bssid_list,
446 _wifi_copy_bssid_list, NULL);
448 _wifi_add_to_ap_list(ap_info);
449 *cloned_ap = (wifi_manager_ap_h)ap_info;
451 /* __NETWORK_CAPI_FUNC_EXIT__; */
453 return WIFI_MANAGER_ERROR_NONE;
456 EXPORT_API int wifi_manager_ap_refresh(wifi_manager_ap_h ap)
458 __NETWORK_CAPI_FUNC_ENTER__;
460 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
462 net_profile_info_s ap_info_local;
463 net_profile_info_s *ap_info = ap;
465 if (_wifi_check_ap_validity(ap) == false) {
466 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
467 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
468 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
471 int rv = NET_ERR_NONE;
472 rv = net_get_profile_info(ap_info->network_info, ap_info->ProfileName, &ap_info_local);
473 if (rv == NET_ERR_ACCESS_DENIED) {
474 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
475 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
476 return WIFI_MANAGER_ERROR_PERMISSION_DENIED; //LCOV_EXCL_LINE
477 } else if (rv != NET_ERR_NONE) {
478 WIFI_LOG(WIFI_ERROR, "Failed to getprofile_info"); //LCOV_EXCL_LINE
479 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
480 return WIFI_MANAGER_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE
483 if (ap_info->vsie_list)
484 g_slist_free_full(ap_info->vsie_list, g_free);
485 if (ap_info->bssid_list)
486 g_slist_free_full(ap_info->bssid_list, g_free);
488 memcpy(ap, &ap_info_local, sizeof(net_profile_info_s));
489 ap_info->vsie_list = g_slist_copy_deep(ap_info_local.vsie_list,
490 _wifi_copy_vsie_list, NULL);
491 ap_info->bssid_list = g_slist_copy_deep(ap_info_local.bssid_list,
492 _wifi_copy_bssid_list, NULL);
494 __NETWORK_CAPI_FUNC_EXIT__;
496 return WIFI_MANAGER_ERROR_NONE;
499 /* Wi-Fi network information ************************************************/
500 EXPORT_API int wifi_manager_ap_get_essid(wifi_manager_ap_h ap, char **essid)
502 /* __NETWORK_CAPI_FUNC_ENTER__; */
504 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
506 if (_wifi_check_ap_validity(ap) == false || essid == NULL) {
507 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
508 /* __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE */
509 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
512 net_profile_info_s *profile_info = ap;
513 *essid = g_strdup(profile_info->essid);
514 if (*essid == NULL) {
515 /* __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE */
516 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
519 /* __NETWORK_CAPI_FUNC_EXIT__; */
521 return WIFI_MANAGER_ERROR_NONE;
524 EXPORT_API int wifi_manager_ap_get_raw_ssid(wifi_manager_ap_h ap, char **ssid, int *ssid_len)
526 __NETWORK_CAPI_FUNC_ENTER__;
528 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
530 if (_wifi_check_ap_validity(ap) == false || ssid == NULL ||
532 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
533 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
534 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
537 net_profile_info_s *profile_info = ap;
538 *ssid = g_try_malloc0(NET_WLAN_RAW_SSID_LEN + 1);
540 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
541 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
544 memcpy(*ssid, profile_info->raw_ssid, NET_WLAN_RAW_SSID_LEN);
545 *ssid_len = profile_info->raw_ssid_len;
547 __NETWORK_CAPI_FUNC_EXIT__;
549 return WIFI_MANAGER_ERROR_NONE;
552 EXPORT_API int wifi_manager_ap_get_bssid(wifi_manager_ap_h ap, char **bssid)
554 __NETWORK_CAPI_FUNC_ENTER__;
556 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
558 if (_wifi_check_ap_validity(ap) == false || bssid == NULL) {
559 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
560 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
561 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
564 net_profile_info_s *profile_info = ap;
565 *bssid = g_strdup(profile_info->bssid);
566 if (*bssid == NULL) {
567 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
568 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
571 __NETWORK_CAPI_FUNC_EXIT__;
573 return WIFI_MANAGER_ERROR_NONE;
576 EXPORT_API int wifi_manager_ap_get_rssi(wifi_manager_ap_h ap, int *rssi)
578 /* __NETWORK_CAPI_FUNC_ENTER__; */
580 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
582 if (_wifi_check_ap_validity(ap) == false || rssi == NULL) {
583 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
584 /* __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE */
585 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
588 net_profile_info_s *profile_info = ap;
589 *rssi = (int)(profile_info->Strength - 120);
591 /* __NETWORK_CAPI_FUNC_EXIT__; */
593 return WIFI_MANAGER_ERROR_NONE;
596 EXPORT_API int wifi_manager_ap_get_rssi_level(wifi_manager_ap_h ap, wifi_manager_rssi_level_e *rssi_level)
598 __NETWORK_CAPI_FUNC_ENTER__;
600 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
604 if (_wifi_check_ap_validity(ap) == false || rssi_level == NULL) {
605 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
606 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
607 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
610 net_profile_info_s *profile_info = ap;
611 rssi_dbm = (int)(profile_info->Strength - 120);
613 if (profile_info->frequency > 4900)
614 *rssi_level = __ap_convert_dbm_to_level_50(rssi_dbm);
616 *rssi_level = __ap_convert_dbm_to_level_24(rssi_dbm);
618 __NETWORK_CAPI_FUNC_EXIT__;
620 return WIFI_MANAGER_ERROR_NONE;
623 EXPORT_API int wifi_manager_ap_get_frequency(wifi_manager_ap_h ap, int *frequency)
625 __NETWORK_CAPI_FUNC_ENTER__;
627 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
629 if (_wifi_check_ap_validity(ap) == false || frequency == NULL) {
630 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
631 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
632 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
635 net_profile_info_s *profile_info = ap;
636 *frequency = (int)profile_info->frequency;
638 __NETWORK_CAPI_FUNC_EXIT__;
640 return WIFI_MANAGER_ERROR_NONE;
643 EXPORT_API int wifi_manager_ap_foreach_vsie(wifi_manager_ap_h ap,
644 wifi_manager_ap_vsie_cb callback, void *user_data)
646 __NETWORK_CAPI_FUNC_ENTER__;
648 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
650 if (_wifi_check_ap_validity(ap) == false || callback == NULL) {
651 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
652 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
653 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
656 net_profile_info_s *profile_info = ap;
660 for (list = profile_info->vsie_list; list; list = list->next) {
661 unsigned char *vsie = (unsigned char *)list->data;
662 int length = vsie[1] + 2;
664 rv = callback(vsie, length, user_data);
669 __NETWORK_CAPI_FUNC_EXIT__;
670 return WIFI_MANAGER_ERROR_NONE;
673 EXPORT_API int wifi_manager_ap_get_max_speed(wifi_manager_ap_h ap, int *max_speed)
675 __NETWORK_CAPI_FUNC_ENTER__;
677 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
679 if (_wifi_check_ap_validity(ap) == false || max_speed == NULL) {
680 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
681 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
682 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
685 net_profile_info_s *profile_info = ap;
686 *max_speed = profile_info->max_rate;
688 __NETWORK_CAPI_FUNC_EXIT__;
690 return WIFI_MANAGER_ERROR_NONE;
693 EXPORT_API int wifi_manager_ap_is_favorite(wifi_manager_ap_h ap, bool *favorite)
695 /* __NETWORK_CAPI_FUNC_ENTER__; */
697 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
699 if (_wifi_check_ap_validity(ap) == false || favorite == NULL) {
700 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
701 /* __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE */
702 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
705 net_profile_info_s *profile_info = ap;
707 if (profile_info->Favourite)
712 /* __NETWORK_CAPI_FUNC_EXIT__; */
714 return WIFI_MANAGER_ERROR_NONE;
717 EXPORT_API int wifi_manager_ap_is_passpoint(wifi_manager_ap_h ap, bool *passpoint)
719 __NETWORK_CAPI_FUNC_ENTER__;
721 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
723 if (_wifi_check_ap_validity(ap) == false || passpoint == NULL) {
724 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
725 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
726 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
729 net_profile_info_s *profile_info = ap;
731 if (profile_info->passpoint)
736 __NETWORK_CAPI_FUNC_EXIT__;
738 return WIFI_MANAGER_ERROR_NONE;
741 EXPORT_API int wifi_manager_ap_get_connection_state(wifi_manager_ap_h ap,
742 wifi_manager_connection_state_e *state)
744 /* __NETWORK_CAPI_FUNC_ENTER__; */
746 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
748 if (_wifi_check_ap_validity(ap) == false || state == NULL) {
749 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
750 /* __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE */
751 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
754 net_profile_info_s *profile_info = ap;
756 *state = _wifi_convert_to_ap_state(profile_info->ProfileState);
759 /* __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE */
760 return WIFI_MANAGER_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE
763 /* __NETWORK_CAPI_FUNC_EXIT__; */
765 return WIFI_MANAGER_ERROR_NONE;
768 EXPORT_API int wifi_manager_ap_get_ip_config_type(wifi_manager_ap_h ap,
769 wifi_manager_address_family_e address_family, wifi_manager_ip_config_type_e *type)
771 __NETWORK_CAPI_FUNC_ENTER__;
773 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
774 net_ip_config_type_e profileType ;
776 if (_wifi_check_ap_validity(ap) == false ||
777 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
778 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6) ||
780 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
781 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
782 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
785 net_profile_info_s *profile_info = ap;
787 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4)
788 profileType = profile_info->net_info.IpConfigType ;
790 profileType = profile_info->net_info.IpConfigType6 ; //LCOV_EXCL_LINE
792 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4) {
793 switch (profileType) {
795 case NET_IP_CONFIG_TYPE_STATIC:
796 *type = WIFI_MANAGER_IP_CONFIG_TYPE_STATIC;
799 case NET_IP_CONFIG_TYPE_DYNAMIC:
800 *type = WIFI_MANAGER_IP_CONFIG_TYPE_DYNAMIC;
803 case NET_IP_CONFIG_TYPE_AUTO_IP:
804 *type = WIFI_MANAGER_IP_CONFIG_TYPE_AUTO;
807 case NET_IP_CONFIG_TYPE_FIXED:
808 *type = WIFI_MANAGER_IP_CONFIG_TYPE_FIXED;
811 case NET_IP_CONFIG_TYPE_OFF:
812 *type = WIFI_MANAGER_IP_CONFIG_TYPE_NONE;
816 __NETWORK_CAPI_FUNC_EXIT__;
817 return WIFI_MANAGER_ERROR_OPERATION_FAILED;
822 switch (profileType) {
823 case NET_IP_CONFIG_TYPE_STATIC:
824 *type = WIFI_MANAGER_IP_CONFIG_TYPE_STATIC;
826 case NET_IP_CONFIG_TYPE_AUTO_IP:
827 *type = WIFI_MANAGER_IP_CONFIG_TYPE_AUTO;
829 case NET_IP_CONFIG_TYPE_OFF:
830 *type = WIFI_MANAGER_IP_CONFIG_TYPE_NONE;
833 __NETWORK_CAPI_FUNC_EXIT__;
834 return WIFI_MANAGER_ERROR_OPERATION_FAILED;
839 __NETWORK_CAPI_FUNC_EXIT__;
841 return WIFI_MANAGER_ERROR_NONE;
844 EXPORT_API int wifi_manager_ap_set_ip_config_type(wifi_manager_ap_h ap,
845 wifi_manager_address_family_e address_family, wifi_manager_ip_config_type_e type)
847 __NETWORK_CAPI_FUNC_ENTER__;
849 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
850 net_ip_config_type_e *profileType = NULL;
852 if (_wifi_check_ap_validity(ap) == false ||
853 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
854 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6)) {
855 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
856 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
857 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
860 net_profile_info_s *profile_info = ap;
862 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4)
863 profileType = &profile_info->net_info.IpConfigType ;
865 profileType = &profile_info->net_info.IpConfigType6 ;
867 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4) {
870 case WIFI_MANAGER_IP_CONFIG_TYPE_STATIC:
871 *profileType = NET_IP_CONFIG_TYPE_STATIC;
872 profile_info->net_info.IpAddr.Data.Ipv4.s_addr = 0;
873 profile_info->net_info.SubnetMask.Data.Ipv4.s_addr = 0;
874 profile_info->net_info.GatewayAddr.Data.Ipv4.s_addr = 0 ;
877 case WIFI_MANAGER_IP_CONFIG_TYPE_DYNAMIC:
878 *profileType = NET_IP_CONFIG_TYPE_DYNAMIC;
881 case WIFI_MANAGER_IP_CONFIG_TYPE_AUTO:
882 *profileType = NET_IP_CONFIG_TYPE_AUTO_IP;
885 case WIFI_MANAGER_IP_CONFIG_TYPE_FIXED:
886 *profileType = NET_IP_CONFIG_TYPE_FIXED;
889 case WIFI_MANAGER_IP_CONFIG_TYPE_NONE:
890 *profileType = NET_IP_CONFIG_TYPE_OFF;
894 __NETWORK_CAPI_FUNC_EXIT__;
895 return WIFI_MANAGER_ERROR_INVALID_PARAMETER;
901 case WIFI_MANAGER_IP_CONFIG_TYPE_STATIC:
902 *profileType = NET_IP_CONFIG_TYPE_STATIC;
903 inet_pton(AF_INET6, "::", &profile_info->net_info.IpAddr6.Data.Ipv6);
904 profile_info->net_info.PrefixLen6 = 0 ;
905 inet_pton(AF_INET6, "::", &profile_info->net_info.GatewayAddr6.Data.Ipv6);
907 case WIFI_MANAGER_IP_CONFIG_TYPE_AUTO:
908 *profileType = NET_IP_CONFIG_TYPE_AUTO_IP;
910 case WIFI_MANAGER_IP_CONFIG_TYPE_NONE:
911 *profileType = NET_IP_CONFIG_TYPE_OFF;
914 __NETWORK_CAPI_FUNC_EXIT__;
915 return WIFI_MANAGER_ERROR_INVALID_PARAMETER;
920 __NETWORK_CAPI_FUNC_EXIT__;
922 return WIFI_MANAGER_ERROR_NONE;
925 EXPORT_API int wifi_manager_ap_get_ip_address(wifi_manager_ap_h ap,
926 wifi_manager_address_family_e address_family, char **ip_address)
928 __NETWORK_CAPI_FUNC_ENTER__;
930 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
932 if (_wifi_check_ap_validity(ap) == false ||
933 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
934 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6) ||
935 ip_address == NULL) {
936 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
937 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
938 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
941 net_profile_info_s *profile_info = ap;
942 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4) {
943 *ip_address = __ap_convert_ip_to_string(
944 &profile_info->net_info.IpAddr,
946 if (g_strcmp0(*ip_address, "0.0.0.0") == 0) {
947 WIFI_LOG(WIFI_ERROR, "Invalid IP Address [%s]", *ip_address); //LCOV_EXCL_LINE
948 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
949 return WIFI_MANAGER_ERROR_NO_CONNECTION; //LCOV_EXCL_LINE
951 } else if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV6) {
952 if (net_get_preferred_ipv6_address(profile_info->network_info,
953 profile_info->ProfileName, ip_address) != NET_ERR_NONE) {
954 WIFI_LOG(WIFI_ERROR, "Failed to get preferred ipv6 address");
955 *ip_address = __ap_convert_ip_to_string(
956 &profile_info->net_info.IpAddr6,
961 if (*ip_address == NULL) {
962 WIFI_LOG(WIFI_ERROR, "Out of memory"); //LCOV_EXCL_LINE
963 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
964 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
967 WIFI_LOG(WIFI_INFO, "Wi-Fi IP Address [%s]", *ip_address);
969 __NETWORK_CAPI_FUNC_EXIT__;
970 return WIFI_MANAGER_ERROR_NONE;
973 EXPORT_API int wifi_manager_ap_set_ip_address(wifi_manager_ap_h ap,
974 wifi_manager_address_family_e address_family, const char *ip_address)
976 __NETWORK_CAPI_FUNC_ENTER__;
978 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
980 if (_wifi_check_ap_validity(ap) == false ||
981 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
982 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6)) {
983 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
984 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
985 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
988 net_profile_info_s *profile_info = ap;
990 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4) {
991 if (ip_address == NULL)
992 profile_info->net_info.IpAddr.Data.Ipv4.s_addr = 0;
993 else if (inet_aton(ip_address,
994 &(profile_info->net_info.IpAddr.Data.Ipv4)) == 0) {
995 __NETWORK_CAPI_FUNC_EXIT__;
996 return WIFI_MANAGER_ERROR_INVALID_PARAMETER;
1000 if (ip_address == NULL)
1001 inet_pton(AF_INET6, "::",
1002 &profile_info->net_info.IpAddr6.Data.Ipv6);
1003 else if (inet_pton(AF_INET6, ip_address,
1004 &profile_info->net_info.IpAddr6.Data.Ipv6) == 0) {
1005 __NETWORK_CAPI_FUNC_EXIT__;
1006 return WIFI_MANAGER_ERROR_INVALID_PARAMETER;
1011 __NETWORK_CAPI_FUNC_EXIT__;
1013 return WIFI_MANAGER_ERROR_NONE;
1016 EXPORT_API int wifi_manager_ap_get_subnet_mask(wifi_manager_ap_h ap,
1017 wifi_manager_address_family_e address_family, char **subnet_mask)
1019 __NETWORK_CAPI_FUNC_ENTER__;
1021 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1024 if (_wifi_check_ap_validity(ap) == false ||
1025 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
1026 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6) ||
1027 subnet_mask == NULL) {
1028 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1029 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1030 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1033 net_profile_info_s *profile_info = ap;
1034 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4)
1035 *subnet_mask = __ap_convert_ip_to_string(
1036 &profile_info->net_info.SubnetMask,
1040 prefixlen = g_try_malloc0(MAX_PREFIX_LENGTH);
1041 if (prefixlen != NULL) {
1042 snprintf(prefixlen, MAX_PREFIX_LENGTH, "%d",
1043 profile_info->net_info.PrefixLen6);
1044 *subnet_mask = prefixlen;
1046 *subnet_mask = NULL;
1050 if (*subnet_mask == NULL) {
1051 __NETWORK_CAPI_FUNC_EXIT__;
1052 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
1055 __NETWORK_CAPI_FUNC_EXIT__;
1057 return WIFI_MANAGER_ERROR_NONE;
1060 EXPORT_API int wifi_manager_ap_set_subnet_mask(wifi_manager_ap_h ap,
1061 wifi_manager_address_family_e address_family, const char *subnet_mask)
1063 __NETWORK_CAPI_FUNC_ENTER__;
1065 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1067 if (_wifi_check_ap_validity(ap) == false ||
1068 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
1069 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6)) {
1070 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1071 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1072 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1075 net_profile_info_s *profile_info = ap;
1077 /* Based on the family of address provided subnet mask should be set.
1078 * For IPv6 address subnet mask is prefix length, an integer, while for
1079 * Ipv6 address subnet mask is a ipv6 address.
1081 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV6) {
1083 if (subnet_mask == NULL)
1084 profile_info->net_info.PrefixLen6 = 0;
1086 /* subnet mask provided as input parameter is a string
1087 * while for IPv6 address subnet mask in prefix length
1088 * which should be in integer form */
1094 val = strtol(subnet_mask, &endptr, 10);
1095 if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
1096 || (errno != 0 && val == 0)) {
1097 WIFI_LOG(WIFI_ERROR, "invalid subnet mask");
1098 __NETWORK_CAPI_FUNC_EXIT__;
1099 return WIFI_MANAGER_ERROR_INVALID_PARAMETER;
1102 if (endptr == subnet_mask) {
1103 WIFI_LOG(WIFI_ERROR, "invalid subnet mask");
1104 __NETWORK_CAPI_FUNC_EXIT__;
1105 return WIFI_MANAGER_ERROR_INVALID_PARAMETER;
1108 if (*endptr != '\0')
1109 WIFI_LOG(WIFI_WARN, "Further characters after number in subnet_mask: %s\n", endptr);
1111 if (val < 0 || val > 128) {
1112 WIFI_LOG(WIFI_ERROR, "invalid subnet mask");
1113 __NETWORK_CAPI_FUNC_EXIT__;
1114 return WIFI_MANAGER_ERROR_INVALID_PARAMETER;
1117 profile_info->net_info.PrefixLen6 = val;
1121 if (subnet_mask == NULL)
1122 profile_info->net_info.SubnetMask.Data.Ipv4.s_addr = 0;
1123 else if (inet_pton(AF_INET, subnet_mask,
1124 &(profile_info->net_info.SubnetMask.Data.Ipv4)) < 1) {
1125 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1126 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1129 profile_info->net_info.PrefixLen = __ap_convert_netmask_to_prefix_len(subnet_mask);
1132 __NETWORK_CAPI_FUNC_EXIT__;
1134 return WIFI_MANAGER_ERROR_NONE;
1137 EXPORT_API int wifi_manager_ap_get_prefix_length(wifi_manager_ap_h ap,
1138 wifi_manager_address_family_e address_family, int *prefix_len)
1140 __NETWORK_CAPI_FUNC_ENTER__;
1142 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1144 if (_wifi_check_ap_validity(ap) == false ||
1145 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
1146 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6) ||
1147 prefix_len == NULL) {
1148 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1149 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1150 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1153 net_profile_info_s *profile_info = ap;
1155 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4)
1156 *prefix_len = profile_info->net_info.PrefixLen;
1157 else if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV6)
1158 *prefix_len = profile_info->net_info.PrefixLen6;
1160 __NETWORK_CAPI_FUNC_EXIT__;
1162 return WIFI_MANAGER_ERROR_NONE;
1165 EXPORT_API int wifi_manager_ap_set_prefix_length(wifi_manager_ap_h ap,
1166 wifi_manager_address_family_e address_family, int prefix_len)
1168 __NETWORK_CAPI_FUNC_ENTER__;
1170 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1172 if (_wifi_check_ap_validity(ap) == false ||
1173 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
1174 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6)) {
1175 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1176 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1177 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1180 net_profile_info_s *profile_info = ap;
1182 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4) {
1183 profile_info->net_info.PrefixLen = prefix_len;
1184 profile_info->net_info.SubnetMask.Data.Ipv4.s_addr =
1185 __ap_convert_prefix_len_to_netmask(prefix_len);
1186 } else if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV6)
1187 profile_info->net_info.PrefixLen6 = prefix_len;
1189 __NETWORK_CAPI_FUNC_EXIT__;
1191 return WIFI_MANAGER_ERROR_NONE;
1194 EXPORT_API int wifi_manager_ap_get_gateway_address(wifi_manager_ap_h ap,
1195 wifi_manager_address_family_e address_family, char **gateway_address)
1197 __NETWORK_CAPI_FUNC_ENTER__;
1199 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1201 if (_wifi_check_ap_validity(ap) == false ||
1202 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
1203 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6) ||
1204 gateway_address == NULL) {
1205 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1206 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1207 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1210 net_profile_info_s *profile_info = ap;
1212 /* Based on the family of address provided, gateway should be set.
1213 * For IPv6 address gateway is of form GatewayAddr6 but for IPv4
1214 * gateway is of form GatewayAddr.
1216 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4)
1217 *gateway_address = __ap_convert_ip_to_string(
1218 &profile_info->net_info.GatewayAddr,
1221 *gateway_address = __ap_convert_ip_to_string( //LCOV_EXCL_LINE
1222 &profile_info->net_info.GatewayAddr6,
1225 if (*gateway_address == NULL) {
1226 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1227 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
1230 __NETWORK_CAPI_FUNC_EXIT__;
1232 return WIFI_MANAGER_ERROR_NONE;
1235 EXPORT_API int wifi_manager_ap_set_gateway_address(wifi_manager_ap_h ap,
1236 wifi_manager_address_family_e address_family, const char *gateway_address)
1238 __NETWORK_CAPI_FUNC_ENTER__;
1240 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1242 if (_wifi_check_ap_validity(ap) == false ||
1243 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
1244 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6)) {
1245 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1246 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1247 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1250 net_profile_info_s *profile_info = ap;
1251 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV6) {
1253 if (gateway_address == NULL)
1254 inet_pton(AF_INET6, "::",
1255 &profile_info->net_info.GatewayAddr6.Data.Ipv6);
1256 else if (inet_pton(AF_INET6, gateway_address,
1257 &profile_info->net_info.GatewayAddr6.Data.Ipv6) < 1) {
1258 __NETWORK_CAPI_FUNC_EXIT__;
1259 return WIFI_MANAGER_ERROR_INVALID_PARAMETER;
1263 if (gateway_address == NULL)
1264 profile_info->net_info.GatewayAddr.Data.Ipv4.s_addr = 0;
1265 else if (inet_pton(AF_INET, gateway_address,
1266 &profile_info->net_info.GatewayAddr.Data.Ipv4) < 1) {
1267 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1268 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1272 __NETWORK_CAPI_FUNC_EXIT__;
1274 return WIFI_MANAGER_ERROR_NONE;
1278 EXPORT_API int wifi_manager_ap_get_dhcp_server_address(wifi_manager_ap_h ap,
1279 wifi_manager_address_family_e address_family, char** dhcp_server)
1281 __NETWORK_CAPI_FUNC_ENTER__;
1283 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1285 if (_wifi_check_ap_validity(ap) == false ||
1286 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
1287 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6) ||
1288 dhcp_server == NULL) {
1289 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1290 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1291 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1294 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV6) {
1295 WIFI_LOG(WIFI_ERROR, "Not supported"); //LCOV_EXCL_LINE
1296 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1297 return WIFI_MANAGER_ERROR_NOT_SUPPORTED; //LCOV_EXCL_LINE
1300 net_profile_info_s *profile_info = ap;
1302 WIFI_LOG(WIFI_INFO, "IP Config %d, DHCP Server Address %s",
1303 profile_info->net_info.IpConfigType,
1304 profile_info->net_info.BServerAddr ? "TRUE" : "FALSE");
1306 *dhcp_server = __ap_convert_ip_to_string(
1307 &profile_info->net_info.ServerAddr,
1310 if (*dhcp_server == NULL) {
1311 WIFI_LOG(WIFI_ERROR, "Out of memory"); //LCOV_EXCL_LINE
1312 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1313 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
1316 __NETWORK_CAPI_FUNC_EXIT__;
1318 return WIFI_MANAGER_ERROR_NONE;
1322 EXPORT_API int wifi_manager_ap_get_dhcp_lease_duration(wifi_manager_ap_h ap,
1323 wifi_manager_address_family_e address_family, int* dhcp_lease_duration)
1325 __NETWORK_CAPI_FUNC_ENTER__;
1327 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1329 if (_wifi_check_ap_validity(ap) == false ||
1330 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
1331 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6) ||
1332 dhcp_lease_duration == NULL) {
1333 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1334 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1335 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1338 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV6) {
1339 WIFI_LOG(WIFI_ERROR, "Not supported"); //LCOV_EXCL_LINE
1340 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1341 return WIFI_MANAGER_ERROR_NOT_SUPPORTED; //LCOV_EXCL_LINE
1344 net_profile_info_s *profile_info = ap;
1345 net_dev_info_s *net_info = &profile_info->net_info;
1347 WIFI_LOG(WIFI_INFO, "DHCP lease duration %d", net_info->DHCPLeaseDuration);
1349 *dhcp_lease_duration = net_info->DHCPLeaseDuration;
1351 __NETWORK_CAPI_FUNC_EXIT__;
1353 return WIFI_MANAGER_ERROR_NONE;
1356 EXPORT_API int wifi_manager_ap_get_proxy_address(wifi_manager_ap_h ap,
1357 wifi_manager_address_family_e address_family, char **proxy_address)
1359 __NETWORK_CAPI_FUNC_ENTER__;
1361 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1363 if (_wifi_check_ap_validity(ap) == false ||
1364 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
1365 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6) ||
1366 proxy_address == NULL) {
1367 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1368 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1369 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1372 net_profile_info_s *profile_info = ap;
1373 *proxy_address = g_strdup(profile_info->net_info.ProxyAddr);
1374 if (*proxy_address == NULL) {
1375 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1376 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
1379 __NETWORK_CAPI_FUNC_EXIT__;
1381 return WIFI_MANAGER_ERROR_NONE;
1384 EXPORT_API int wifi_manager_ap_set_proxy_address(wifi_manager_ap_h ap,
1385 wifi_manager_address_family_e address_family, const char *proxy_address)
1387 __NETWORK_CAPI_FUNC_ENTER__;
1389 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1391 if (_wifi_check_ap_validity(ap) == false ||
1392 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
1393 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6)) {
1394 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1395 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1396 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1399 net_profile_info_s *profile_info = ap;
1401 if (proxy_address == NULL)
1402 profile_info->net_info.ProxyAddr[0] = '\0';
1404 g_strlcpy(profile_info->net_info.ProxyAddr,
1405 proxy_address, NET_PROXY_LEN_MAX+1);
1407 __NETWORK_CAPI_FUNC_EXIT__;
1409 return WIFI_MANAGER_ERROR_NONE;
1412 EXPORT_API int wifi_manager_ap_get_proxy_type(wifi_manager_ap_h ap,
1413 wifi_manager_proxy_type_e *proxy_type)
1415 __NETWORK_CAPI_FUNC_ENTER__;
1417 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1419 if (_wifi_check_ap_validity(ap) == false || proxy_type == NULL) {
1420 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1421 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1422 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1425 net_profile_info_s *profile_info = ap;
1428 switch (profile_info->net_info.ProxyMethod) {
1429 case NET_PROXY_TYPE_DIRECT:
1430 *proxy_type = WIFI_MANAGER_PROXY_TYPE_DIRECT;
1432 case NET_PROXY_TYPE_AUTO:
1433 *proxy_type = WIFI_MANAGER_PROXY_TYPE_AUTO;
1435 case NET_PROXY_TYPE_MANUAL:
1436 *proxy_type = WIFI_MANAGER_PROXY_TYPE_MANUAL;
1438 case NET_PROXY_TYPE_UNKNOWN:
1439 *proxy_type = WIFI_MANAGER_PROXY_TYPE_DIRECT;
1442 __NETWORK_CAPI_FUNC_EXIT__;
1443 return WIFI_MANAGER_ERROR_OPERATION_FAILED;
1447 __NETWORK_CAPI_FUNC_EXIT__;
1449 return WIFI_MANAGER_ERROR_NONE;
1452 EXPORT_API int wifi_manager_ap_set_proxy_type(wifi_manager_ap_h ap,
1453 wifi_manager_proxy_type_e proxy_type)
1455 __NETWORK_CAPI_FUNC_ENTER__;
1457 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1459 if (_wifi_check_ap_validity(ap) == false) {
1460 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1461 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1462 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1465 net_profile_info_s *profile_info = ap;
1468 switch (proxy_type) {
1469 case WIFI_MANAGER_PROXY_TYPE_DIRECT:
1470 profile_info->net_info.ProxyMethod = NET_PROXY_TYPE_DIRECT;
1472 case WIFI_MANAGER_PROXY_TYPE_AUTO:
1473 profile_info->net_info.ProxyAddr[0] = '\0';
1474 profile_info->net_info.ProxyMethod = NET_PROXY_TYPE_AUTO;
1476 case WIFI_MANAGER_PROXY_TYPE_MANUAL:
1477 profile_info->net_info.ProxyAddr[0] = '\0';
1478 profile_info->net_info.ProxyMethod = NET_PROXY_TYPE_MANUAL;
1479 g_strlcpy(profile_info->net_info.ProxyAddr, "0.0.0.0:8080", 15);
1482 __NETWORK_CAPI_FUNC_EXIT__;
1483 return WIFI_MANAGER_ERROR_INVALID_PARAMETER;
1487 __NETWORK_CAPI_FUNC_EXIT__;
1489 return WIFI_MANAGER_ERROR_NONE;
1492 EXPORT_API int wifi_manager_ap_get_dns_config_type(wifi_manager_ap_h ap,
1493 wifi_manager_address_family_e address_family, wifi_manager_dns_config_type_e *type)
1495 __NETWORK_CAPI_FUNC_ENTER__;
1497 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1499 if (_wifi_check_ap_validity(ap) == false ||
1500 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
1501 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6) || type == NULL) {
1502 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1503 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1504 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1507 net_profile_info_s *profile_info = ap;
1508 net_dns_config_type_e dns_type;
1510 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4)
1511 dns_type = profile_info->net_info.DnsConfigType;
1513 dns_type = profile_info->net_info.DnsConfigType6;
1516 case NET_DNS_CONFIG_TYPE_STATIC:
1517 *type = WIFI_MANAGER_DNS_CONFIG_TYPE_STATIC;
1519 case NET_DNS_CONFIG_TYPE_DYNAMIC:
1520 *type = WIFI_MANAGER_DNS_CONFIG_TYPE_DYNAMIC;
1523 *type = WIFI_MANAGER_DNS_CONFIG_TYPE_NONE;
1527 __NETWORK_CAPI_FUNC_EXIT__;
1529 return WIFI_MANAGER_ERROR_NONE;
1532 EXPORT_API int wifi_manager_ap_set_dns_config_type(wifi_manager_ap_h ap,
1533 wifi_manager_address_family_e address_family, wifi_manager_dns_config_type_e type)
1535 __NETWORK_CAPI_FUNC_ENTER__;
1537 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1539 if (_wifi_check_ap_validity(ap) == false ||
1540 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
1541 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6) ||
1542 (type != WIFI_MANAGER_DNS_CONFIG_TYPE_STATIC &&
1543 type != WIFI_MANAGER_DNS_CONFIG_TYPE_DYNAMIC)) {
1544 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1545 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1546 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1549 net_profile_info_s *profile_info = ap;
1550 net_dns_config_type_e *dns_type;
1552 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4) {
1553 dns_type = &profile_info->net_info.DnsConfigType;
1555 profile_info->net_info.DnsAddr[0].Data.Ipv4.s_addr = 0;
1556 profile_info->net_info.DnsAddr[1].Data.Ipv4.s_addr = 0;
1560 dns_type = &profile_info->net_info.DnsConfigType6;
1562 inet_pton(AF_INET6, "::",
1563 &profile_info->net_info.DnsAddr6[0].Data.Ipv6);
1564 inet_pton(AF_INET6, "::",
1565 &profile_info->net_info.DnsAddr6[1].Data.Ipv6);
1570 __NETWORK_CAPI_FUNC_EXIT__;
1572 return WIFI_MANAGER_ERROR_NONE;
1575 EXPORT_API int wifi_manager_ap_get_dns_address(wifi_manager_ap_h ap,
1576 int order, wifi_manager_address_family_e address_family, char **dns_address)
1578 __NETWORK_CAPI_FUNC_ENTER__;
1580 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1582 if (_wifi_check_ap_validity(ap) == false ||
1583 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
1584 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6) ||
1585 dns_address == NULL ||
1587 order > NET_DNS_ADDR_MAX) {
1588 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1589 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1590 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1593 net_profile_info_s *profile_info = ap;
1595 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4)
1596 *dns_address = __ap_convert_ip_to_string(
1597 &profile_info->net_info.DnsAddr[order-1],
1600 *dns_address = __ap_convert_ip_to_string( //LCOV_EXCL_LINE
1601 &profile_info->net_info.DnsAddr6[order-1],
1604 if (*dns_address == NULL) {
1605 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1606 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
1609 __NETWORK_CAPI_FUNC_EXIT__;
1611 return WIFI_MANAGER_ERROR_NONE;
1614 EXPORT_API int wifi_manager_ap_set_dns_address(wifi_manager_ap_h ap,
1615 int order, wifi_manager_address_family_e address_family, const char *dns_address)
1617 __NETWORK_CAPI_FUNC_ENTER__;
1619 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1621 if (_wifi_check_ap_validity(ap) == false ||
1622 (address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV4 &&
1623 address_family != WIFI_MANAGER_ADDRESS_FAMILY_IPV6) ||
1625 order > NET_DNS_ADDR_MAX) {
1626 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1627 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1628 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1631 net_profile_info_s *profile_info = ap;
1633 if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV6) {
1635 profile_info->net_info.DnsAddr6[order-1].Type =
1637 if (dns_address == NULL)
1638 inet_pton(AF_INET6, "::",
1639 &profile_info->net_info.DnsAddr6[order-1].Data.Ipv6);
1640 else if (inet_pton(AF_INET6, dns_address,
1641 &profile_info->net_info.DnsAddr6[order-1].Data.Ipv6) < 1) {
1642 __NETWORK_CAPI_FUNC_EXIT__;
1643 return WIFI_MANAGER_ERROR_INVALID_PARAMETER;
1646 if (profile_info->net_info.DnsCount6 < order)
1647 profile_info->net_info.DnsCount6 = order;
1650 profile_info->net_info.DnsAddr[order-1].Type =
1652 if (dns_address == NULL)
1653 profile_info->net_info.DnsAddr[order-1].Data.Ipv4.s_addr = 0;
1654 else if (inet_pton(AF_INET, dns_address,
1655 &(profile_info->net_info.DnsAddr[order-1].Data.Ipv4)) < 1) {
1656 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1657 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1660 if (profile_info->net_info.DnsCount < order)
1661 profile_info->net_info.DnsCount = order;
1664 __NETWORK_CAPI_FUNC_EXIT__;
1666 return WIFI_MANAGER_ERROR_NONE;
1669 EXPORT_API int wifi_manager_ap_get_countrycode(wifi_manager_ap_h ap,
1670 char **country_code)
1672 __NETWORK_CAPI_FUNC_ENTER__;
1674 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1676 if (_wifi_check_ap_validity(ap) == false || country_code == NULL) {
1677 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1678 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1679 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1682 net_profile_info_s *profile_info = ap;
1683 if (profile_info->country_code[0] != '\0') {
1684 *country_code = strdup(profile_info->country_code);
1685 if (*country_code == NULL) {
1686 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1687 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
1690 *country_code = NULL;
1692 __NETWORK_CAPI_FUNC_EXIT__;
1694 return WIFI_MANAGER_ERROR_NONE;
1697 EXPORT_API int wifi_manager_foreach_found_bssid(wifi_manager_ap_h ap,
1698 wifi_manager_found_bssid_cb callback, void *user_data)
1700 __NETWORK_CAPI_FUNC_ENTER__;
1702 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1704 if (_wifi_check_ap_validity(ap) == false || callback == NULL) {
1705 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1706 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1707 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1710 net_profile_info_s *profile_info = ap;
1714 for (list = profile_info->bssid_list; list; list = list->next) {
1715 net_profile_bssid_list_s *bssid_list = (net_profile_bssid_list_s *)list->data;
1717 rv = callback((const char *)bssid_list->bssid, (bssid_list->strength - 120), bssid_list->frequency, user_data);
1722 __NETWORK_CAPI_FUNC_EXIT__;
1723 return WIFI_MANAGER_ERROR_NONE;
1726 /* Wi-Fi security information ************************************************/
1727 EXPORT_API int wifi_manager_ap_get_security_type(wifi_manager_ap_h ap,
1728 wifi_manager_security_type_e *type)
1730 /* __NETWORK_CAPI_FUNC_ENTER__; */
1732 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1734 if (_wifi_check_ap_validity(ap) == false || type == NULL) {
1735 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1736 /* __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE */
1737 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1740 net_profile_info_s *profile_info = ap;
1743 switch (profile_info->security_info.sec_mode) {
1744 case WLAN_SEC_MODE_NONE:
1745 *type = WIFI_MANAGER_SECURITY_TYPE_NONE;
1747 case WLAN_SEC_MODE_WEP:
1748 *type = WIFI_MANAGER_SECURITY_TYPE_WEP;
1750 case WLAN_SEC_MODE_IEEE8021X:
1751 *type = WIFI_MANAGER_SECURITY_TYPE_EAP;
1753 case WLAN_SEC_MODE_WPA_PSK:
1754 *type = WIFI_MANAGER_SECURITY_TYPE_WPA_PSK;
1756 case WLAN_SEC_MODE_WPA2_PSK:
1757 *type = WIFI_MANAGER_SECURITY_TYPE_WPA2_PSK;
1759 case WLAN_SEC_MODE_WPA_FT_PSK:
1760 *type = WIFI_MANAGER_SECURITY_TYPE_WPA_FT_PSK;
1762 case WLAN_SEC_MODE_SAE:
1763 *type = WIFI_MANAGER_SECURITY_TYPE_SAE;
1765 case WLAN_SEC_MODE_OWE:
1766 *type = WIFI_MANAGER_SECURITY_TYPE_OWE;
1768 case WLAN_SEC_MODE_DPP:
1769 *type = WIFI_MANAGER_SECURITY_TYPE_DPP;
1772 /* __NETWORK_CAPI_FUNC_EXIT__; */
1773 return WIFI_MANAGER_ERROR_OPERATION_FAILED;
1777 /* __NETWORK_CAPI_FUNC_EXIT__; */
1779 return WIFI_MANAGER_ERROR_NONE;
1782 EXPORT_API int wifi_manager_ap_set_security_type(wifi_manager_ap_h ap,
1783 wifi_manager_security_type_e type)
1785 __NETWORK_CAPI_FUNC_ENTER__;
1787 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1789 if (_wifi_check_ap_validity(ap) == false) {
1790 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1791 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1792 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1795 net_profile_info_s *profile_info = ap;
1799 case WIFI_MANAGER_SECURITY_TYPE_NONE:
1800 profile_info->security_info.sec_mode = WLAN_SEC_MODE_NONE;
1802 case WIFI_MANAGER_SECURITY_TYPE_WEP:
1803 profile_info->security_info.sec_mode = WLAN_SEC_MODE_WEP;
1805 case WIFI_MANAGER_SECURITY_TYPE_EAP:
1806 profile_info->security_info.sec_mode = WLAN_SEC_MODE_IEEE8021X;
1808 case WIFI_MANAGER_SECURITY_TYPE_WPA_PSK:
1809 profile_info->security_info.sec_mode = WLAN_SEC_MODE_WPA_PSK;
1811 case WIFI_MANAGER_SECURITY_TYPE_WPA2_PSK:
1812 profile_info->security_info.sec_mode = WLAN_SEC_MODE_WPA2_PSK;
1814 case WIFI_MANAGER_SECURITY_TYPE_WPA_FT_PSK:
1815 profile_info->security_info.sec_mode = WLAN_SEC_MODE_WPA_FT_PSK;
1817 case WIFI_MANAGER_SECURITY_TYPE_SAE:
1818 profile_info->security_info.sec_mode = WLAN_SEC_MODE_SAE;
1820 case WIFI_MANAGER_SECURITY_TYPE_OWE:
1821 profile_info->security_info.sec_mode = WLAN_SEC_MODE_OWE;
1823 case WIFI_MANAGER_SECURITY_TYPE_DPP:
1824 profile_info->security_info.sec_mode = WLAN_SEC_MODE_DPP;
1827 __NETWORK_CAPI_FUNC_EXIT__;
1828 return WIFI_MANAGER_ERROR_INVALID_PARAMETER;
1832 _wifi_set_profile_name_to_ap(profile_info);
1834 __NETWORK_CAPI_FUNC_EXIT__;
1836 return WIFI_MANAGER_ERROR_NONE;
1840 EXPORT_API int wifi_manager_ap_is_security_type_supported(wifi_manager_ap_h ap,
1841 wifi_manager_security_type_e type, bool *supported)
1843 /* __NETWORK_CAPI_FUNC_ENTER__; */
1845 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1847 if (_wifi_check_ap_validity(ap) == false ||
1848 supported == NULL ||
1849 type < WIFI_MANAGER_SECURITY_TYPE_NONE ||
1850 type > WIFI_MANAGER_SECURITY_TYPE_DPP) {
1851 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1852 /* __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE */
1853 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1856 net_profile_info_s *profile_info = ap;
1858 if (profile_info->security_info.sec_list[type])
1863 /* __NETWORK_CAPI_FUNC_EXIT__; */
1865 return WIFI_MANAGER_ERROR_NONE;
1868 EXPORT_API int wifi_manager_ap_get_encryption_type(wifi_manager_ap_h ap,
1869 wifi_manager_encryption_type_e *type)
1871 __NETWORK_CAPI_FUNC_ENTER__;
1873 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1875 if (_wifi_check_ap_validity(ap) == false || type == NULL) {
1876 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1877 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1878 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1881 net_profile_info_s *profile_info = ap;
1884 switch (profile_info->security_info.enc_mode) {
1885 case WLAN_ENC_MODE_NONE:
1886 *type = WIFI_MANAGER_ENCRYPTION_TYPE_NONE;
1888 case WLAN_ENC_MODE_WEP:
1889 *type = WIFI_MANAGER_ENCRYPTION_TYPE_WEP;
1891 case WLAN_ENC_MODE_TKIP:
1892 *type = WIFI_MANAGER_ENCRYPTION_TYPE_TKIP;
1894 case WLAN_ENC_MODE_AES:
1895 *type = WIFI_MANAGER_ENCRYPTION_TYPE_AES;
1897 case WLAN_ENC_MODE_TKIP_AES_MIXED:
1898 *type = WIFI_MANAGER_ENCRYPTION_TYPE_TKIP_AES_MIXED;
1901 __NETWORK_CAPI_FUNC_EXIT__;
1902 return WIFI_MANAGER_ERROR_OPERATION_FAILED;
1906 __NETWORK_CAPI_FUNC_EXIT__;
1908 return WIFI_MANAGER_ERROR_NONE;
1911 EXPORT_API int wifi_manager_ap_set_encryption_type(wifi_manager_ap_h ap,
1912 wifi_manager_encryption_type_e type)
1914 __NETWORK_CAPI_FUNC_ENTER__;
1916 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1918 if (_wifi_check_ap_validity(ap) == false) {
1919 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1920 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1921 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1924 net_profile_info_s *profile_info = ap;
1928 case WIFI_MANAGER_ENCRYPTION_TYPE_NONE:
1929 profile_info->security_info.enc_mode = WLAN_ENC_MODE_NONE;
1931 case WIFI_MANAGER_ENCRYPTION_TYPE_WEP:
1932 profile_info->security_info.enc_mode = WLAN_ENC_MODE_WEP;
1934 case WIFI_MANAGER_ENCRYPTION_TYPE_TKIP:
1935 profile_info->security_info.enc_mode = WLAN_ENC_MODE_TKIP;
1937 case WIFI_MANAGER_ENCRYPTION_TYPE_AES:
1938 profile_info->security_info.enc_mode = WLAN_ENC_MODE_AES;
1940 case WIFI_MANAGER_ENCRYPTION_TYPE_TKIP_AES_MIXED:
1941 profile_info->security_info.enc_mode = WLAN_ENC_MODE_TKIP_AES_MIXED;
1944 __NETWORK_CAPI_FUNC_EXIT__;
1945 return WIFI_MANAGER_ERROR_INVALID_PARAMETER;
1949 __NETWORK_CAPI_FUNC_EXIT__;
1951 return WIFI_MANAGER_ERROR_NONE;
1954 EXPORT_API int wifi_manager_ap_is_passphrase_required(wifi_manager_ap_h ap,
1957 __NETWORK_CAPI_FUNC_ENTER__;
1959 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1961 if (_wifi_check_ap_validity(ap) == false || required == NULL) {
1962 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
1963 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
1964 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
1967 net_profile_info_s *profile_info = ap;
1969 if (profile_info->Favourite) {
1971 __NETWORK_CAPI_FUNC_EXIT__;
1972 return WIFI_MANAGER_ERROR_NONE;
1976 switch (profile_info->security_info.sec_mode) {
1977 case WLAN_SEC_MODE_NONE:
1978 case WLAN_SEC_MODE_OWE:
1979 case WLAN_SEC_MODE_DPP:
1982 case WLAN_SEC_MODE_WEP:
1983 case WLAN_SEC_MODE_IEEE8021X:
1984 case WLAN_SEC_MODE_WPA_PSK:
1985 case WLAN_SEC_MODE_WPA2_PSK:
1986 case WLAN_SEC_MODE_WPA_FT_PSK:
1987 case WLAN_SEC_MODE_SAE:
1991 __NETWORK_CAPI_FUNC_EXIT__;
1992 return WIFI_MANAGER_ERROR_OPERATION_FAILED;
1996 __NETWORK_CAPI_FUNC_EXIT__;
1998 return WIFI_MANAGER_ERROR_NONE;
2001 EXPORT_API int wifi_manager_ap_set_passphrase(wifi_manager_ap_h ap, const char *passphrase)
2003 __NETWORK_CAPI_FUNC_ENTER__;
2005 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2007 if (_wifi_check_ap_validity(ap) == false || passphrase == NULL) {
2008 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2009 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2010 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2013 net_profile_info_s *profile_info = ap;
2016 switch (profile_info->security_info.sec_mode) {
2017 case WLAN_SEC_MODE_WEP:
2018 g_strlcpy(profile_info->security_info.authentication.wep.wepKey,
2019 passphrase, NET_WLAN_MAX_WEP_KEY_LEN+1);
2021 case WLAN_SEC_MODE_WPA_PSK:
2022 case WLAN_SEC_MODE_WPA2_PSK:
2023 case WLAN_SEC_MODE_WPA_FT_PSK:
2024 g_strlcpy(profile_info->security_info.authentication.psk.pskKey,
2025 passphrase, NET_WLAN_MAX_PSK_PASSPHRASE_LEN+1);
2027 case WLAN_SEC_MODE_SAE:
2028 g_strlcpy(profile_info->security_info.authentication.sae.saeKey,
2029 passphrase, NET_WLAN_MAX_SAE_PASSPHRASE_LEN+1);
2031 case WLAN_SEC_MODE_NONE:
2032 case WLAN_SEC_MODE_IEEE8021X:
2033 case WLAN_SEC_MODE_OWE:
2035 __NETWORK_CAPI_FUNC_EXIT__;
2036 return WIFI_MANAGER_ERROR_OPERATION_FAILED;
2040 __NETWORK_CAPI_FUNC_EXIT__;
2042 return WIFI_MANAGER_ERROR_NONE;
2045 EXPORT_API int wifi_manager_ap_is_wps_supported(wifi_manager_ap_h ap, bool *supported)
2047 /* __NETWORK_CAPI_FUNC_ENTER__; */
2049 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2051 if (_wifi_check_ap_validity(ap) == false || supported == NULL) {
2052 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2053 /* __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE */
2054 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2057 net_profile_info_s *profile_info = ap;
2059 if (profile_info->security_info.wps_support)
2064 /* __NETWORK_CAPI_FUNC_EXIT__; */
2065 return WIFI_MANAGER_ERROR_NONE;
2068 EXPORT_API int wifi_manager_ap_is_hidden(wifi_manager_ap_h ap, bool *is_hidden)
2070 /* __NETWORK_CAPI_FUNC_ENTER__; */
2072 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2074 if (_wifi_check_ap_validity(ap) == false || is_hidden == NULL) {
2075 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2076 /* __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE */
2077 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2080 net_profile_info_s *profile_info = ap;
2082 if (profile_info->ap_hidden_status)
2087 /* __NETWORK_CAPI_FUNC_EXIT__; */
2088 return WIFI_MANAGER_ERROR_NONE;
2091 EXPORT_API int wifi_manager_ap_is_pmf_required(wifi_manager_ap_h ap, bool *required)
2093 /* __NETWORK_CAPI_FUNC_ENTER__; */
2095 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2097 if (_wifi_check_ap_validity(ap) == false || required == NULL) {
2098 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2099 /* __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE */
2100 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2103 net_profile_info_s *profile_info = ap;
2105 if (profile_info->pmf_required)
2110 /* __NETWORK_CAPI_FUNC_EXIT__; */
2111 return WIFI_MANAGER_ERROR_NONE;
2114 /* Wi-Fi EAP *****************************************************************/
2115 EXPORT_API int wifi_manager_ap_set_eap_passphrase(wifi_manager_ap_h ap,
2116 const char *user_name, const char *password)
2118 __NETWORK_CAPI_FUNC_ENTER__;
2120 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2122 if (_wifi_check_ap_validity(ap) == false || (user_name == NULL && password == NULL)) {
2123 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2124 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2125 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2128 net_profile_info_s *profile_info = ap;
2129 if (profile_info->security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X) {
2130 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2131 return WIFI_MANAGER_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE
2135 g_strlcpy(profile_info->security_info.authentication.eap.username,
2136 user_name, NET_WLAN_USERNAME_LEN+1);
2139 g_strlcpy(profile_info->security_info.authentication.eap.password,
2140 password, NET_WLAN_PASSWORD_LEN+1);
2142 __NETWORK_CAPI_FUNC_EXIT__;
2144 return WIFI_MANAGER_ERROR_NONE;
2147 EXPORT_API int wifi_manager_ap_get_eap_passphrase(wifi_manager_ap_h ap,
2148 char **user_name, bool *is_password_set)
2150 __NETWORK_CAPI_FUNC_ENTER__;
2152 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2154 if (_wifi_check_ap_validity(ap) == false || user_name == NULL || is_password_set == NULL) {
2155 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2156 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2157 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2160 net_profile_info_s *profile_info = ap;
2161 if (profile_info->security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X) {
2162 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2163 return WIFI_MANAGER_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE
2166 *user_name = g_strdup(profile_info->security_info.authentication.eap.username);
2167 if (*user_name == NULL) {
2168 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2169 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
2172 if (strlen(profile_info->security_info.authentication.eap.password) > 0)
2173 *is_password_set = true;
2175 *is_password_set = false;
2177 __NETWORK_CAPI_FUNC_EXIT__;
2179 return WIFI_MANAGER_ERROR_NONE;
2182 EXPORT_API int wifi_manager_ap_set_eap_anonymous_identity(wifi_manager_ap_h ap, const char *anonymous_identity)
2184 __NETWORK_CAPI_FUNC_ENTER__;
2186 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2188 if (_wifi_check_ap_validity(ap) == false || anonymous_identity == NULL) {
2189 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2190 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2191 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2194 net_profile_info_s *profile_info = ap;
2195 if (profile_info->security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X) {
2196 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2197 return WIFI_MANAGER_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE
2200 g_strlcpy(profile_info->security_info.authentication.eap.anonymous_identity,
2201 anonymous_identity, NET_WLAN_USERNAME_LEN+1);
2203 __NETWORK_CAPI_FUNC_EXIT__;
2205 return WIFI_MANAGER_ERROR_NONE;
2208 EXPORT_API int wifi_manager_ap_get_eap_anonymous_identity(wifi_manager_ap_h ap, char **anonymous_identity)
2210 __NETWORK_CAPI_FUNC_ENTER__;
2212 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2214 if (_wifi_check_ap_validity(ap) == false || anonymous_identity == NULL) {
2215 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2216 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2217 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2220 net_profile_info_s *profile_info = ap;
2221 if (profile_info->security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X) {
2222 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2223 return WIFI_MANAGER_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE
2226 *anonymous_identity = strdup(profile_info->security_info.authentication.eap.anonymous_identity);
2227 if (*anonymous_identity == NULL) {
2228 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2229 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
2232 __NETWORK_CAPI_FUNC_EXIT__;
2234 return WIFI_MANAGER_ERROR_NONE;
2237 EXPORT_API int wifi_manager_ap_get_eap_ca_cert_file(wifi_manager_ap_h ap, char **file)
2239 __NETWORK_CAPI_FUNC_ENTER__;
2241 net_profile_info_s *profile_info = NULL;
2243 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2245 if (_wifi_check_ap_validity(ap) == false || file == NULL) {
2246 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2247 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2248 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2251 profile_info = (net_profile_info_s *)ap;
2252 if (profile_info->security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X) {
2253 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2254 return WIFI_MANAGER_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE
2257 *file = g_strdup(profile_info->security_info.authentication.eap.ca_cert_filename);
2258 if (*file == NULL) {
2259 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2260 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
2263 __NETWORK_CAPI_FUNC_EXIT__;
2265 return WIFI_MANAGER_ERROR_NONE;
2268 EXPORT_API int wifi_manager_ap_set_eap_ca_cert_file(wifi_manager_ap_h ap, const char *file)
2270 __NETWORK_CAPI_FUNC_ENTER__;
2272 net_profile_info_s *profile_info = NULL;
2274 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2276 if (_wifi_check_ap_validity(ap) == false || file == NULL) {
2277 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2278 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2279 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2282 profile_info = (net_profile_info_s *)ap;
2283 if (profile_info->security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X) {
2284 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2285 return WIFI_MANAGER_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE
2288 g_strlcpy(profile_info->security_info.authentication.eap.ca_cert_filename,
2289 file, NET_WLAN_CA_CERT_FILENAME_LEN+1);
2291 __NETWORK_CAPI_FUNC_EXIT__;
2293 return WIFI_MANAGER_ERROR_NONE;
2296 EXPORT_API int wifi_manager_ap_get_eap_client_cert_file(wifi_manager_ap_h ap, char **file)
2298 __NETWORK_CAPI_FUNC_ENTER__;
2300 net_profile_info_s *profile_info = NULL;
2302 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2304 if (_wifi_check_ap_validity(ap) == false || file == NULL) {
2305 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2306 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2307 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2310 profile_info = (net_profile_info_s *)ap;
2311 if (profile_info->security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X) {
2312 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2313 return WIFI_MANAGER_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE
2316 *file = g_strdup(profile_info->security_info.authentication.eap.client_cert_filename);
2317 if (*file == NULL) {
2318 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2319 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
2322 __NETWORK_CAPI_FUNC_EXIT__;
2324 return WIFI_MANAGER_ERROR_NONE;
2327 EXPORT_API int wifi_manager_ap_set_eap_client_cert_file(wifi_manager_ap_h ap,
2330 __NETWORK_CAPI_FUNC_ENTER__;
2332 net_profile_info_s *profile_info = NULL;
2334 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2336 if (_wifi_check_ap_validity(ap) == false || file == NULL) {
2337 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2338 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2339 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2342 profile_info = (net_profile_info_s *)ap;
2343 if (profile_info->security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X) {
2344 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2345 return WIFI_MANAGER_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE
2348 g_strlcpy(profile_info->security_info.authentication.eap.client_cert_filename,
2349 file, NET_WLAN_CLIENT_CERT_FILENAME_LEN+1);
2351 __NETWORK_CAPI_FUNC_EXIT__;
2353 return WIFI_MANAGER_ERROR_NONE;
2356 EXPORT_API int wifi_manager_ap_get_eap_private_key_file(wifi_manager_ap_h ap, char **file)
2358 __NETWORK_CAPI_FUNC_ENTER__;
2360 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2362 if (_wifi_check_ap_validity(ap) == false || file == NULL) {
2363 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2364 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2365 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2368 net_profile_info_s *profile_info = ap;
2369 if (profile_info->security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X) {
2370 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2371 return WIFI_MANAGER_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE
2374 *file = g_strdup(profile_info->security_info.authentication.eap.private_key_filename);
2375 if (*file == NULL) {
2376 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2377 return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
2380 __NETWORK_CAPI_FUNC_EXIT__;
2382 return WIFI_MANAGER_ERROR_NONE;
2385 EXPORT_API int wifi_manager_ap_set_eap_private_key_info(wifi_manager_ap_h ap,
2386 const char *file, const char *password)
2388 __NETWORK_CAPI_FUNC_ENTER__;
2390 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2392 if (_wifi_check_ap_validity(ap) == false || file == NULL) {
2393 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2394 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2395 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2398 net_profile_info_s *profile_info = ap;
2399 if (profile_info->security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X) {
2400 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2401 return WIFI_MANAGER_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE
2404 g_strlcpy(profile_info->security_info.authentication.eap.private_key_filename,
2405 file, NET_WLAN_PRIVATE_KEY_FILENAME_LEN+1);
2408 g_strlcpy(profile_info->security_info.authentication.eap.private_key_passwd,
2409 password, NET_WLAN_PRIVATE_KEY_PASSWD_LEN+1);
2412 __NETWORK_CAPI_FUNC_EXIT__;
2414 return WIFI_MANAGER_ERROR_NONE;
2417 EXPORT_API int wifi_manager_ap_get_eap_type(wifi_manager_ap_h ap,
2418 wifi_manager_eap_type_e *type)
2420 __NETWORK_CAPI_FUNC_ENTER__;
2422 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2424 if (_wifi_check_ap_validity(ap) == false || type == NULL) {
2425 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2426 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2427 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2430 net_profile_info_s *profile_info = ap;
2431 if (profile_info->security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X) {
2432 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2433 return WIFI_MANAGER_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE
2437 switch (profile_info->security_info.authentication.eap.eap_type) {
2438 case WLAN_SEC_EAP_TYPE_PEAP:
2439 *type = WIFI_MANAGER_EAP_TYPE_PEAP;
2441 case WLAN_SEC_EAP_TYPE_TLS:
2442 *type = WIFI_MANAGER_EAP_TYPE_TLS;
2444 case WLAN_SEC_EAP_TYPE_TTLS:
2445 *type = WIFI_MANAGER_EAP_TYPE_TTLS;
2447 case WLAN_SEC_EAP_TYPE_SIM:
2448 *type = WIFI_MANAGER_EAP_TYPE_SIM;
2450 case WLAN_SEC_EAP_TYPE_AKA:
2451 *type = WIFI_MANAGER_EAP_TYPE_AKA;
2453 case WLAN_SEC_EAP_TYPE_AKA_PRIME:
2454 *type = WIFI_MANAGER_EAP_TYPE_AKA_PRIME;
2456 case WLAN_SEC_EAP_TYPE_FAST:
2457 *type = WIFI_MANAGER_EAP_TYPE_FAST;
2459 case WLAN_SEC_EAP_TYPE_PWD:
2460 *type = WIFI_MANAGER_EAP_TYPE_PWD;
2463 __NETWORK_CAPI_FUNC_EXIT__;
2464 return WIFI_MANAGER_ERROR_OPERATION_FAILED;
2468 __NETWORK_CAPI_FUNC_EXIT__;
2470 return WIFI_MANAGER_ERROR_NONE;
2473 EXPORT_API int wifi_manager_ap_set_eap_type(wifi_manager_ap_h ap,
2474 wifi_manager_eap_type_e type)
2476 __NETWORK_CAPI_FUNC_ENTER__;
2478 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2480 if (_wifi_check_ap_validity(ap) == false) {
2481 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2482 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2483 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2486 net_profile_info_s *profile_info = ap;
2487 if (profile_info->security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X) {
2488 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2489 return WIFI_MANAGER_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE
2494 case WIFI_MANAGER_EAP_TYPE_PEAP:
2495 profile_info->security_info.authentication.eap.eap_type = WLAN_SEC_EAP_TYPE_PEAP;
2497 case WIFI_MANAGER_EAP_TYPE_TLS:
2498 profile_info->security_info.authentication.eap.eap_type = WLAN_SEC_EAP_TYPE_TLS;
2500 case WIFI_MANAGER_EAP_TYPE_TTLS:
2501 profile_info->security_info.authentication.eap.eap_type = WLAN_SEC_EAP_TYPE_TTLS;
2503 case WIFI_MANAGER_EAP_TYPE_SIM:
2504 profile_info->security_info.authentication.eap.eap_type = WLAN_SEC_EAP_TYPE_SIM;
2506 case WIFI_MANAGER_EAP_TYPE_AKA:
2507 profile_info->security_info.authentication.eap.eap_type = WLAN_SEC_EAP_TYPE_AKA;
2509 case WIFI_MANAGER_EAP_TYPE_AKA_PRIME:
2510 profile_info->security_info.authentication.eap.eap_type = WLAN_SEC_EAP_TYPE_AKA_PRIME;
2512 case WIFI_MANAGER_EAP_TYPE_FAST:
2513 profile_info->security_info.authentication.eap.eap_type = WLAN_SEC_EAP_TYPE_FAST;
2515 case WIFI_MANAGER_EAP_TYPE_PWD:
2516 profile_info->security_info.authentication.eap.eap_type = WLAN_SEC_EAP_TYPE_PWD;
2519 __NETWORK_CAPI_FUNC_EXIT__;
2520 return WIFI_MANAGER_ERROR_INVALID_PARAMETER;
2524 __NETWORK_CAPI_FUNC_EXIT__;
2526 return WIFI_MANAGER_ERROR_NONE;
2529 EXPORT_API int wifi_manager_ap_get_eap_auth_type(wifi_manager_ap_h ap,
2530 wifi_manager_eap_auth_type_e *type)
2532 __NETWORK_CAPI_FUNC_ENTER__;
2534 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2536 if (_wifi_check_ap_validity(ap) == false || type == NULL) {
2537 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2538 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2539 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2542 net_profile_info_s *profile_info = ap;
2543 if (profile_info->security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X) {
2544 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2545 return WIFI_MANAGER_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE
2549 switch (profile_info->security_info.authentication.eap.eap_auth) {
2550 case WLAN_SEC_EAP_AUTH_NONE:
2551 *type = WIFI_MANAGER_EAP_AUTH_TYPE_NONE;
2553 case WLAN_SEC_EAP_AUTH_PAP:
2554 *type = WIFI_MANAGER_EAP_AUTH_TYPE_PAP;
2556 case WLAN_SEC_EAP_AUTH_MSCHAP:
2557 *type = WIFI_MANAGER_EAP_AUTH_TYPE_MSCHAP;
2559 case WLAN_SEC_EAP_AUTH_MSCHAPV2:
2560 *type = WIFI_MANAGER_EAP_AUTH_TYPE_MSCHAPV2;
2562 case WLAN_SEC_EAP_AUTH_GTC:
2563 *type = WIFI_MANAGER_EAP_AUTH_TYPE_GTC;
2565 case WLAN_SEC_EAP_AUTH_MD5:
2566 *type = WIFI_MANAGER_EAP_AUTH_TYPE_MD5;
2569 __NETWORK_CAPI_FUNC_EXIT__;
2570 return WIFI_MANAGER_ERROR_OPERATION_FAILED;
2574 __NETWORK_CAPI_FUNC_EXIT__;
2576 return WIFI_MANAGER_ERROR_NONE;
2579 EXPORT_API int wifi_manager_ap_set_eap_auth_type(wifi_manager_ap_h ap,
2580 wifi_manager_eap_auth_type_e type)
2582 __NETWORK_CAPI_FUNC_ENTER__;
2584 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2586 if (_wifi_check_ap_validity(ap) == false) {
2587 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2588 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2589 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2592 net_profile_info_s *profile_info = ap;
2593 if (profile_info->security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X) {
2594 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2595 return WIFI_MANAGER_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE
2600 case WIFI_MANAGER_EAP_AUTH_TYPE_NONE:
2601 profile_info->security_info.authentication.eap.eap_auth = WLAN_SEC_EAP_AUTH_NONE;
2603 case WIFI_MANAGER_EAP_AUTH_TYPE_PAP:
2604 profile_info->security_info.authentication.eap.eap_auth = WLAN_SEC_EAP_AUTH_PAP;
2606 case WIFI_MANAGER_EAP_AUTH_TYPE_MSCHAP:
2607 profile_info->security_info.authentication.eap.eap_auth = WLAN_SEC_EAP_AUTH_MSCHAP;
2609 case WIFI_MANAGER_EAP_AUTH_TYPE_MSCHAPV2:
2610 profile_info->security_info.authentication.eap.eap_auth = WLAN_SEC_EAP_AUTH_MSCHAPV2;
2612 case WIFI_MANAGER_EAP_AUTH_TYPE_GTC:
2613 profile_info->security_info.authentication.eap.eap_auth = WLAN_SEC_EAP_AUTH_GTC;
2615 case WIFI_MANAGER_EAP_AUTH_TYPE_MD5:
2616 profile_info->security_info.authentication.eap.eap_auth = WLAN_SEC_EAP_AUTH_MD5;
2619 __NETWORK_CAPI_FUNC_EXIT__;
2620 return WIFI_MANAGER_ERROR_INVALID_PARAMETER;
2624 __NETWORK_CAPI_FUNC_EXIT__;
2626 return WIFI_MANAGER_ERROR_NONE;
2629 EXPORT_API int wifi_manager_ap_get_disconnect_reason(wifi_manager_ap_h ap,
2630 wifi_manager_disconnect_reason_e *disconnect_reason)
2632 __NETWORK_CAPI_FUNC_ENTER__;
2634 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2636 if (_wifi_check_ap_validity(ap) == false || disconnect_reason == NULL) {
2637 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2638 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2639 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2642 net_profile_info_s *profile_info = ap;
2643 *disconnect_reason = (int)profile_info->disconnect_reason;
2644 if (profile_info->disconnect_reason == 0)
2645 profile_info->disconnect_reason = WIFI_REASON_UNSPECIFIED;
2647 WIFI_LOG(WIFI_INFO, "Disconnect Reason Code %d",
2648 *disconnect_reason);
2650 __NETWORK_CAPI_FUNC_EXIT__;
2652 return WIFI_MANAGER_ERROR_NONE;
2655 EXPORT_API int wifi_manager_ap_get_assoc_status_code(wifi_manager_ap_h ap,
2656 wifi_manager_assoc_status_code_e *status_code)
2658 __NETWORK_CAPI_FUNC_ENTER__;
2660 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2662 if (_wifi_check_ap_validity(ap) == false || status_code == NULL) {
2663 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2664 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2665 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2668 net_profile_info_s *profile_info = ap;
2669 *status_code = (int)profile_info->assoc_status_code;
2671 WIFI_LOG(WIFI_INFO, "Association Status Code %d",
2674 __NETWORK_CAPI_FUNC_EXIT__;
2676 return WIFI_MANAGER_ERROR_NONE;
2679 EXPORT_API int wifi_manager_ap_foreach_ipv6_address(wifi_manager_ap_h ap,
2680 wifi_manager_ap_ipv6_address_cb callback, void *user_data)
2682 __NETWORK_CAPI_FUNC_ENTER__;
2684 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2686 GSList *ipv6_address_list = NULL;
2687 int rv = WIFI_MANAGER_ERROR_NONE;
2689 if (_wifi_check_ap_validity(ap) == false || callback == NULL) {
2690 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2691 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2692 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2695 net_profile_info_s *profile_info = ap;
2696 net_state_type_e state = profile_info->ProfileState;
2698 if (state != NET_STATE_TYPE_READY && state != NET_STATE_TYPE_ONLINE) {
2699 callback(__ap_convert_ip_to_string(&profile_info->net_info.IpAddr,
2700 WIFI_MANAGER_ADDRESS_FAMILY_IPV6), user_data);
2701 __NETWORK_CAPI_FUNC_EXIT__;
2702 return WIFI_MANAGER_ERROR_NONE;
2705 if (net_foreach_ipv6_address(&ipv6_address_list) != NET_ERR_NONE) {
2706 __NETWORK_CAPI_FUNC_EXIT__;
2707 return WIFI_MANAGER_ERROR_OPERATION_FAILED;
2711 for (list = ipv6_address_list; list; list = list->next) {
2712 rv = callback((char *)list->data, user_data);
2717 g_slist_free_full(ipv6_address_list, g_free);
2718 ipv6_address_list = NULL;
2720 __NETWORK_CAPI_FUNC_EXIT__;
2722 return WIFI_MANAGER_ERROR_NONE;
2725 EXPORT_API int wifi_manager_ap_get_error_state(wifi_manager_ap_h ap, wifi_manager_error_e* error_state)
2727 __NETWORK_CAPI_FUNC_ENTER__;
2729 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2731 if (_wifi_check_ap_validity(ap) == false || error_state == NULL) {
2732 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2733 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2734 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2737 net_profile_info_s *profile_info = ap;
2738 *error_state = __wifi_convert_to_ap_error_state(profile_info->ProfileErrorState);
2739 WIFI_LOG(WIFI_INFO, "error_state %d", *error_state);
2741 __NETWORK_CAPI_FUNC_EXIT__;
2743 return WIFI_MANAGER_ERROR_NONE;
2747 EXPORT_API int wifi_manager_ap_get_connection_mode(wifi_manager_ap_h ap, wifi_manager_connection_mode_e *mode)
2749 __NETWORK_CAPI_FUNC_ENTER__;
2751 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
2753 if (_wifi_check_ap_validity(ap) == false || mode == NULL) {
2754 WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
2755 __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
2756 return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
2759 net_profile_info_s *profile_info = ap;
2760 if (profile_info->operation_mode[0] != '\0') {
2761 *mode = __ap_convert_string_to_connection_mode(profile_info->operation_mode);
2763 __NETWORK_CAPI_FUNC_EXIT__;
2764 return WIFI_MANAGER_ERROR_OPERATION_FAILED;
2767 __NETWORK_CAPI_FUNC_EXIT__;
2768 return WIFI_MANAGER_ERROR_NONE;