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 "net_wifi_private.h"
26 #define MAX_PREFIX_LENGTH 6
28 static char *__ap_convert_ip_to_string(net_addr_t *ip_addr, wifi_address_family_e address_family)
30 unsigned char *ipaddr = NULL;
33 if (address_family == WIFI_ADDRESS_FAMILY_IPV4) {
34 ipaddr = (unsigned char *)&ip_addr->Data.Ipv4.s_addr;
35 ipstr = g_try_malloc0(INET_ADDRSTRLEN);
39 inet_ntop(AF_INET, ipaddr, ipstr, INET_ADDRSTRLEN);
42 ipaddr = (unsigned char *)&ip_addr->Data.Ipv6;
43 ipstr = g_try_malloc0(INET6_ADDRSTRLEN);
47 inet_ntop(AF_INET6, ipaddr, ipstr, INET6_ADDRSTRLEN);
53 static void __wifi_init_ap(net_profile_info_t *profile_info, const char *essid)
55 profile_info->profile_type = NET_DEVICE_WIFI;
56 profile_info->ProfileState = NET_STATE_TYPE_IDLE;
57 profile_info->ProfileInfo.Wlan.net_info.IpConfigType = NET_IP_CONFIG_TYPE_OFF;
58 profile_info->ProfileInfo.Wlan.net_info.ProxyMethod = NET_PROXY_TYPE_DIRECT;
59 profile_info->ProfileInfo.Wlan.wlan_mode = NETPM_WLAN_CONNMODE_AUTO;
60 profile_info->ProfileInfo.Wlan.security_info.sec_mode = WLAN_SEC_MODE_NONE;
61 profile_info->ProfileInfo.Wlan.security_info.enc_mode = WLAN_ENC_MODE_NONE;
62 g_strlcpy(profile_info->ProfileInfo.Wlan.essid, essid, NET_WLAN_ESSID_LEN+1);
65 static char *__wifi_create_profile_name(const char *ssid, const int net_mode, const int sec_mode)
69 const char *hidden_str = "hidden";
70 char buf_tmp[32] = { 0, };
74 const char *mode = "managed";
77 if (net_mode == NETPM_WLAN_CONNMODE_ADHOC) {
78 WIFI_LOG(WIFI_ERROR, "wlan_mode is adhoc"); //LCOV_EXCL_LINE
79 return NULL; //LCOV_EXCL_LINE
84 case WLAN_SEC_MODE_NONE:
87 case WLAN_SEC_MODE_WEP:
90 case WLAN_SEC_MODE_WPA_PSK:
91 case WLAN_SEC_MODE_WPA2_PSK:
94 case WLAN_SEC_MODE_IEEE8021X:
98 WIFI_LOG(WIFI_ERROR, "Invalid security type");
104 ssid_len = strlen(ssid);
105 actual_len = ssid_len * 2;
107 ssid_len = strlen(hidden_str);
108 actual_len = ssid_len;
111 buf = g_try_malloc0(actual_len + strlen(mode) + strlen(g_sec) + 3);
118 for (i = 0; i < ssid_len; i++) {
119 g_snprintf(pbuf, 3, "%02x", ssid[i]);
123 g_strlcat(buf, hidden_str,
124 actual_len + strlen(mode) + strlen(g_sec) + 3);
126 g_snprintf(buf_tmp, 32, "_%s_%s", mode, g_sec);
127 g_strlcat(buf, buf_tmp,
128 actual_len + strlen(mode) + strlen(g_sec) + 3);
130 WIFI_LOG(WIFI_INFO, "Profile name: %s", buf);
135 static bool _wifi_set_profile_name_to_ap(net_profile_info_t *ap_info)
137 char *profile_name = NULL;
139 if (ap_info == NULL) {
140 WIFI_LOG(WIFI_ERROR, "profile_info is NULL"); //LCOV_EXCL_LINE
141 return false; //LCOV_EXCL_LINE
144 profile_name = __wifi_create_profile_name(
145 ap_info->ProfileInfo.Wlan.is_hidden == TRUE ?
146 NULL : ap_info->ProfileInfo.Wlan.essid,
147 ap_info->ProfileInfo.Wlan.wlan_mode,
148 ap_info->ProfileInfo.Wlan.security_info.sec_mode);
149 if (profile_name == NULL) {
150 WIFI_LOG(WIFI_ERROR, "Failed to make a group name"); //LCOV_EXCL_LINE
151 return false; //LCOV_EXCL_LINE
154 g_strlcpy(ap_info->ProfileInfo.Wlan.net_info.ProfileName,
155 profile_name, NET_PROFILE_NAME_LEN_MAX);
157 g_free(profile_name);
162 wifi_connection_state_e _wifi_convert_to_ap_state(net_state_type_t state)
164 wifi_connection_state_e ap_state;
167 case NET_STATE_TYPE_ONLINE:
168 case NET_STATE_TYPE_READY:
169 ap_state = WIFI_CONNECTION_STATE_CONNECTED;
171 case NET_STATE_TYPE_FAILURE:
172 ap_state = WIFI_CONNECTION_STATE_FAILURE;
174 case NET_STATE_TYPE_IDLE:
175 case NET_STATE_TYPE_DISCONNECT:
176 ap_state = WIFI_CONNECTION_STATE_DISCONNECTED;
178 case NET_STATE_TYPE_ASSOCIATION:
179 ap_state = WIFI_CONNECTION_STATE_ASSOCIATION;
181 case NET_STATE_TYPE_CONFIGURATION:
182 ap_state = WIFI_CONNECTION_STATE_CONFIGURATION;
192 /* Wi-Fi AP ******************************************************************/
193 EXPORT_API int wifi_ap_create(const char* essid, wifi_ap_h* ap)
195 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_create");
196 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
198 if (essid == NULL || ap == NULL) {
199 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
200 return WIFI_ERROR_INVALID_PARAMETER;
203 net_profile_info_t *ap_info = g_try_malloc0(sizeof(net_profile_info_t));
205 return WIFI_ERROR_OUT_OF_MEMORY;
207 __wifi_init_ap(ap_info, essid);
209 _wifi_libnet_add_to_ap_list((wifi_ap_h)ap_info);
210 *ap = (wifi_ap_h)ap_info;
212 return WIFI_ERROR_NONE;
215 EXPORT_API int wifi_ap_hidden_create(const char* essid, wifi_ap_h* ap)
217 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_hidden_create");
218 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
220 if (essid == NULL || ap == NULL) {
221 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
222 return WIFI_ERROR_INVALID_PARAMETER;
225 net_profile_info_t *ap_info = g_try_malloc0(sizeof(net_profile_info_t));
227 return WIFI_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
229 __wifi_init_ap(ap_info, essid);
230 ap_info->ProfileInfo.Wlan.is_hidden = TRUE;
232 _wifi_libnet_add_to_ap_list((wifi_ap_h)ap_info);
233 *ap = (wifi_ap_h)ap_info;
235 return WIFI_ERROR_NONE;
238 EXPORT_API int wifi_ap_destroy(wifi_ap_h ap)
240 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_destroy");
241 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
243 if (_wifi_libnet_check_ap_validity(ap) == false) {
244 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
245 return WIFI_ERROR_INVALID_PARAMETER;
248 _wifi_libnet_remove_from_ap_list(ap);
250 return WIFI_ERROR_NONE;
253 EXPORT_API int wifi_ap_clone(wifi_ap_h* cloned_ap, wifi_ap_h origin)
255 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_clone");
256 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
258 if (_wifi_libnet_check_ap_validity(origin) == false || cloned_ap == NULL) {
259 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
260 return WIFI_ERROR_INVALID_PARAMETER;
263 net_profile_info_t *ap_info = g_try_malloc0(sizeof(net_profile_info_t));
265 return WIFI_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
267 memcpy(ap_info, origin, sizeof(net_profile_info_t));
269 _wifi_libnet_add_to_ap_list((wifi_ap_h)ap_info);
270 *cloned_ap = (wifi_ap_h)ap_info;
272 return WIFI_ERROR_NONE;
275 EXPORT_API int wifi_ap_refresh(wifi_ap_h ap)
277 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_refresh");
278 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
280 net_profile_info_t ap_info_local;
281 net_profile_info_t *ap_info = ap;
283 if (_wifi_libnet_check_ap_validity(ap) == false) {
284 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
285 return WIFI_ERROR_INVALID_PARAMETER;
288 int rv = NET_ERR_NONE;
289 rv = net_get_profile_info(ap_info->ProfileName, &ap_info_local);
290 if (rv == NET_ERR_ACCESS_DENIED) {
291 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
292 return WIFI_ERROR_PERMISSION_DENIED; //LCOV_EXCL_LINE
293 } else if (rv != NET_ERR_NONE) {
294 WIFI_LOG(WIFI_ERROR, "Failed to getprofile_info"); //LCOV_EXCL_LINE
295 return WIFI_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE
298 memcpy(ap, &ap_info_local, sizeof(net_profile_info_t));
300 return WIFI_ERROR_NONE;
303 /* Wi-Fi network information *************************************************/
304 EXPORT_API int wifi_ap_get_essid(wifi_ap_h ap, char** essid)
306 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_essid");
307 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
309 if (_wifi_libnet_check_ap_validity(ap) == false || essid == NULL) {
310 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
311 return WIFI_ERROR_INVALID_PARAMETER;
314 net_profile_info_t *profile_info = ap;
315 *essid = g_strdup(profile_info->ProfileInfo.Wlan.essid);
317 return WIFI_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
319 return WIFI_ERROR_NONE;
322 EXPORT_API int wifi_ap_get_bssid(wifi_ap_h ap, char** bssid)
324 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_bssid");
325 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
327 if (_wifi_libnet_check_ap_validity(ap) == false || bssid == NULL) {
328 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
329 return WIFI_ERROR_INVALID_PARAMETER;
332 net_profile_info_t *profile_info = ap;
333 *bssid = g_strdup(profile_info->ProfileInfo.Wlan.bssid);
335 return WIFI_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
337 return WIFI_ERROR_NONE;
340 EXPORT_API int wifi_ap_get_rssi(wifi_ap_h ap, int* rssi)
342 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_rssi");
343 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
345 if (_wifi_libnet_check_ap_validity(ap) == false || rssi == NULL) {
346 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
347 return WIFI_ERROR_INVALID_PARAMETER;
350 net_profile_info_t *profile_info = ap;
351 *rssi = (int)(profile_info->ProfileInfo.Wlan.Strength - 120);
353 return WIFI_ERROR_NONE;
356 EXPORT_API int wifi_ap_get_frequency(wifi_ap_h ap, int* frequency)
358 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_frequency");
359 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
361 if (_wifi_libnet_check_ap_validity(ap) == false || frequency == NULL) {
362 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
363 return WIFI_ERROR_INVALID_PARAMETER;
366 net_profile_info_t *profile_info = ap;
367 *frequency = (int)profile_info->ProfileInfo.Wlan.frequency;
369 return WIFI_ERROR_NONE;
372 EXPORT_API int wifi_ap_get_max_speed(wifi_ap_h ap, int* max_speed)
374 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_max_speed");
375 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
377 if (_wifi_libnet_check_ap_validity(ap) == false || max_speed == NULL) {
378 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
379 return WIFI_ERROR_INVALID_PARAMETER;
382 net_profile_info_t *profile_info = ap;
383 *max_speed = (int)profile_info->ProfileInfo.Wlan.max_rate / 1000000;
385 return WIFI_ERROR_NONE;
388 EXPORT_API int wifi_ap_is_favorite(wifi_ap_h ap, bool* favorite)
390 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_is_favorite");
391 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
393 if (_wifi_libnet_check_ap_validity(ap) == false || favorite == NULL) {
394 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
395 return WIFI_ERROR_INVALID_PARAMETER;
398 net_profile_info_t *profile_info = ap;
400 if (profile_info->Favourite)
405 return WIFI_ERROR_NONE;
408 EXPORT_API int wifi_ap_is_passpoint(wifi_ap_h ap, bool* passpoint)
410 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_is_passpoint");
411 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
413 if (_wifi_libnet_check_ap_validity(ap) == false || passpoint == NULL) {
414 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
415 return WIFI_ERROR_INVALID_PARAMETER;
418 net_profile_info_t *profile_info = ap;
420 if (profile_info->ProfileInfo.Wlan.passpoint)
425 return WIFI_ERROR_NONE;
428 EXPORT_API int wifi_ap_get_connection_state(wifi_ap_h ap, wifi_connection_state_e* state)
430 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_connection_state");
431 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
433 if (_wifi_libnet_check_ap_validity(ap) == false || state == NULL) {
434 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
435 return WIFI_ERROR_INVALID_PARAMETER;
438 net_profile_info_t *profile_info = ap;
440 *state = _wifi_convert_to_ap_state(profile_info->ProfileState);
443 return WIFI_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE
445 return WIFI_ERROR_NONE;
448 EXPORT_API int wifi_ap_get_ip_config_type(wifi_ap_h ap, wifi_address_family_e address_family, wifi_ip_config_type_e* type)
450 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_ip_config_type");
451 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
452 net_ip_config_type_t profileType ;
454 if (_wifi_libnet_check_ap_validity(ap) == false ||
455 (address_family != WIFI_ADDRESS_FAMILY_IPV4 &&
456 address_family != WIFI_ADDRESS_FAMILY_IPV6) ||
458 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
459 return WIFI_ERROR_INVALID_PARAMETER;
462 net_profile_info_t *profile_info = ap;
464 if (address_family == WIFI_ADDRESS_FAMILY_IPV4)
465 profileType = profile_info->ProfileInfo.Wlan.net_info.IpConfigType ;
467 profileType = profile_info->ProfileInfo.Wlan.net_info.IpConfigType6 ; //LCOV_EXCL_LINE
469 if (address_family == WIFI_ADDRESS_FAMILY_IPV4) {
470 switch (profileType) {
472 case NET_IP_CONFIG_TYPE_STATIC:
473 *type = WIFI_IP_CONFIG_TYPE_STATIC;
476 case NET_IP_CONFIG_TYPE_DYNAMIC:
477 *type = WIFI_IP_CONFIG_TYPE_DYNAMIC;
480 case NET_IP_CONFIG_TYPE_AUTO_IP:
481 *type = WIFI_IP_CONFIG_TYPE_AUTO;
484 case NET_IP_CONFIG_TYPE_FIXED:
485 *type = WIFI_IP_CONFIG_TYPE_FIXED;
488 case NET_IP_CONFIG_TYPE_OFF:
489 *type = WIFI_IP_CONFIG_TYPE_NONE;
493 return WIFI_ERROR_OPERATION_FAILED;
498 switch (profileType) {
499 case NET_IP_CONFIG_TYPE_STATIC:
500 *type = WIFI_IP_CONFIG_TYPE_STATIC;
502 case NET_IP_CONFIG_TYPE_AUTO_IP:
503 *type = WIFI_IP_CONFIG_TYPE_AUTO;
505 case NET_IP_CONFIG_TYPE_OFF:
506 *type = WIFI_IP_CONFIG_TYPE_NONE;
509 return WIFI_ERROR_OPERATION_FAILED;
514 return WIFI_ERROR_NONE;
517 EXPORT_API int wifi_ap_set_ip_config_type(wifi_ap_h ap, wifi_address_family_e address_family, wifi_ip_config_type_e type)
519 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_ip_config_type");
520 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
521 net_ip_config_type_t *profileType = NULL;
523 if (_wifi_libnet_check_ap_validity(ap) == false ||
524 (address_family != WIFI_ADDRESS_FAMILY_IPV4 &&
525 address_family != WIFI_ADDRESS_FAMILY_IPV6)) {
526 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
527 return WIFI_ERROR_INVALID_PARAMETER;
530 int rv = _wifi_libnet_check_get_privilege();
531 if (rv == WIFI_ERROR_PERMISSION_DENIED) {
532 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
536 rv = _wifi_libnet_check_profile_privilege();
537 if (rv == WIFI_ERROR_PERMISSION_DENIED) {
538 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
542 net_profile_info_t *profile_info = ap;
544 if (address_family == WIFI_ADDRESS_FAMILY_IPV4)
545 profileType = &profile_info->ProfileInfo.Wlan.net_info.IpConfigType ;
547 profileType = &profile_info->ProfileInfo.Wlan.net_info.IpConfigType6 ;
549 if (address_family == WIFI_ADDRESS_FAMILY_IPV4) {
552 case WIFI_IP_CONFIG_TYPE_STATIC:
553 *profileType = NET_IP_CONFIG_TYPE_STATIC;
554 profile_info->ProfileInfo.Wlan.net_info.IpAddr.Data.Ipv4.s_addr = 0;
555 profile_info->ProfileInfo.Wlan.net_info.SubnetMask.Data.Ipv4.s_addr = 0;
556 profile_info->ProfileInfo.Wlan.net_info.GatewayAddr.Data.Ipv4.s_addr = 0 ;
559 case WIFI_IP_CONFIG_TYPE_DYNAMIC:
560 *profileType = NET_IP_CONFIG_TYPE_DYNAMIC;
563 case WIFI_IP_CONFIG_TYPE_AUTO:
564 *profileType = NET_IP_CONFIG_TYPE_AUTO_IP;
567 case WIFI_IP_CONFIG_TYPE_FIXED:
568 *profileType = NET_IP_CONFIG_TYPE_FIXED;
571 case WIFI_IP_CONFIG_TYPE_NONE:
572 *profileType = NET_IP_CONFIG_TYPE_OFF;
576 return WIFI_ERROR_INVALID_PARAMETER;
582 case WIFI_IP_CONFIG_TYPE_STATIC:
583 *profileType = NET_IP_CONFIG_TYPE_STATIC;
584 inet_pton(AF_INET6, "::", &profile_info->ProfileInfo.Wlan.net_info.IpAddr6.Data.Ipv6);
585 profile_info->ProfileInfo.Wlan.net_info.PrefixLen6 = 0 ;
586 inet_pton(AF_INET6, "::", &profile_info->ProfileInfo.Wlan.net_info.GatewayAddr6.Data.Ipv6);
588 case WIFI_IP_CONFIG_TYPE_AUTO:
589 *profileType = NET_IP_CONFIG_TYPE_AUTO_IP;
591 case WIFI_IP_CONFIG_TYPE_NONE:
592 *profileType = NET_IP_CONFIG_TYPE_OFF;
595 return WIFI_ERROR_INVALID_PARAMETER;
600 if (_wifi_libnet_check_profile_name_validity(profile_info->ProfileName) == false)
601 return WIFI_ERROR_NONE;
603 return _wifi_update_ap_info(profile_info);
606 EXPORT_API int wifi_ap_get_ip_address(wifi_ap_h ap, wifi_address_family_e address_family, char** ip_address)
608 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_ip_address");
609 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
611 if (_wifi_libnet_check_ap_validity(ap) == false ||
612 (address_family != WIFI_ADDRESS_FAMILY_IPV4 &&
613 address_family != WIFI_ADDRESS_FAMILY_IPV6) ||
614 ip_address == NULL) {
615 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
616 return WIFI_ERROR_INVALID_PARAMETER;
619 net_profile_info_t *profile_info = ap;
620 if (address_family == WIFI_ADDRESS_FAMILY_IPV4)
621 *ip_address = __ap_convert_ip_to_string(
622 &profile_info->ProfileInfo.Wlan.net_info.IpAddr,
625 *ip_address = __ap_convert_ip_to_string(
626 &profile_info->ProfileInfo.Wlan.net_info.IpAddr6,
629 if (*ip_address == NULL)
630 return WIFI_ERROR_OUT_OF_MEMORY;
632 return WIFI_ERROR_NONE;
635 EXPORT_API int wifi_ap_set_ip_address(wifi_ap_h ap, wifi_address_family_e address_family, const char* ip_address)
637 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_ip_address");
638 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
640 if (_wifi_libnet_check_ap_validity(ap) == false ||
641 (address_family != WIFI_ADDRESS_FAMILY_IPV4 &&
642 address_family != WIFI_ADDRESS_FAMILY_IPV6)) {
643 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
644 return WIFI_ERROR_INVALID_PARAMETER;
647 int rv = _wifi_libnet_check_get_privilege();
648 if (rv == WIFI_ERROR_PERMISSION_DENIED) {
649 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
653 rv = _wifi_libnet_check_profile_privilege();
654 if (rv == WIFI_ERROR_PERMISSION_DENIED) {
655 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
659 net_profile_info_t *profile_info = ap;
661 if (address_family == WIFI_ADDRESS_FAMILY_IPV4) {
662 if (ip_address == NULL)
663 profile_info->ProfileInfo.Wlan.net_info.IpAddr.Data.Ipv4.s_addr = 0;
664 else if (inet_aton(ip_address,
665 &(profile_info->ProfileInfo.Wlan.net_info.IpAddr.Data.Ipv4)) == 0)
666 return WIFI_ERROR_INVALID_PARAMETER;
669 if (ip_address == NULL)
670 inet_pton(AF_INET6, "::",
671 &profile_info->ProfileInfo.Wlan.net_info.IpAddr6.Data.Ipv6);
672 else if (inet_pton(AF_INET6, ip_address,
673 &profile_info->ProfileInfo.Wlan.net_info.IpAddr6.Data.Ipv6) == 0)
674 return WIFI_ERROR_INVALID_PARAMETER;
678 if (_wifi_libnet_check_profile_name_validity(profile_info->ProfileName) == false)
679 return WIFI_ERROR_NONE;
681 return _wifi_update_ap_info(profile_info);
684 EXPORT_API int wifi_ap_get_subnet_mask(wifi_ap_h ap, wifi_address_family_e address_family, char** subnet_mask)
686 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_subnet_mask");
687 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
690 if (_wifi_libnet_check_ap_validity(ap) == false ||
691 (address_family != WIFI_ADDRESS_FAMILY_IPV4 &&
692 address_family != WIFI_ADDRESS_FAMILY_IPV6) ||
693 subnet_mask == NULL) {
694 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
695 return WIFI_ERROR_INVALID_PARAMETER;
698 net_profile_info_t *profile_info = ap;
699 if (address_family == WIFI_ADDRESS_FAMILY_IPV4)
700 *subnet_mask = __ap_convert_ip_to_string(
701 &profile_info->ProfileInfo.Wlan.net_info.SubnetMask,
705 prefixlen = g_try_malloc0(MAX_PREFIX_LENGTH);
706 if (prefixlen != NULL) {
707 snprintf(prefixlen, MAX_PREFIX_LENGTH, "%d",
708 profile_info->ProfileInfo.Wlan.net_info.PrefixLen6);
709 *subnet_mask = prefixlen;
715 if (*subnet_mask == NULL)
716 return WIFI_ERROR_OUT_OF_MEMORY;
718 return WIFI_ERROR_NONE;
721 EXPORT_API int wifi_ap_set_subnet_mask(wifi_ap_h ap, wifi_address_family_e address_family, const char* subnet_mask)
723 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_subnet_mask");
724 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
726 if (_wifi_libnet_check_ap_validity(ap) == false ||
727 (address_family != WIFI_ADDRESS_FAMILY_IPV4 &&
728 address_family != WIFI_ADDRESS_FAMILY_IPV6)) {
729 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
730 return WIFI_ERROR_INVALID_PARAMETER;
733 int rv = _wifi_libnet_check_get_privilege();
734 if (rv == WIFI_ERROR_PERMISSION_DENIED) {
735 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
739 rv = _wifi_libnet_check_profile_privilege();
740 if (rv == WIFI_ERROR_PERMISSION_DENIED) {
741 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
745 net_profile_info_t *profile_info = ap;
747 /* Based on the family of address provided subnet mask should be set.
748 * For IPv6 address subnet mask is prefix length, an integer, while for
749 * Ipv6 address subnet mask is a ipv6 address.
751 if (address_family == WIFI_ADDRESS_FAMILY_IPV6) {
753 if (subnet_mask == NULL)
754 profile_info->ProfileInfo.Wlan.net_info.PrefixLen6 = 0;
756 /* subnet mask provided as input parameter is a string
757 * while for IPv6 address subnet mask in prefix length
758 * which should be in integer form */
759 profile_info->ProfileInfo.Wlan.net_info.PrefixLen6 =
764 if (subnet_mask == NULL)
765 profile_info->ProfileInfo.Wlan.net_info.SubnetMask.Data.Ipv4.s_addr = 0;
766 else if (inet_pton(AF_INET, subnet_mask,
767 &(profile_info->ProfileInfo.Wlan.net_info.SubnetMask.Data.Ipv4)) < 1)
768 return WIFI_ERROR_INVALID_PARAMETER;
772 if (_wifi_libnet_check_profile_name_validity(profile_info->ProfileName) == false)
773 return WIFI_ERROR_NONE;
775 return _wifi_update_ap_info(profile_info);
778 EXPORT_API int wifi_ap_get_gateway_address(wifi_ap_h ap, wifi_address_family_e address_family, char** gateway_address)
780 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_gateway_address");
781 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
783 if (_wifi_libnet_check_ap_validity(ap) == false ||
784 (address_family != WIFI_ADDRESS_FAMILY_IPV4 &&
785 address_family != WIFI_ADDRESS_FAMILY_IPV6) ||
786 gateway_address == NULL) {
787 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
788 return WIFI_ERROR_INVALID_PARAMETER;
791 net_profile_info_t *profile_info = ap;
793 /* Based on the family of address provided, gateway should be set.
794 * For IPv6 address gateway is of form GatewayAddr6 but for IPv4
795 * gateway is of form GatewayAddr.
797 if (address_family == WIFI_ADDRESS_FAMILY_IPV4)
798 *gateway_address = __ap_convert_ip_to_string(
799 &profile_info->ProfileInfo.Wlan.net_info.GatewayAddr,
802 *gateway_address = __ap_convert_ip_to_string( //LCOV_EXCL_LINE
803 &profile_info->ProfileInfo.Wlan.net_info.GatewayAddr6,
806 if (*gateway_address == NULL)
807 return WIFI_ERROR_OUT_OF_MEMORY;
809 return WIFI_ERROR_NONE;
812 EXPORT_API int wifi_ap_set_gateway_address(wifi_ap_h ap, wifi_address_family_e address_family, const char* gateway_address)
814 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_gateway_address");
815 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
817 if (_wifi_libnet_check_ap_validity(ap) == false ||
818 (address_family != WIFI_ADDRESS_FAMILY_IPV4 &&
819 address_family != WIFI_ADDRESS_FAMILY_IPV6)) {
820 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
821 return WIFI_ERROR_INVALID_PARAMETER;
824 int rv = _wifi_libnet_check_get_privilege();
825 if (rv == WIFI_ERROR_PERMISSION_DENIED) {
826 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
830 rv = _wifi_libnet_check_profile_privilege();
831 if (rv == WIFI_ERROR_PERMISSION_DENIED) {
832 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
836 net_profile_info_t *profile_info = ap;
837 if (address_family == WIFI_ADDRESS_FAMILY_IPV6) {
839 if (gateway_address == NULL)
840 inet_pton(AF_INET6, "::",
841 &profile_info->ProfileInfo.Wlan.net_info.GatewayAddr6.Data.Ipv6);
842 else if (inet_pton(AF_INET6, gateway_address,
843 &profile_info->ProfileInfo.Wlan.net_info.GatewayAddr6.Data.Ipv6) < 1)
844 return WIFI_ERROR_INVALID_PARAMETER;
847 if (gateway_address == NULL)
848 profile_info->ProfileInfo.Wlan.net_info.GatewayAddr.Data.Ipv4.s_addr = 0;
849 else if (inet_pton(AF_INET, gateway_address,
850 &profile_info->ProfileInfo.Wlan.net_info.GatewayAddr.Data.Ipv4) < 1)
851 return WIFI_ERROR_INVALID_PARAMETER;
854 if (_wifi_libnet_check_profile_name_validity(profile_info->ProfileName) == false)
855 return WIFI_ERROR_NONE;
857 return _wifi_update_ap_info(profile_info);
860 EXPORT_API int wifi_ap_get_proxy_address(wifi_ap_h ap, wifi_address_family_e address_family, char** proxy_address)
862 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_proxy_address");
863 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
865 if (_wifi_libnet_check_ap_validity(ap) == false ||
866 (address_family != WIFI_ADDRESS_FAMILY_IPV4 &&
867 address_family != WIFI_ADDRESS_FAMILY_IPV6) ||
868 proxy_address == NULL) {
869 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
870 return WIFI_ERROR_INVALID_PARAMETER;
873 net_profile_info_t *profile_info = ap;
874 *proxy_address = g_strdup(profile_info->ProfileInfo.Wlan.net_info.ProxyAddr);
875 if (*proxy_address == NULL)
876 return WIFI_ERROR_OUT_OF_MEMORY;
878 return WIFI_ERROR_NONE;
881 EXPORT_API int wifi_ap_set_proxy_address(wifi_ap_h ap, wifi_address_family_e address_family, const char* proxy_address)
883 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_proxy_address");
884 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
886 if (_wifi_libnet_check_ap_validity(ap) == false ||
887 (address_family != WIFI_ADDRESS_FAMILY_IPV4 &&
888 address_family != WIFI_ADDRESS_FAMILY_IPV6)) {
889 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
890 return WIFI_ERROR_INVALID_PARAMETER;
893 int rv = _wifi_libnet_check_get_privilege();
894 if (rv == WIFI_ERROR_PERMISSION_DENIED) {
895 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
899 rv = _wifi_libnet_check_profile_privilege();
900 if (rv == WIFI_ERROR_PERMISSION_DENIED) {
901 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
905 net_profile_info_t *profile_info = ap;
907 if (proxy_address == NULL)
908 profile_info->ProfileInfo.Wlan.net_info.ProxyAddr[0] = '\0';
910 g_strlcpy(profile_info->ProfileInfo.Wlan.net_info.ProxyAddr,
911 proxy_address, NET_PROXY_LEN_MAX+1);
913 if (_wifi_libnet_check_profile_name_validity(profile_info->ProfileName) == false)
914 return WIFI_ERROR_NONE;
916 return _wifi_update_ap_info(profile_info);
919 EXPORT_API int wifi_ap_get_proxy_type(wifi_ap_h ap, wifi_proxy_type_e* type)
921 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_proxy_type");
922 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
924 if (_wifi_libnet_check_ap_validity(ap) == false || type == NULL) {
925 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
926 return WIFI_ERROR_INVALID_PARAMETER;
929 net_profile_info_t *profile_info = ap;
931 switch (profile_info->ProfileInfo.Wlan.net_info.ProxyMethod) {
933 case NET_PROXY_TYPE_DIRECT:
934 *type = WIFI_PROXY_TYPE_DIRECT;
936 case NET_PROXY_TYPE_AUTO:
937 *type = WIFI_PROXY_TYPE_AUTO;
939 case NET_PROXY_TYPE_MANUAL:
940 *type = WIFI_PROXY_TYPE_MANUAL;
942 case NET_PROXY_TYPE_UNKNOWN:
943 *type = WIFI_PROXY_TYPE_DIRECT;
946 return WIFI_ERROR_OPERATION_FAILED;
950 return WIFI_ERROR_NONE;
953 EXPORT_API int wifi_ap_set_proxy_type(wifi_ap_h ap, wifi_proxy_type_e proxy_type)
955 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_proxy_type");
956 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
958 if (_wifi_libnet_check_ap_validity(ap) == false) {
959 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
960 return WIFI_ERROR_INVALID_PARAMETER;
963 int rv = _wifi_libnet_check_get_privilege();
964 if (rv == WIFI_ERROR_PERMISSION_DENIED) {
965 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
969 rv = _wifi_libnet_check_profile_privilege();
970 if (rv == WIFI_ERROR_PERMISSION_DENIED) {
971 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
975 net_profile_info_t *profile_info = ap;
977 switch (proxy_type) {
979 case WIFI_PROXY_TYPE_DIRECT:
980 profile_info->ProfileInfo.Wlan.net_info.ProxyMethod = NET_PROXY_TYPE_DIRECT;
982 case WIFI_PROXY_TYPE_AUTO:
983 profile_info->ProfileInfo.Wlan.net_info.ProxyAddr[0] = '\0';
984 profile_info->ProfileInfo.Wlan.net_info.ProxyMethod = NET_PROXY_TYPE_AUTO;
986 case WIFI_PROXY_TYPE_MANUAL:
987 profile_info->ProfileInfo.Wlan.net_info.ProxyAddr[0] = '\0';
988 profile_info->ProfileInfo.Wlan.net_info.ProxyMethod = NET_PROXY_TYPE_MANUAL;
991 return WIFI_ERROR_INVALID_PARAMETER;
995 if (_wifi_libnet_check_profile_name_validity(profile_info->ProfileName) == false)
996 return WIFI_ERROR_NONE;
998 rv = _wifi_update_ap_info(profile_info);
999 if (rv != NET_ERR_NONE && proxy_type == WIFI_PROXY_TYPE_MANUAL) {
1000 g_strlcpy(profile_info->ProfileInfo.Wlan.net_info.ProxyAddr, "0.0.0.0:8080", 15);
1001 rv = _wifi_update_ap_info(profile_info);
1007 EXPORT_API int wifi_ap_get_dns_address(wifi_ap_h ap, int order, wifi_address_family_e address_family, char** dns_address)
1009 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_dns_address");
1010 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1012 if (_wifi_libnet_check_ap_validity(ap) == false ||
1013 (address_family != WIFI_ADDRESS_FAMILY_IPV4 &&
1014 address_family != WIFI_ADDRESS_FAMILY_IPV6) ||
1015 dns_address == NULL ||
1017 order > NET_DNS_ADDR_MAX) {
1018 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1019 return WIFI_ERROR_INVALID_PARAMETER;
1022 net_profile_info_t *profile_info = ap;
1024 if (address_family == WIFI_ADDRESS_FAMILY_IPV4)
1025 *dns_address = __ap_convert_ip_to_string(
1026 &profile_info->ProfileInfo.Wlan.net_info.DnsAddr[order-1],
1029 *dns_address = __ap_convert_ip_to_string( //LCOV_EXCL_LINE
1030 &profile_info->ProfileInfo.Wlan.net_info.DnsAddr6[order-1],
1033 if (*dns_address == NULL)
1034 return WIFI_ERROR_OUT_OF_MEMORY;
1036 return WIFI_ERROR_NONE;
1039 EXPORT_API int wifi_ap_set_dns_address(wifi_ap_h ap, int order, wifi_address_family_e address_family, const char* dns_address)
1041 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_dns_address");
1042 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1044 if (_wifi_libnet_check_ap_validity(ap) == false ||
1045 (address_family != WIFI_ADDRESS_FAMILY_IPV4 &&
1046 address_family != WIFI_ADDRESS_FAMILY_IPV6) ||
1048 order > NET_DNS_ADDR_MAX) {
1049 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1050 return WIFI_ERROR_INVALID_PARAMETER;
1053 int rv = _wifi_libnet_check_get_privilege();
1054 if (rv == WIFI_ERROR_PERMISSION_DENIED) {
1055 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
1059 rv = _wifi_libnet_check_profile_privilege();
1060 if (rv == WIFI_ERROR_PERMISSION_DENIED) {
1061 WIFI_LOG(WIFI_ERROR, "Access denied"); //LCOV_EXCL_LINE
1065 net_profile_info_t *profile_info = ap;
1067 if (address_family == WIFI_ADDRESS_FAMILY_IPV6) {
1069 profile_info->ProfileInfo.Wlan.net_info.DnsAddr6[order-1].Type =
1071 if (dns_address == NULL)
1072 inet_pton(AF_INET6, "::",
1073 &profile_info->ProfileInfo.Wlan.net_info.DnsAddr6[order-1].Data.Ipv6);
1074 else if (inet_pton(AF_INET6, dns_address,
1075 &profile_info->ProfileInfo.Wlan.net_info.DnsAddr6[order-1].Data.Ipv6) < 1)
1076 return WIFI_ERROR_INVALID_PARAMETER;
1078 if (profile_info->ProfileInfo.Wlan.net_info.DnsCount6 < order)
1079 profile_info->ProfileInfo.Wlan.net_info.DnsCount6 = order;
1082 profile_info->ProfileInfo.Wlan.net_info.DnsAddr[order-1].Type =
1084 if (dns_address == NULL)
1085 profile_info->ProfileInfo.Wlan.net_info.DnsAddr[order-1].Data.Ipv4.s_addr = 0;
1086 else if (inet_pton(AF_INET, dns_address,
1087 &(profile_info->ProfileInfo.Wlan.net_info.DnsAddr[order-1].Data.Ipv4)) < 1)
1088 return WIFI_ERROR_INVALID_PARAMETER;
1090 if (profile_info->ProfileInfo.Wlan.net_info.DnsCount < order)
1091 profile_info->ProfileInfo.Wlan.net_info.DnsCount = order;
1094 if (_wifi_libnet_check_profile_name_validity(profile_info->ProfileName) == false)
1095 return WIFI_ERROR_NONE;
1097 return _wifi_update_ap_info(profile_info);
1100 /* Wi-Fi security information ************************************************/
1101 EXPORT_API int wifi_ap_get_security_type(wifi_ap_h ap, wifi_security_type_e* type)
1103 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_security_type");
1104 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1106 if (_wifi_libnet_check_ap_validity(ap) == false || type == NULL) {
1107 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1108 return WIFI_ERROR_INVALID_PARAMETER;
1111 net_profile_info_t *profile_info = ap;
1113 switch (profile_info->ProfileInfo.Wlan.security_info.sec_mode) {
1115 case WLAN_SEC_MODE_NONE:
1116 *type = WIFI_SECURITY_TYPE_NONE;
1118 case WLAN_SEC_MODE_WEP:
1119 *type = WIFI_SECURITY_TYPE_WEP; //LCOV_EXCL_LINE
1121 case WLAN_SEC_MODE_IEEE8021X:
1122 *type = WIFI_SECURITY_TYPE_EAP; //LCOV_EXCL_LINE
1124 case WLAN_SEC_MODE_WPA_PSK:
1125 *type = WIFI_SECURITY_TYPE_WPA_PSK; //LCOV_EXCL_LINE
1127 case WLAN_SEC_MODE_WPA2_PSK:
1128 *type = WIFI_SECURITY_TYPE_WPA2_PSK; //LCOV_EXCL_LINE
1131 return WIFI_ERROR_OPERATION_FAILED;
1135 return WIFI_ERROR_NONE;
1138 EXPORT_API int wifi_ap_set_security_type(wifi_ap_h ap, wifi_security_type_e type)
1140 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_security_type");
1141 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1143 if (_wifi_libnet_check_ap_validity(ap) == false) {
1144 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1145 return WIFI_ERROR_INVALID_PARAMETER;
1148 net_profile_info_t *profile_info = ap;
1152 case WIFI_SECURITY_TYPE_NONE:
1153 profile_info->ProfileInfo.Wlan.security_info.sec_mode = WLAN_SEC_MODE_NONE; //LCOV_EXCL_LINE
1155 case WIFI_SECURITY_TYPE_WEP:
1156 profile_info->ProfileInfo.Wlan.security_info.sec_mode = WLAN_SEC_MODE_WEP; //LCOV_EXCL_LINE
1158 case WIFI_SECURITY_TYPE_EAP:
1159 profile_info->ProfileInfo.Wlan.security_info.sec_mode = WLAN_SEC_MODE_IEEE8021X;
1161 case WIFI_SECURITY_TYPE_WPA_PSK:
1162 profile_info->ProfileInfo.Wlan.security_info.sec_mode = WLAN_SEC_MODE_WPA_PSK; //LCOV_EXCL_LINE
1164 case WIFI_SECURITY_TYPE_WPA2_PSK:
1165 profile_info->ProfileInfo.Wlan.security_info.sec_mode = WLAN_SEC_MODE_WPA2_PSK;
1168 return WIFI_ERROR_INVALID_PARAMETER;
1172 _wifi_set_profile_name_to_ap(profile_info);
1174 return WIFI_ERROR_NONE;
1177 EXPORT_API int wifi_ap_get_encryption_type(wifi_ap_h ap, wifi_encryption_type_e* type)
1179 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_encryption_type");
1180 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1182 if (_wifi_libnet_check_ap_validity(ap) == false || type == NULL) {
1183 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1184 return WIFI_ERROR_INVALID_PARAMETER;
1187 net_profile_info_t *profile_info = ap;
1189 switch (profile_info->ProfileInfo.Wlan.security_info.enc_mode) {
1191 case WLAN_ENC_MODE_NONE:
1192 *type = WIFI_ENCRYPTION_TYPE_NONE;
1194 case WLAN_ENC_MODE_WEP:
1195 *type = WIFI_ENCRYPTION_TYPE_WEP; //LCOV_EXCL_LINE
1197 case WLAN_ENC_MODE_TKIP:
1198 *type = WIFI_ENCRYPTION_TYPE_TKIP; //LCOV_EXCL_LINE
1200 case WLAN_ENC_MODE_AES:
1201 *type = WIFI_ENCRYPTION_TYPE_AES; //LCOV_EXCL_LINE
1203 case WLAN_ENC_MODE_TKIP_AES_MIXED:
1204 *type = WIFI_ENCRYPTION_TYPE_TKIP_AES_MIXED; //LCOV_EXCL_LINE
1207 return WIFI_ERROR_OPERATION_FAILED;
1211 return WIFI_ERROR_NONE;
1214 EXPORT_API int wifi_ap_set_encryption_type(wifi_ap_h ap, wifi_encryption_type_e type)
1216 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_encryption_type");
1217 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1219 if (_wifi_libnet_check_ap_validity(ap) == false) {
1220 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1221 return WIFI_ERROR_INVALID_PARAMETER;
1224 net_profile_info_t *profile_info = ap;
1228 case WIFI_ENCRYPTION_TYPE_NONE:
1229 profile_info->ProfileInfo.Wlan.security_info.enc_mode = WLAN_ENC_MODE_NONE; //LCOV_EXCL_LINE
1231 case WIFI_ENCRYPTION_TYPE_WEP:
1232 profile_info->ProfileInfo.Wlan.security_info.enc_mode = WLAN_ENC_MODE_WEP; //LCOV_EXCL_LINE
1234 case WIFI_ENCRYPTION_TYPE_TKIP:
1235 profile_info->ProfileInfo.Wlan.security_info.enc_mode = WLAN_ENC_MODE_TKIP; //LCOV_EXCL_LINE
1237 case WIFI_ENCRYPTION_TYPE_AES:
1238 profile_info->ProfileInfo.Wlan.security_info.enc_mode = WLAN_ENC_MODE_AES;
1240 case WIFI_ENCRYPTION_TYPE_TKIP_AES_MIXED:
1241 profile_info->ProfileInfo.Wlan.security_info.enc_mode = WLAN_ENC_MODE_TKIP_AES_MIXED; //LCOV_EXCL_LINE
1244 return WIFI_ERROR_INVALID_PARAMETER;
1248 return WIFI_ERROR_NONE;
1251 EXPORT_API int wifi_ap_is_passphrase_required(wifi_ap_h ap, bool* required)
1253 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_is_passphrase_required");
1254 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1256 if (_wifi_libnet_check_ap_validity(ap) == false || required == NULL) {
1257 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1258 return WIFI_ERROR_INVALID_PARAMETER;
1261 net_profile_info_t *profile_info = ap;
1263 if (profile_info->Favourite) {
1265 return WIFI_ERROR_NONE;
1268 switch (profile_info->ProfileInfo.Wlan.security_info.sec_mode) {
1270 case WLAN_SEC_MODE_NONE:
1273 case WLAN_SEC_MODE_WEP:
1274 case WLAN_SEC_MODE_IEEE8021X:
1275 case WLAN_SEC_MODE_WPA_PSK:
1276 case WLAN_SEC_MODE_WPA2_PSK:
1280 return WIFI_ERROR_OPERATION_FAILED;
1284 return WIFI_ERROR_NONE;
1287 EXPORT_API int wifi_ap_set_passphrase(wifi_ap_h ap, const char* passphrase)
1289 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_passphrase");
1290 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1292 if (_wifi_libnet_check_ap_validity(ap) == false || passphrase == NULL) {
1293 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1294 return WIFI_ERROR_INVALID_PARAMETER;
1297 net_profile_info_t *profile_info = ap;
1299 switch (profile_info->ProfileInfo.Wlan.security_info.sec_mode) {
1301 case WLAN_SEC_MODE_WEP:
1302 g_strlcpy(profile_info->ProfileInfo.Wlan.security_info.authentication.wep.wepKey,
1303 passphrase, NETPM_WLAN_MAX_WEP_KEY_LEN+1);
1305 case WLAN_SEC_MODE_WPA_PSK:
1306 case WLAN_SEC_MODE_WPA2_PSK:
1307 g_strlcpy(profile_info->ProfileInfo.Wlan.security_info.authentication.psk.pskKey,
1308 passphrase, NETPM_WLAN_MAX_PSK_PASSPHRASE_LEN+1);
1310 case WLAN_SEC_MODE_NONE:
1311 case WLAN_SEC_MODE_IEEE8021X:
1313 return WIFI_ERROR_OPERATION_FAILED;
1317 return WIFI_ERROR_NONE;
1320 EXPORT_API int wifi_ap_is_wps_supported(wifi_ap_h ap, bool* supported)
1322 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_is_wps_supported");
1323 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1325 if (_wifi_libnet_check_ap_validity(ap) == false || supported == NULL) {
1326 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1327 return WIFI_ERROR_INVALID_PARAMETER;
1330 net_profile_info_t *profile_info = ap;
1332 if (profile_info->ProfileInfo.Wlan.security_info.wps_support)
1337 return WIFI_ERROR_NONE;
1340 /* Wi-Fi EAP *****************************************************************/
1341 EXPORT_API int wifi_ap_set_eap_passphrase(wifi_ap_h ap, const char* user_name, const char* password)
1343 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_eap_passphrase");
1344 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1346 if (_wifi_libnet_check_ap_validity(ap) == false || (user_name == NULL && password == NULL)) {
1347 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1348 return WIFI_ERROR_INVALID_PARAMETER;
1351 net_profile_info_t *profile_info = ap;
1352 if (profile_info->ProfileInfo.Wlan.security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X)
1353 return WIFI_ERROR_INVALID_OPERATION;
1356 g_strlcpy(profile_info->ProfileInfo.Wlan.security_info.authentication.eap.username,
1357 user_name, NETPM_WLAN_USERNAME_LEN+1);
1360 g_strlcpy(profile_info->ProfileInfo.Wlan.security_info.authentication.eap.password,
1361 password, NETPM_WLAN_PASSWORD_LEN+1);
1363 return WIFI_ERROR_NONE;
1366 EXPORT_API int wifi_ap_get_eap_passphrase(wifi_ap_h ap, char** user_name, bool* is_password_set)
1368 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_eap_passphrase");
1369 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1371 if (_wifi_libnet_check_ap_validity(ap) == false || user_name == NULL || is_password_set == NULL) {
1372 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1373 return WIFI_ERROR_INVALID_PARAMETER;
1376 net_profile_info_t *profile_info = ap;
1377 if (profile_info->ProfileInfo.Wlan.security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X)
1378 return WIFI_ERROR_INVALID_OPERATION;
1380 *user_name = g_strdup(profile_info->ProfileInfo.Wlan.security_info.authentication.eap.username);
1381 if (*user_name == NULL)
1382 return WIFI_ERROR_OUT_OF_MEMORY;
1384 if (strlen(profile_info->ProfileInfo.Wlan.security_info.authentication.eap.password) > 0)
1385 *is_password_set = true;
1387 *is_password_set = false;
1390 return WIFI_ERROR_NONE;
1393 EXPORT_API int wifi_ap_get_eap_ca_cert_file(wifi_ap_h ap, char** file)
1395 net_profile_info_t *profile_info = NULL;
1397 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_eap_ca_cert_file");
1398 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1400 if (_wifi_libnet_check_ap_validity(ap) == false || file == NULL) {
1401 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1402 return WIFI_ERROR_INVALID_PARAMETER;
1405 profile_info = (net_profile_info_t *)ap;
1406 if (profile_info->ProfileInfo.Wlan.security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X)
1407 return WIFI_ERROR_INVALID_OPERATION;
1409 *file = g_strdup(profile_info->ProfileInfo.Wlan.security_info.authentication.eap.ca_cert_filename);
1411 return WIFI_ERROR_OUT_OF_MEMORY;
1413 return WIFI_ERROR_NONE;
1416 EXPORT_API int wifi_ap_set_eap_ca_cert_file(wifi_ap_h ap, const char* file)
1418 net_profile_info_t *profile_info = NULL;
1420 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_eap_ca_cert_file");
1421 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1423 if (_wifi_libnet_check_ap_validity(ap) == false || file == NULL) {
1424 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1425 return WIFI_ERROR_INVALID_PARAMETER;
1428 profile_info = (net_profile_info_t *)ap;
1429 if (profile_info->ProfileInfo.Wlan.security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X)
1430 return WIFI_ERROR_INVALID_OPERATION;
1432 g_strlcpy(profile_info->ProfileInfo.Wlan.security_info.authentication.eap.ca_cert_filename,
1433 file, NETPM_WLAN_CA_CERT_FILENAME_LEN+1);
1435 return WIFI_ERROR_NONE;
1438 EXPORT_API int wifi_ap_get_eap_client_cert_file(wifi_ap_h ap, char** file)
1440 net_profile_info_t *profile_info = NULL;
1442 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_eap_client_cert_file");
1443 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1445 if (_wifi_libnet_check_ap_validity(ap) == false || file == NULL) {
1446 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1447 return WIFI_ERROR_INVALID_PARAMETER;
1450 profile_info = (net_profile_info_t *)ap;
1451 if (profile_info->ProfileInfo.Wlan.security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X)
1452 return WIFI_ERROR_INVALID_OPERATION;
1454 *file = g_strdup(profile_info->ProfileInfo.Wlan.security_info.authentication.eap.client_cert_filename);
1456 return WIFI_ERROR_OUT_OF_MEMORY;
1458 return WIFI_ERROR_NONE;
1461 EXPORT_API int wifi_ap_set_eap_client_cert_file(wifi_ap_h ap, const char* file)
1463 net_profile_info_t *profile_info = NULL;
1465 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_eap_client_cert_file");
1466 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1468 if (_wifi_libnet_check_ap_validity(ap) == false || file == NULL) {
1469 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1470 return WIFI_ERROR_INVALID_PARAMETER;
1473 profile_info = (net_profile_info_t *)ap;
1474 if (profile_info->ProfileInfo.Wlan.security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X)
1475 return WIFI_ERROR_INVALID_OPERATION;
1477 g_strlcpy(profile_info->ProfileInfo.Wlan.security_info.authentication.eap.client_cert_filename,
1478 file, NETPM_WLAN_CLIENT_CERT_FILENAME_LEN+1);
1480 return WIFI_ERROR_NONE;
1483 EXPORT_API int wifi_ap_get_eap_private_key_file(wifi_ap_h ap, char** file)
1485 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_eap_private_key_file");
1486 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1488 if (_wifi_libnet_check_ap_validity(ap) == false || file == NULL) {
1489 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1490 return WIFI_ERROR_INVALID_PARAMETER;
1493 net_profile_info_t *profile_info = ap;
1494 if (profile_info->ProfileInfo.Wlan.security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X)
1495 return WIFI_ERROR_INVALID_OPERATION;
1497 *file = g_strdup(profile_info->ProfileInfo.Wlan.security_info.authentication.eap.private_key_filename);
1499 return WIFI_ERROR_OUT_OF_MEMORY;
1501 return WIFI_ERROR_NONE;
1504 EXPORT_API int wifi_ap_set_eap_private_key_info(wifi_ap_h ap, const char* file, const char* password)
1506 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_eap_private_key_info");
1507 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1509 if (_wifi_libnet_check_ap_validity(ap) == false || file == NULL) {
1510 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1511 return WIFI_ERROR_INVALID_PARAMETER;
1514 net_profile_info_t *profile_info = ap;
1515 if (profile_info->ProfileInfo.Wlan.security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X)
1516 return WIFI_ERROR_INVALID_OPERATION;
1518 g_strlcpy(profile_info->ProfileInfo.Wlan.security_info.authentication.eap.private_key_filename,
1519 file, NETPM_WLAN_PRIVATE_KEY_FILENAME_LEN+1);
1522 g_strlcpy(profile_info->ProfileInfo.Wlan.security_info.authentication.eap.private_key_passwd,
1523 password, NETPM_WLAN_PRIVATE_KEY_PASSWD_LEN+1);
1526 return WIFI_ERROR_NONE;
1529 EXPORT_API int wifi_ap_get_eap_type(wifi_ap_h ap, wifi_eap_type_e* type)
1531 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_eap_type");
1532 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1534 if (_wifi_libnet_check_ap_validity(ap) == false || type == NULL) {
1535 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1536 return WIFI_ERROR_INVALID_PARAMETER;
1539 net_profile_info_t *profile_info = ap;
1540 if (profile_info->ProfileInfo.Wlan.security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X)
1541 return WIFI_ERROR_INVALID_OPERATION;
1543 switch (profile_info->ProfileInfo.Wlan.security_info.authentication.eap.eap_type) {
1545 case WLAN_SEC_EAP_TYPE_PEAP:
1546 *type = WIFI_EAP_TYPE_PEAP;
1548 case WLAN_SEC_EAP_TYPE_TLS:
1549 *type = WIFI_EAP_TYPE_TLS;
1551 case WLAN_SEC_EAP_TYPE_TTLS:
1552 *type = WIFI_EAP_TYPE_TTLS;
1554 case WLAN_SEC_EAP_TYPE_SIM:
1555 *type = WIFI_EAP_TYPE_SIM;
1557 case WLAN_SEC_EAP_TYPE_AKA:
1558 *type = WIFI_EAP_TYPE_AKA;
1561 return WIFI_ERROR_OPERATION_FAILED;
1565 return WIFI_ERROR_NONE;
1568 EXPORT_API int wifi_ap_set_eap_type(wifi_ap_h ap, wifi_eap_type_e type)
1570 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_eap_type");
1571 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1573 if (_wifi_libnet_check_ap_validity(ap) == false) {
1574 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1575 return WIFI_ERROR_INVALID_PARAMETER;
1578 net_profile_info_t *profile_info = ap;
1579 if (profile_info->ProfileInfo.Wlan.security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X)
1580 return WIFI_ERROR_INVALID_OPERATION;
1584 case WIFI_EAP_TYPE_PEAP:
1585 profile_info->ProfileInfo.Wlan.security_info.authentication.eap.eap_type = WLAN_SEC_EAP_TYPE_PEAP;
1587 case WIFI_EAP_TYPE_TLS:
1588 profile_info->ProfileInfo.Wlan.security_info.authentication.eap.eap_type = WLAN_SEC_EAP_TYPE_TLS;
1590 case WIFI_EAP_TYPE_TTLS:
1591 profile_info->ProfileInfo.Wlan.security_info.authentication.eap.eap_type = WLAN_SEC_EAP_TYPE_TTLS;
1593 case WIFI_EAP_TYPE_SIM:
1594 profile_info->ProfileInfo.Wlan.security_info.authentication.eap.eap_type = WLAN_SEC_EAP_TYPE_SIM;
1596 case WIFI_EAP_TYPE_AKA:
1597 profile_info->ProfileInfo.Wlan.security_info.authentication.eap.eap_type = WLAN_SEC_EAP_TYPE_AKA;
1600 return WIFI_ERROR_INVALID_PARAMETER;
1604 return WIFI_ERROR_NONE;
1607 EXPORT_API int wifi_ap_get_eap_auth_type(wifi_ap_h ap, wifi_eap_auth_type_e* type)
1609 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_get_eap_auth_type");
1610 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1612 if (_wifi_libnet_check_ap_validity(ap) == false || type == NULL) {
1613 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1614 return WIFI_ERROR_INVALID_PARAMETER;
1617 net_profile_info_t *profile_info = ap;
1618 if (profile_info->ProfileInfo.Wlan.security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X)
1619 return WIFI_ERROR_INVALID_OPERATION;
1621 switch (profile_info->ProfileInfo.Wlan.security_info.authentication.eap.eap_auth) {
1623 case WLAN_SEC_EAP_AUTH_NONE:
1624 *type = WIFI_EAP_AUTH_TYPE_NONE;
1626 case WLAN_SEC_EAP_AUTH_PAP:
1627 *type = WIFI_EAP_AUTH_TYPE_PAP;
1629 case WLAN_SEC_EAP_AUTH_MSCHAP:
1630 *type = WIFI_EAP_AUTH_TYPE_MSCHAP;
1632 case WLAN_SEC_EAP_AUTH_MSCHAPV2:
1633 *type = WIFI_EAP_AUTH_TYPE_MSCHAPV2;
1635 case WLAN_SEC_EAP_AUTH_GTC:
1636 *type = WIFI_EAP_AUTH_TYPE_GTC;
1638 case WLAN_SEC_EAP_AUTH_MD5:
1639 *type = WIFI_EAP_AUTH_TYPE_MD5;
1642 return WIFI_ERROR_OPERATION_FAILED;
1646 return WIFI_ERROR_NONE;
1649 EXPORT_API int wifi_ap_set_eap_auth_type(wifi_ap_h ap, wifi_eap_auth_type_e type)
1651 DEPRECATED_LOG(__FUNCTION__, "wifi_manager_ap_set_eap_auth_type");
1652 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
1654 if (_wifi_libnet_check_ap_validity(ap) == false) {
1655 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
1656 return WIFI_ERROR_INVALID_PARAMETER;
1659 net_profile_info_t *profile_info = ap;
1660 if (profile_info->ProfileInfo.Wlan.security_info.sec_mode != WLAN_SEC_MODE_IEEE8021X)
1661 return WIFI_ERROR_INVALID_OPERATION;
1665 case WIFI_EAP_AUTH_TYPE_NONE:
1666 profile_info->ProfileInfo.Wlan.security_info.authentication.eap.eap_auth = WLAN_SEC_EAP_AUTH_NONE;
1668 case WIFI_EAP_AUTH_TYPE_PAP:
1669 profile_info->ProfileInfo.Wlan.security_info.authentication.eap.eap_auth = WLAN_SEC_EAP_AUTH_PAP;
1671 case WIFI_EAP_AUTH_TYPE_MSCHAP:
1672 profile_info->ProfileInfo.Wlan.security_info.authentication.eap.eap_auth = WLAN_SEC_EAP_AUTH_MSCHAP;
1674 case WIFI_EAP_AUTH_TYPE_MSCHAPV2:
1675 profile_info->ProfileInfo.Wlan.security_info.authentication.eap.eap_auth = WLAN_SEC_EAP_AUTH_MSCHAPV2;
1677 case WIFI_EAP_AUTH_TYPE_GTC:
1678 profile_info->ProfileInfo.Wlan.security_info.authentication.eap.eap_auth = WLAN_SEC_EAP_AUTH_GTC;
1680 case WIFI_EAP_AUTH_TYPE_MD5:
1681 profile_info->ProfileInfo.Wlan.security_info.authentication.eap.eap_auth = WLAN_SEC_EAP_AUTH_MD5;
1684 return WIFI_ERROR_INVALID_PARAMETER;
1688 return WIFI_ERROR_NONE;