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.
18 #include "wifi_config_private.h"
19 #include "net_wifi_private.h"
24 EXPORT_API int wifi_config_create(const char *name, const char *passphrase, wifi_security_type_e security_type, wifi_config_h *config)
26 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
28 struct _wifi_config *h = NULL;
30 if (_wifi_is_init() == false) {
31 WIFI_LOG(WIFI_ERROR, "Not initialized");
32 return WIFI_ERROR_INVALID_OPERATION;
35 if (config == NULL || name == NULL) {
36 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
37 return WIFI_ERROR_INVALID_PARAMETER;
40 h = g_new0(struct _wifi_config, 1);
42 return WIFI_ERROR_OUT_OF_MEMORY;
44 h->name = g_strdup(name);
45 h->passphrase = g_strdup(passphrase);
46 h->security_type = security_type;
49 h->proxy_address = NULL;
50 h->address_family = WIFI_ADDRESS_FAMILY_IPV4;
53 if (security_type == WIFI_SECURITY_TYPE_EAP) {
54 h->eap_config = g_new0(struct _wifi_eap_config, 1);
55 if (h->eap_config == NULL) {
57 g_free(h->passphrase);
59 return WIFI_ERROR_OUT_OF_MEMORY;
62 h->eap_config->ca_cert = NULL;
63 h->eap_config->client_cert = NULL;
64 h->eap_config->private_key = NULL;
65 h->eap_config->anonymous_identity = NULL;
66 h->eap_config->identity = NULL;
67 h->eap_config->subject_match = NULL;
68 h->eap_config->eap_type = -1;
69 h->eap_config->eap_auth_type = WIFI_EAP_AUTH_TYPE_NONE;
72 *config = (wifi_config_h)h;
74 return WIFI_ERROR_NONE;
77 EXPORT_API int wifi_config_clone(wifi_config_h origin, wifi_config_h *cloned_config)
79 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
81 struct _wifi_config *h = NULL;
82 struct _wifi_config *config = NULL;
84 if (_wifi_is_init() == false) {
85 WIFI_LOG(WIFI_ERROR, "Not initialized");
86 return WIFI_ERROR_INVALID_OPERATION;
89 if (origin == NULL || cloned_config == NULL) {
90 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
91 return WIFI_ERROR_INVALID_PARAMETER;
94 config = (struct _wifi_config *)origin;
96 h = g_new0(struct _wifi_config, 1);
98 return WIFI_ERROR_OUT_OF_MEMORY;
100 h->name = g_strdup(config->name);
101 h->passphrase = g_strdup(config->passphrase);
102 h->security_type = config->security_type;
103 h->is_saved = config->is_saved;
104 h->is_hidden = config->is_hidden;
105 h->proxy_address = g_strdup(config->proxy_address);
106 h->address_family = config->address_family;
108 if (config->eap_config) {
109 h->eap_config = g_new0(struct _wifi_eap_config, 1);
110 if (h->eap_config == NULL) {
112 g_free(h->passphrase);
113 g_free(h->proxy_address);
115 return WIFI_ERROR_OUT_OF_MEMORY;
118 h->eap_config->ca_cert = g_strdup(config->eap_config->ca_cert);
119 h->eap_config->client_cert = g_strdup(config->eap_config->client_cert);
120 h->eap_config->private_key = g_strdup(config->eap_config->private_key);
121 h->eap_config->anonymous_identity = g_strdup(config->eap_config->anonymous_identity);
122 h->eap_config->identity = g_strdup(config->eap_config->identity);
123 h->eap_config->subject_match = g_strdup(config->eap_config->subject_match);
124 h->eap_config->eap_type = config->eap_config->eap_type;
125 h->eap_config->eap_auth_type = config->eap_config->eap_auth_type;
128 *cloned_config = (wifi_config_h)h;
130 return WIFI_ERROR_NONE;
133 EXPORT_API int wifi_config_destroy(wifi_config_h config)
135 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
137 struct _wifi_config *h = (struct _wifi_config *)config;
139 if (_wifi_is_init() == false) {
140 WIFI_LOG(WIFI_ERROR, "Not initialized");
141 return WIFI_ERROR_INVALID_OPERATION;
144 if (config == NULL) {
145 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
146 return WIFI_ERROR_INVALID_PARAMETER;
150 g_free(h->passphrase);
151 g_free(h->proxy_address);
153 g_free(h->eap_config->ca_cert);
154 g_free(h->eap_config->client_cert);
155 g_free(h->eap_config->private_key);
156 g_free(h->eap_config->anonymous_identity);
157 g_free(h->eap_config->identity);
158 g_free(h->eap_config->subject_match);
159 g_free(h->eap_config);
163 return WIFI_ERROR_NONE;
166 EXPORT_API int wifi_config_save_configuration(wifi_config_h config)
168 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
170 int ret = WIFI_ERROR_NONE;
171 wifi_dbus *dbus_h = NULL;
172 struct _wifi_config *h = (struct _wifi_config *)config;
174 if (_wifi_is_init() == false) {
175 WIFI_LOG(WIFI_ERROR, "Not initialized");
176 return WIFI_ERROR_INVALID_OPERATION;
179 if (config == NULL || h->name == NULL) {
180 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
181 return WIFI_ERROR_INVALID_PARAMETER;
184 dbus_h = _wifi_get_dbus_handle();
185 if (dbus_h == NULL) {
186 WIFI_LOG(WIFI_ERROR, "Not initialized for wifi dbus connection");
187 return WIFI_ERROR_INVALID_OPERATION;
190 if (h->security_type == WIFI_SECURITY_TYPE_EAP) {
191 ret = wifi_save_eap_configurations(dbus_h, h->name, h->passphrase, h->security_type, h->proxy_address, h->eap_config, h->is_hidden);
192 if (ret != WIFI_ERROR_NONE)
193 WIFI_LOG(WIFI_ERROR, "Fail to wifi_save_eap_configurations");
195 ret = wifi_save_configurations(dbus_h, h->name, h->passphrase, h->security_type, h->proxy_address, h->is_hidden);
196 if (ret != WIFI_ERROR_NONE)
197 WIFI_LOG(WIFI_ERROR, "Fail to save configurations [%d]", ret);
205 EXPORT_API int wifi_config_foreach_configuration(wifi_config_list_cb callback, void *user_data)
207 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
209 int ret = WIFI_ERROR_NONE;
210 wifi_dbus *dbus_h = NULL;
211 GSList *config_ids = NULL;
213 if (_wifi_is_init() == false) {
214 WIFI_LOG(WIFI_ERROR, "Not initialized");
215 return WIFI_ERROR_INVALID_OPERATION;
218 if (callback == NULL) {
219 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
220 return WIFI_ERROR_INVALID_PARAMETER;
223 dbus_h = _wifi_get_dbus_handle();
224 if (dbus_h == NULL) {
225 WIFI_LOG(WIFI_ERROR, "Not initialized for wifi dbus connection");
226 return WIFI_ERROR_INVALID_OPERATION;
229 config_ids = wifi_config_get_config_id_list(dbus_h);
230 if (config_ids == NULL) {
231 WIFI_LOG(WIFI_ERROR, "Fail to wifi_get_config_id_list");
232 return WIFI_ERROR_INVALID_OPERATION;
237 struct _wifi_config *h;
238 gchar *id = config_ids->data;
240 h = g_new0(struct _wifi_config, 1);
242 ret = WIFI_ERROR_OUT_OF_MEMORY;
246 if (g_str_has_suffix(id, "ieee8021x") == TRUE) {
247 h->eap_config = g_new0(struct _wifi_eap_config, 1);
248 if (h->eap_config == NULL) {
249 ret = WIFI_ERROR_OUT_OF_MEMORY;
252 ret = wifi_load_eap_configurations(dbus_h, id, &h->name,
253 &h->security_type, &h->proxy_address, &h->is_hidden, &h->eap_config, &h->last_error);
255 ret = wifi_load_configurations(dbus_h, id, &h->name,
256 &h->security_type, &h->proxy_address, &h->is_hidden, &h->last_error);
259 if (ret != WIFI_ERROR_NONE) {
260 WIFI_LOG(WIFI_ERROR, "Fail to load configurations [%d]", ret);
264 h->address_family = WIFI_ADDRESS_FAMILY_IPV4;
266 rv = callback((wifi_config_h)h, user_data);
268 g_free(h->proxy_address);
270 g_free(h->eap_config->ca_cert);
271 g_free(h->eap_config->client_cert);
272 g_free(h->eap_config->private_key);
273 g_free(h->eap_config->anonymous_identity);
274 g_free(h->eap_config->identity);
275 g_free(h->eap_config->subject_match);
276 g_free(h->eap_config);
284 config_ids = config_ids->next;
287 config_ids = g_slist_nth(config_ids, 0);
288 g_slist_free_full(config_ids, g_free);
293 EXPORT_API int wifi_config_get_name(wifi_config_h config, char **name)
295 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
297 struct _wifi_config *h = (struct _wifi_config *)config;
299 if (_wifi_is_init() == false) {
300 WIFI_LOG(WIFI_ERROR, "Not initialized");
301 return WIFI_ERROR_INVALID_OPERATION;
304 if (config == NULL || name == NULL) {
305 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
306 return WIFI_ERROR_INVALID_PARAMETER;
310 *name = g_strdup(h->name);
314 return WIFI_ERROR_NONE;
317 EXPORT_API int wifi_config_get_security_type(wifi_config_h config, wifi_security_type_e *security_type)
319 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
321 struct _wifi_config *h = (struct _wifi_config *)config;
323 if (_wifi_is_init() == false) {
324 WIFI_LOG(WIFI_ERROR, "Not initialized");
325 return WIFI_ERROR_INVALID_OPERATION;
328 if (config == NULL || security_type == NULL) {
329 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
330 return WIFI_ERROR_INVALID_PARAMETER;
333 *security_type = h->security_type;
335 return WIFI_ERROR_NONE;
339 * wifi configuration set field
341 EXPORT_API int wifi_config_set_proxy_address(wifi_config_h config, wifi_address_family_e address_family, const char *proxy_address)
343 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
345 struct _wifi_config *h = (struct _wifi_config *)config;
346 int ret = WIFI_ERROR_NONE;
348 if (_wifi_is_init() == false) {
349 WIFI_LOG(WIFI_ERROR, "Not initialized");
350 return WIFI_ERROR_INVALID_OPERATION;
353 if (config == NULL) {
354 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
355 return WIFI_ERROR_INVALID_PARAMETER;
357 if ((address_family != WIFI_ADDRESS_FAMILY_IPV4 && address_family != WIFI_ADDRESS_FAMILY_IPV6)) {
358 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
359 return WIFI_ERROR_INVALID_PARAMETER;
362 if (address_family == WIFI_ADDRESS_FAMILY_IPV6) {
363 WIFI_LOG(WIFI_ERROR, "Not supported yet");
364 return WIFI_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
367 h->address_family = address_family;
368 h->proxy_address = g_strdup(proxy_address);
370 if (h->is_saved == TRUE) {
371 wifi_dbus *dbus_h = NULL;
372 gchar *config_id = NULL;
374 dbus_h = _wifi_get_dbus_handle();
375 if (dbus_h == NULL) {
376 WIFI_LOG(WIFI_ERROR, "Not initialized for wifi dbus connection");
377 return WIFI_ERROR_INVALID_OPERATION;
380 config_id = wifi_config_get_config_id(h->name, h->security_type);
382 ret = wifi_configuration_set_field(dbus_h, config_id, WIFI_CONFIG_PROXYADDRESS, proxy_address);
383 if (ret != WIFI_ERROR_NONE)
384 WIFI_LOG(WIFI_ERROR, "Fail to set proxy address [%d]", ret);
392 EXPORT_API int wifi_config_get_proxy_address(wifi_config_h config, wifi_address_family_e *address_family, char **proxy_address)
394 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
396 struct _wifi_config *h = (struct _wifi_config *)config;
398 if (_wifi_is_init() == false) {
399 WIFI_LOG(WIFI_ERROR, "Not initialized");
400 return WIFI_ERROR_INVALID_OPERATION;
403 if (config == NULL || address_family == NULL || proxy_address == NULL) {
404 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
405 return WIFI_ERROR_INVALID_PARAMETER;
408 *address_family = h->address_family;
409 *proxy_address = g_strdup(h->proxy_address);
411 return WIFI_ERROR_NONE;
414 EXPORT_API int wifi_config_set_hidden_ap_property(wifi_config_h config, bool hidden)
416 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
418 struct _wifi_config *h = (struct _wifi_config *)config;
419 int ret = WIFI_ERROR_NONE;
421 if (_wifi_is_init() == false) {
422 WIFI_LOG(WIFI_ERROR, "Not initialized");
423 return WIFI_ERROR_INVALID_OPERATION;
426 if (config == NULL) {
427 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
428 return WIFI_ERROR_INVALID_PARAMETER;
431 h->is_hidden = hidden;
433 if (h->is_saved == TRUE) {
434 wifi_dbus *dbus_h = NULL;
435 char *config_id = NULL;
438 dbus_h = _wifi_get_dbus_handle();
439 if (dbus_h == NULL) {
440 WIFI_LOG(WIFI_ERROR, "Not initialized for wifi dbus connection");
441 return WIFI_ERROR_INVALID_OPERATION;
444 config_id = wifi_config_get_config_id(h->name, h->security_type);
446 if (h->is_hidden == TRUE)
447 hidden = g_strdup("TRUE");
449 hidden = g_strdup("FALSE");
451 ret = wifi_configuration_set_field(dbus_h, config_id, WIFI_CONFIG_HIDDEN, hidden);
452 if (ret != WIFI_ERROR_NONE)
453 WIFI_LOG(WIFI_ERROR, "Fail to set hidden [%d]", ret);
462 EXPORT_API int wifi_config_get_hidden_ap_property(wifi_config_h config, bool *hidden)
464 CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
466 struct _wifi_config *h = (struct _wifi_config *)config;
468 if (_wifi_is_init() == false) {
469 WIFI_LOG(WIFI_ERROR, "Not initialized");
470 return WIFI_ERROR_INVALID_OPERATION;
473 if (config == NULL || hidden == NULL) {
474 WIFI_LOG(WIFI_ERROR, "Invalid parameter");
475 return WIFI_ERROR_INVALID_PARAMETER;
478 *hidden = h->is_hidden;
480 return WIFI_ERROR_NONE;
483 EXPORT_API int wifi_config_get_eap_anonymous_identity(wifi_config_h config, char** anonymous_identity)
485 struct _wifi_config *h = (struct _wifi_config *)config;
488 return WIFI_ERROR_INVALID_PARAMETER;
489 if (h->eap_config == NULL)
490 return WIFI_ERROR_INVALID_PARAMETER;
491 if (anonymous_identity == NULL)
492 return WIFI_ERROR_INVALID_PARAMETER;
494 *anonymous_identity = g_strdup(h->eap_config->anonymous_identity);
496 return WIFI_ERROR_NONE;
499 EXPORT_API int wifi_config_set_eap_anonymous_identity(wifi_config_h config, const char* anonymous_identity)
501 struct _wifi_config *h = (struct _wifi_config *)config;
504 return WIFI_ERROR_INVALID_PARAMETER;
505 if (h->eap_config == NULL)
506 return WIFI_ERROR_INVALID_PARAMETER;
508 h->eap_config->anonymous_identity = g_strdup(anonymous_identity);
510 if (h->is_saved == TRUE) {
511 wifi_dbus *dbus_h = NULL;
512 gchar *config_id = NULL;
514 dbus_h = _wifi_get_dbus_handle();
515 if (dbus_h == NULL) {
516 WIFI_LOG(WIFI_ERROR, "Not initialized for wifi dbus connection");
517 return WIFI_ERROR_INVALID_OPERATION;
520 config_id = wifi_config_get_config_id(h->name, h->security_type);
522 wifi_configuration_set_field(dbus_h, config_id, WIFI_CONFIG_EAP_ANONYMOUS_IDENTITY, anonymous_identity);
527 return WIFI_ERROR_NONE;
530 EXPORT_API int wifi_config_get_eap_ca_cert_file(wifi_config_h config, char** ca_cert)
532 struct _wifi_config *h = (struct _wifi_config *)config;
535 return WIFI_ERROR_INVALID_PARAMETER;
536 if (h->eap_config == NULL)
537 return WIFI_ERROR_INVALID_PARAMETER;
539 return WIFI_ERROR_INVALID_PARAMETER;
541 *ca_cert = g_strdup(h->eap_config->ca_cert);
543 return WIFI_ERROR_NONE;
546 EXPORT_API int wifi_config_set_eap_ca_cert_file(wifi_config_h config, const char* ca_cert)
548 struct _wifi_config *h = (struct _wifi_config *)config;
551 return WIFI_ERROR_INVALID_PARAMETER;
552 if (h->eap_config == NULL)
553 return WIFI_ERROR_INVALID_PARAMETER;
555 h->eap_config->ca_cert = g_strdup(ca_cert);
557 if (h->is_saved == TRUE) {
558 wifi_dbus *dbus_h = NULL;
559 gchar *config_id = NULL;
561 dbus_h = _wifi_get_dbus_handle();
562 if (dbus_h == NULL) {
563 WIFI_LOG(WIFI_ERROR, "Not initialized for wifi dbus connection");
564 return WIFI_ERROR_INVALID_OPERATION;
567 config_id = wifi_config_get_config_id(h->name, h->security_type);
569 wifi_configuration_set_field(dbus_h, config_id, WIFI_CONFIG_EAP_CACERT, ca_cert);
574 return WIFI_ERROR_NONE;
577 EXPORT_API int wifi_config_get_eap_client_cert_file(wifi_config_h config, char** client_cert)
579 struct _wifi_config *h = (struct _wifi_config *)config;
582 return WIFI_ERROR_INVALID_PARAMETER;
583 if (h->eap_config == NULL)
584 return WIFI_ERROR_INVALID_PARAMETER;
585 if (client_cert == NULL)
586 return WIFI_ERROR_INVALID_PARAMETER;
588 *client_cert = g_strdup(h->eap_config->client_cert);
590 return WIFI_ERROR_NONE;
593 EXPORT_API int wifi_config_set_eap_client_cert_file(wifi_config_h config, const char* private_key, const char* client_cert)
595 struct _wifi_config *h = (struct _wifi_config *)config;
598 return WIFI_ERROR_INVALID_PARAMETER;
599 if (h->eap_config == NULL)
600 return WIFI_ERROR_INVALID_PARAMETER;
602 h->eap_config->private_key = g_strdup(private_key);
603 h->eap_config->client_cert = g_strdup(client_cert);
605 if (h->is_saved == TRUE) {
606 wifi_dbus *dbus_h = NULL;
607 gchar *config_id = NULL;
609 dbus_h = _wifi_get_dbus_handle();
610 if (dbus_h == NULL) {
611 WIFI_LOG(WIFI_ERROR, "Not initialized for wifi dbus connection");
612 return WIFI_ERROR_INVALID_OPERATION;
615 config_id = wifi_config_get_config_id(h->name, h->security_type);
617 wifi_configuration_set_field(dbus_h, config_id, WIFI_CONFIG_EAP_CLIENTCERT, client_cert);
618 wifi_configuration_set_field(dbus_h, config_id, WIFI_CONFIG_EAP_PRIVATEKEY, private_key);
623 return WIFI_ERROR_NONE;
626 EXPORT_API int wifi_config_get_eap_identity(wifi_config_h config, char** identity)
628 struct _wifi_config *h = (struct _wifi_config *)config;
631 return WIFI_ERROR_INVALID_PARAMETER;
632 if (h->eap_config == NULL)
633 return WIFI_ERROR_INVALID_PARAMETER;
634 if (identity == NULL)
635 return WIFI_ERROR_INVALID_PARAMETER;
637 *identity = g_strdup(h->eap_config->identity);
639 return WIFI_ERROR_NONE;
642 EXPORT_API int wifi_config_set_eap_identity(wifi_config_h config, const char* identity)
644 struct _wifi_config *h = (struct _wifi_config *)config;
647 return WIFI_ERROR_INVALID_PARAMETER;
648 if (h->eap_config == NULL)
649 return WIFI_ERROR_INVALID_PARAMETER;
651 h->eap_config->identity = g_strdup(identity);
653 if (h->is_saved == TRUE) {
654 wifi_dbus *dbus_h = NULL;
655 gchar *config_id = NULL;
657 dbus_h = _wifi_get_dbus_handle();
658 if (dbus_h == NULL) {
659 WIFI_LOG(WIFI_ERROR, "Not initialized for wifi dbus connection");
660 return WIFI_ERROR_INVALID_OPERATION;
663 config_id = wifi_config_get_config_id(h->name, h->security_type);
665 wifi_configuration_set_field(dbus_h, config_id, WIFI_CONFIG_EAP_IDENTITY, identity);
670 return WIFI_ERROR_NONE;
673 EXPORT_API int wifi_config_get_eap_type(wifi_config_h config, wifi_eap_type_e *eap_type)
675 struct _wifi_config *h = (struct _wifi_config *)config;
678 return WIFI_ERROR_INVALID_PARAMETER;
679 if (h->eap_config == NULL)
680 return WIFI_ERROR_INVALID_PARAMETER;
681 if (eap_type == NULL)
682 return WIFI_ERROR_INVALID_PARAMETER;
684 *eap_type = h->eap_config->eap_type;
686 return WIFI_ERROR_NONE;
689 EXPORT_API int wifi_config_set_eap_type(wifi_config_h config, wifi_eap_type_e eap_type)
691 struct _wifi_config *h = (struct _wifi_config *)config;
694 return WIFI_ERROR_INVALID_PARAMETER;
695 if (h->eap_config == NULL)
696 return WIFI_ERROR_INVALID_PARAMETER;
698 h->eap_config->eap_type = eap_type;
700 if (h->is_saved == TRUE) {
701 wifi_dbus *dbus_h = NULL;
702 gchar *config_id = NULL;
705 dbus_h = _wifi_get_dbus_handle();
706 if (dbus_h == NULL) {
707 WIFI_LOG(WIFI_ERROR, "Not initialized for wifi dbus connection");
708 return WIFI_ERROR_INVALID_OPERATION;
711 config_id = wifi_config_get_config_id(h->name, h->security_type);
713 value = wifi_eap_type_to_string(eap_type);
715 wifi_configuration_set_field(dbus_h, config_id, WIFI_CONFIG_EAP_TYPE, value);
721 return WIFI_ERROR_NONE;
724 EXPORT_API int wifi_config_get_eap_auth_type(wifi_config_h config, wifi_eap_auth_type_e* eap_auth_type)
726 struct _wifi_config *h = (struct _wifi_config *)config;
729 return WIFI_ERROR_INVALID_PARAMETER;
730 if (h->eap_config == NULL)
731 return WIFI_ERROR_INVALID_PARAMETER;
732 if (eap_auth_type == NULL)
733 return WIFI_ERROR_INVALID_PARAMETER;
735 *eap_auth_type = h->eap_config->eap_auth_type;
737 return WIFI_ERROR_NONE;
740 EXPORT_API int wifi_config_set_eap_auth_type(wifi_config_h config, wifi_eap_auth_type_e eap_auth_type)
742 struct _wifi_config *h = (struct _wifi_config *)config;
745 return WIFI_ERROR_INVALID_PARAMETER;
746 if (h->eap_config == NULL)
747 return WIFI_ERROR_INVALID_PARAMETER;
749 h->eap_config->eap_auth_type = eap_auth_type;
751 if (h->is_saved == TRUE) {
752 wifi_dbus *dbus_h = NULL;
753 gchar *config_id = NULL;
756 dbus_h = _wifi_get_dbus_handle();
757 if (dbus_h == NULL) {
758 WIFI_LOG(WIFI_ERROR, "Not initialized for wifi dbus connection");
759 return WIFI_ERROR_INVALID_OPERATION;
762 config_id = wifi_config_get_config_id(h->name, h->security_type);
764 value = wifi_eap_auth_type_to_string(eap_auth_type);
766 wifi_configuration_set_field(dbus_h, config_id, WIFI_CONFIG_EAP_AUTH_TYPE, value);
772 return WIFI_ERROR_NONE;
775 EXPORT_API int wifi_config_get_eap_subject_match(wifi_config_h config, char** subject_match)
777 struct _wifi_config *h = (struct _wifi_config *)config;
780 return WIFI_ERROR_INVALID_PARAMETER;
781 if (h->eap_config == NULL)
782 return WIFI_ERROR_INVALID_PARAMETER;
783 if (subject_match == NULL)
784 return WIFI_ERROR_INVALID_PARAMETER;
786 *subject_match = g_strdup(h->eap_config->subject_match);
788 return WIFI_ERROR_NONE;
791 EXPORT_API int wifi_config_set_eap_subject_match(wifi_config_h config, const char* subject_match)
793 struct _wifi_config *h = (struct _wifi_config *)config;
796 return WIFI_ERROR_INVALID_PARAMETER;
797 if (h->eap_config == NULL)
798 return WIFI_ERROR_INVALID_PARAMETER;
800 h->eap_config->subject_match = g_strdup(subject_match);
802 if (h->is_saved == TRUE) {
803 wifi_dbus *dbus_h = NULL;
804 gchar *config_id = NULL;
806 dbus_h = _wifi_get_dbus_handle();
807 if (dbus_h == NULL) {
808 WIFI_LOG(WIFI_ERROR, "Not initialized for wifi dbus connection");
809 return WIFI_ERROR_INVALID_OPERATION;
812 config_id = wifi_config_get_config_id(h->name, h->security_type);
814 wifi_configuration_set_field(dbus_h, config_id, WIFI_CONFIG_EAP_SUBJECT_MATCH, subject_match);
819 return WIFI_ERROR_NONE;