2 * Copyright (c) 2011-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.
20 #include <vconf/vconf.h>
21 #include "net_connection_private.h"
23 #define HTTP_PROXY "http_proxy"
25 static net_dev_info_t* __profile_get_net_info(net_profile_info_t *profile_info)
27 switch (profile_info->profile_type) {
28 case NET_DEVICE_CELLULAR:
29 return &profile_info->ProfileInfo.Pdp.net_info;
31 return &profile_info->ProfileInfo.Wlan.net_info;
32 case NET_DEVICE_ETHERNET:
33 return &profile_info->ProfileInfo.Ethernet.net_info;
34 case NET_DEVICE_BLUETOOTH:
35 return &profile_info->ProfileInfo.Bluetooth.net_info;
36 case NET_DEVICE_DEFAULT:
38 case NET_DEVICE_UNKNOWN:
45 static char* __profile_convert_ip_to_string(net_addr_t *ip_addr)
47 unsigned char *ipaddr = (unsigned char *)&ip_addr->Data.Ipv4.s_addr;
49 char *ipstr = g_try_malloc0(16);
53 snprintf(ipstr, 16, "%d.%d.%d.%d", ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]);
58 static void __profile_init_cellular_profile(net_profile_info_t *profile_info, const char *keyword)
60 profile_info->profile_type = NET_DEVICE_CELLULAR;
61 profile_info->ProfileState = NET_STATE_TYPE_IDLE;
62 profile_info->ProfileInfo.Pdp.net_info.IpConfigType = NET_IP_CONFIG_TYPE_OFF;
63 profile_info->ProfileInfo.Pdp.net_info.ProxyMethod = NET_PROXY_TYPE_DIRECT;
64 g_strlcpy(profile_info->ProfileInfo.Pdp.Keyword, keyword, NET_PDP_APN_LEN_MAX);
67 static void __profile_init_wifi_profile(net_profile_info_t *profile_info)
69 profile_info->profile_type = NET_DEVICE_WIFI;
70 profile_info->ProfileState = NET_STATE_TYPE_IDLE;
71 profile_info->ProfileInfo.Wlan.net_info.IpConfigType = NET_IP_CONFIG_TYPE_OFF;
72 profile_info->ProfileInfo.Wlan.net_info.ProxyMethod = NET_PROXY_TYPE_DIRECT;
73 profile_info->ProfileInfo.Wlan.wlan_mode = NETPM_WLAN_CONNMODE_AUTO;
74 profile_info->ProfileInfo.Wlan.security_info.sec_mode = WLAN_SEC_MODE_NONE;
75 profile_info->ProfileInfo.Wlan.security_info.enc_mode = WLAN_ENC_MODE_NONE;
78 static const char* __profile_get_ethernet_proxy(void)
82 proxy = getenv(HTTP_PROXY);
85 CONNECTION_LOG(CONNECTION_ERROR, "Fail to get system proxy");
89 CONNECTION_LOG(CONNECTION_INFO, "Get system proxy: %s", proxy);
93 connection_cellular_service_type_e _profile_convert_to_connection_cellular_service_type(net_service_type_t svc_type)
96 case NET_SERVICE_INTERNET:
97 return CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET;
99 return CONNECTION_CELLULAR_SERVICE_TYPE_MMS;
100 case NET_SERVICE_PREPAID_INTERNET:
101 return CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_INTERNET;
102 case NET_SERVICE_PREPAID_MMS:
103 return CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_MMS;
104 case NET_SERVICE_TETHERING:
105 return CONNECTION_CELLULAR_SERVICE_TYPE_TETHERING;
106 case NET_SERVICE_APPLICATION:
107 return CONNECTION_CELLULAR_SERVICE_TYPE_APPLICATION;
109 return CONNECTION_CELLULAR_SERVICE_TYPE_UNKNOWN;
113 connection_profile_state_e _profile_convert_to_cp_state(net_state_type_t state)
115 connection_profile_state_e cp_state;
118 case NET_STATE_TYPE_ONLINE:
119 case NET_STATE_TYPE_READY:
120 cp_state = CONNECTION_PROFILE_STATE_CONNECTED;
122 case NET_STATE_TYPE_IDLE:
123 case NET_STATE_TYPE_FAILURE:
124 case NET_STATE_TYPE_DISCONNECT:
125 cp_state = CONNECTION_PROFILE_STATE_DISCONNECTED;
127 case NET_STATE_TYPE_ASSOCIATION:
128 cp_state = CONNECTION_PROFILE_STATE_ASSOCIATION;
130 case NET_STATE_TYPE_CONFIGURATION:
131 cp_state = CONNECTION_PROFILE_STATE_CONFIGURATION;
140 net_service_type_t _connection_profile_convert_to_libnet_cellular_service_type(connection_cellular_service_type_e svc_type)
143 case CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET:
144 return NET_SERVICE_INTERNET;
145 case CONNECTION_CELLULAR_SERVICE_TYPE_MMS:
146 return NET_SERVICE_MMS;
147 case CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_INTERNET:
148 return NET_SERVICE_PREPAID_INTERNET;
149 case CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_MMS:
150 return NET_SERVICE_PREPAID_MMS;
151 case CONNECTION_CELLULAR_SERVICE_TYPE_TETHERING:
152 return NET_SERVICE_TETHERING;
153 case CONNECTION_CELLULAR_SERVICE_TYPE_APPLICATION:
154 return NET_SERVICE_APPLICATION;
156 return NET_SERVICE_UNKNOWN;
160 net_state_type_t _connection_profile_convert_to_net_state(connection_profile_state_e state)
162 net_state_type_t libnet_state = NET_STATE_TYPE_UNKNOWN;
165 case CONNECTION_PROFILE_STATE_CONNECTED:
166 libnet_state = NET_STATE_TYPE_ONLINE;
168 case CONNECTION_PROFILE_STATE_DISCONNECTED:
169 libnet_state = NET_STATE_TYPE_IDLE;
171 case CONNECTION_PROFILE_STATE_ASSOCIATION:
172 libnet_state = NET_STATE_TYPE_ASSOCIATION;
174 case CONNECTION_PROFILE_STATE_CONFIGURATION:
175 libnet_state = NET_STATE_TYPE_CONFIGURATION;
183 /* Connection profile module *********************************************************************/
185 int connection_profile_create(connection_profile_type_e type, const char* keyword, connection_profile_h* profile)
187 if ((type != CONNECTION_PROFILE_TYPE_CELLULAR &&
188 type != CONNECTION_PROFILE_TYPE_WIFI) || profile == NULL) {
189 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
190 return CONNECTION_ERROR_INVALID_PARAMETER;
193 net_profile_info_t *profile_info = g_try_malloc0(sizeof(net_profile_info_t));
194 if (profile_info == NULL)
195 return CONNECTION_ERROR_OUT_OF_MEMORY;
198 case CONNECTION_PROFILE_TYPE_CELLULAR:
199 if (keyword == NULL) {
200 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
201 return CONNECTION_ERROR_INVALID_PARAMETER;
203 __profile_init_cellular_profile(profile_info, keyword);
205 case CONNECTION_PROFILE_TYPE_WIFI:
206 __profile_init_wifi_profile(profile_info);
212 *profile = (connection_profile_h)profile_info;
213 _connection_libnet_add_to_profile_list(*profile);
215 return CONNECTION_ERROR_NONE;
218 int connection_profile_destroy(connection_profile_h profile)
220 if (!(_connection_libnet_check_profile_validity(profile))) {
221 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
222 return CONNECTION_ERROR_INVALID_PARAMETER;
225 _connection_libnet_remove_from_profile_list(profile);
227 return CONNECTION_ERROR_NONE;
230 int connection_profile_clone(connection_profile_h* cloned_profile, connection_profile_h origin_profile)
232 if (!(_connection_libnet_check_profile_validity(origin_profile)) || cloned_profile == NULL) {
233 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
234 return CONNECTION_ERROR_INVALID_PARAMETER;
237 *cloned_profile = g_try_malloc0(sizeof(net_profile_info_t));
238 if (*cloned_profile == NULL)
239 return CONNECTION_ERROR_OUT_OF_MEMORY;
241 memcpy(*cloned_profile, origin_profile, sizeof(net_profile_info_t));
242 _connection_libnet_add_to_profile_list(*cloned_profile);
244 return CONNECTION_ERROR_NONE;
247 int connection_profile_get_id(connection_profile_h profile, char** profile_id)
249 if (!(_connection_libnet_check_profile_validity(profile)) || profile_id == NULL) {
250 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
251 return CONNECTION_ERROR_INVALID_PARAMETER;
254 net_profile_info_t *profile_info = profile;
256 char *prof_id = strrchr(profile_info->ProfileName, '/');
258 return CONNECTION_ERROR_INVALID_PARAMETER;
261 *profile_id = g_strdup(prof_id);
263 if (*profile_id == NULL)
264 return CONNECTION_ERROR_OUT_OF_MEMORY;
266 return CONNECTION_ERROR_NONE;
269 int connection_profile_get_name(connection_profile_h profile, char** profile_name)
271 if (!(_connection_libnet_check_profile_validity(profile)) || profile_name == NULL) {
272 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
273 return CONNECTION_ERROR_INVALID_PARAMETER;
276 net_profile_info_t *profile_info = profile;
278 switch (profile_info->profile_type) {
279 case NET_DEVICE_CELLULAR:
280 *profile_name = g_strdup(profile_info->ProfileInfo.Pdp.Keyword);
282 case NET_DEVICE_WIFI:
283 *profile_name = g_strdup(profile_info->ProfileInfo.Wlan.essid);
285 case NET_DEVICE_ETHERNET:
286 *profile_name = g_strdup(profile_info->ProfileInfo.Ethernet.net_info.DevName);
288 case NET_DEVICE_BLUETOOTH: {
289 char *bt_name = strrchr(profile_info->ProfileName, '/');
291 return CONNECTION_ERROR_INVALID_PARAMETER;
294 *profile_name = g_strdup(bt_name);
297 return CONNECTION_ERROR_INVALID_PARAMETER;
300 if (*profile_name == NULL)
301 return CONNECTION_ERROR_OUT_OF_MEMORY;
303 return CONNECTION_ERROR_NONE;
306 int connection_profile_get_type(connection_profile_h profile, connection_profile_type_e* type)
308 if (!(_connection_libnet_check_profile_validity(profile)) || type == NULL) {
309 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
310 return CONNECTION_ERROR_INVALID_PARAMETER;
313 net_profile_info_t *profile_info = profile;
315 switch (profile_info->profile_type) {
316 case NET_DEVICE_CELLULAR:
317 *type = CONNECTION_PROFILE_TYPE_CELLULAR;
319 case NET_DEVICE_WIFI:
320 *type = CONNECTION_PROFILE_TYPE_WIFI;
322 case NET_DEVICE_ETHERNET:
323 *type = CONNECTION_PROFILE_TYPE_ETHERNET;
325 case NET_DEVICE_BLUETOOTH:
326 *type = CONNECTION_PROFILE_TYPE_BT;
329 CONNECTION_LOG(CONNECTION_ERROR, "Invalid profile type\n");
330 return CONNECTION_ERROR_OPERATION_FAILED;
333 return CONNECTION_ERROR_NONE;
336 int connection_profile_get_network_interface_name(connection_profile_h profile, char** interface_name)
338 if (!(_connection_libnet_check_profile_validity(profile)) || interface_name == NULL) {
339 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
340 return CONNECTION_ERROR_INVALID_PARAMETER;
343 net_profile_info_t *profile_info = profile;
344 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
345 if (net_info == NULL)
346 return CONNECTION_ERROR_INVALID_PARAMETER;
348 *interface_name = g_strdup(net_info->DevName);
349 if (*interface_name == NULL)
350 return CONNECTION_ERROR_OUT_OF_MEMORY;
352 return CONNECTION_ERROR_NONE;
355 int connection_profile_refresh(connection_profile_h profile)
357 if (!(_connection_libnet_check_profile_validity(profile))) {
358 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
359 return CONNECTION_ERROR_INVALID_PARAMETER;
362 net_profile_info_t profile_info_local;
363 net_profile_info_t *profile_info = profile;
365 if (net_get_profile_info(profile_info->ProfileName, &profile_info_local) != NET_ERR_NONE) {
366 CONNECTION_LOG(CONNECTION_ERROR, "Error!!! net_get_profile_info() failed\n");
367 return CONNECTION_ERROR_OPERATION_FAILED;
370 memcpy(profile, &profile_info_local, sizeof(net_profile_info_t));
372 return CONNECTION_ERROR_NONE;
375 int connection_profile_get_state(connection_profile_h profile, connection_profile_state_e* state)
377 if (!(_connection_libnet_check_profile_validity(profile)) || state == NULL) {
378 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
379 return CONNECTION_ERROR_INVALID_PARAMETER;
382 net_profile_info_t *profile_info = profile;
383 *state = _profile_convert_to_cp_state(profile_info->ProfileState);
385 return CONNECTION_ERROR_OPERATION_FAILED;
387 return CONNECTION_ERROR_NONE;
390 int connection_profile_get_ip_config_type(connection_profile_h profile,
391 connection_address_family_e address_family, connection_ip_config_type_e* type)
393 if (!(_connection_libnet_check_profile_validity(profile)) ||
394 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
395 address_family != CONNECTION_ADDRESS_FAMILY_IPV6) ||
397 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
398 return CONNECTION_ERROR_INVALID_PARAMETER;
401 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
402 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
404 net_profile_info_t *profile_info = profile;
405 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
406 if (net_info == NULL)
407 return CONNECTION_ERROR_OPERATION_FAILED;
409 switch (net_info->IpConfigType) {
410 case NET_IP_CONFIG_TYPE_STATIC:
411 *type = CONNECTION_IP_CONFIG_TYPE_STATIC;
413 case NET_IP_CONFIG_TYPE_DYNAMIC:
414 *type = CONNECTION_IP_CONFIG_TYPE_DYNAMIC;
416 case NET_IP_CONFIG_TYPE_AUTO_IP:
417 *type = CONNECTION_IP_CONFIG_TYPE_AUTO;
419 case NET_IP_CONFIG_TYPE_FIXED:
420 *type = CONNECTION_IP_CONFIG_TYPE_FIXED;
422 case NET_IP_CONFIG_TYPE_OFF:
423 *type = CONNECTION_IP_CONFIG_TYPE_NONE;
426 return CONNECTION_ERROR_OPERATION_FAILED;
429 return CONNECTION_ERROR_NONE;
432 int connection_profile_get_ip_address(connection_profile_h profile,
433 connection_address_family_e address_family, char** ip_address)
435 if (!(_connection_libnet_check_profile_validity(profile)) ||
436 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
437 address_family != CONNECTION_ADDRESS_FAMILY_IPV6) ||
438 ip_address == NULL) {
439 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
440 return CONNECTION_ERROR_INVALID_PARAMETER;
443 net_profile_info_t *profile_info = profile;
444 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
445 if (net_info == NULL)
446 return CONNECTION_ERROR_OPERATION_FAILED;
448 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
449 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
451 *ip_address = __profile_convert_ip_to_string(&net_info->IpAddr);
452 if (*ip_address == NULL)
453 return CONNECTION_ERROR_OUT_OF_MEMORY;
455 return CONNECTION_ERROR_NONE;
458 int connection_profile_get_subnet_mask(connection_profile_h profile,
459 connection_address_family_e address_family, char** subnet_mask)
461 if (!(_connection_libnet_check_profile_validity(profile)) ||
462 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
463 address_family != CONNECTION_ADDRESS_FAMILY_IPV6) ||
464 subnet_mask == NULL) {
465 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
466 return CONNECTION_ERROR_INVALID_PARAMETER;
469 net_profile_info_t *profile_info = profile;
470 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
471 if (net_info == NULL)
472 return CONNECTION_ERROR_OPERATION_FAILED;
474 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
475 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
477 *subnet_mask = __profile_convert_ip_to_string(&net_info->SubnetMask);
478 if (*subnet_mask == NULL)
479 return CONNECTION_ERROR_OUT_OF_MEMORY;
481 return CONNECTION_ERROR_NONE;
484 int connection_profile_get_gateway_address(connection_profile_h profile,
485 connection_address_family_e address_family, char** gateway_address)
487 if (!(_connection_libnet_check_profile_validity(profile)) ||
488 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
489 address_family != CONNECTION_ADDRESS_FAMILY_IPV6) ||
490 gateway_address == NULL) {
491 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
492 return CONNECTION_ERROR_INVALID_PARAMETER;
495 net_profile_info_t *profile_info = profile;
496 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
497 if (net_info == NULL)
498 return CONNECTION_ERROR_OPERATION_FAILED;
500 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
501 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
503 *gateway_address = __profile_convert_ip_to_string(&net_info->GatewayAddr);
504 if (*gateway_address == NULL)
505 return CONNECTION_ERROR_OUT_OF_MEMORY;
507 return CONNECTION_ERROR_NONE;
510 int connection_profile_get_dns_address(connection_profile_h profile, int order,
511 connection_address_family_e address_family, char** dns_address)
513 if (!(_connection_libnet_check_profile_validity(profile)) ||
514 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
515 address_family != CONNECTION_ADDRESS_FAMILY_IPV6) ||
516 dns_address == NULL ||
518 order > NET_DNS_ADDR_MAX) {
519 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
520 return CONNECTION_ERROR_INVALID_PARAMETER;
523 net_profile_info_t *profile_info = profile;
524 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
525 if (net_info == NULL)
526 return CONNECTION_ERROR_OPERATION_FAILED;
528 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
529 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
531 *dns_address = __profile_convert_ip_to_string(&net_info->DnsAddr[order-1]);
532 if (*dns_address == NULL)
533 return CONNECTION_ERROR_OUT_OF_MEMORY;
535 return CONNECTION_ERROR_NONE;
538 int connection_profile_get_proxy_type(connection_profile_h profile, connection_proxy_type_e* type)
540 if (!(_connection_libnet_check_profile_validity(profile)) || type == NULL) {
541 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
542 return CONNECTION_ERROR_INVALID_PARAMETER;
546 net_profile_info_t *profile_info = profile;
547 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
548 if (net_info == NULL)
549 return CONNECTION_ERROR_OPERATION_FAILED;
551 if (profile_info->profile_type == NET_DEVICE_ETHERNET) {
552 proxy = __profile_get_ethernet_proxy();
554 *type = CONNECTION_PROXY_TYPE_DIRECT;
556 *type = CONNECTION_PROXY_TYPE_MANUAL;
558 return CONNECTION_ERROR_NONE;
561 switch (net_info->ProxyMethod) {
562 case NET_PROXY_TYPE_DIRECT:
563 *type = CONNECTION_PROXY_TYPE_DIRECT;
565 case NET_PROXY_TYPE_AUTO:
566 *type = CONNECTION_PROXY_TYPE_AUTO;
568 case NET_PROXY_TYPE_MANUAL:
569 *type = CONNECTION_PROXY_TYPE_MANUAL;
571 case NET_PROXY_TYPE_UNKNOWN:
573 return CONNECTION_ERROR_OPERATION_FAILED;
576 return CONNECTION_ERROR_NONE;
579 int connection_profile_get_proxy_address(connection_profile_h profile,
580 connection_address_family_e address_family, char** proxy_address)
582 if (!(_connection_libnet_check_profile_validity(profile)) ||
583 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
584 address_family != CONNECTION_ADDRESS_FAMILY_IPV6) ||
585 proxy_address == NULL) {
586 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
587 return CONNECTION_ERROR_INVALID_PARAMETER;
591 net_profile_info_t *profile_info = profile;
592 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
593 if (net_info == NULL)
594 return CONNECTION_ERROR_OPERATION_FAILED;
596 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
597 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
599 if (profile_info->profile_type == NET_DEVICE_ETHERNET) {
600 proxy = __profile_get_ethernet_proxy();
602 return CONNECTION_ERROR_OPERATION_FAILED;
604 *proxy_address = g_strdup(proxy);
606 *proxy_address = g_strdup(net_info->ProxyAddr);
608 if (*proxy_address == NULL)
609 return CONNECTION_ERROR_OUT_OF_MEMORY;
611 return CONNECTION_ERROR_NONE;
614 int connection_profile_set_ip_config_type(connection_profile_h profile,
615 connection_address_family_e address_family, connection_ip_config_type_e type)
617 if (!(_connection_libnet_check_profile_validity(profile)) ||
618 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
619 address_family != CONNECTION_ADDRESS_FAMILY_IPV6)) {
620 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
621 return CONNECTION_ERROR_INVALID_PARAMETER;
624 net_profile_info_t *profile_info = profile;
625 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
626 if (net_info == NULL)
627 return CONNECTION_ERROR_OPERATION_FAILED;
629 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
630 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
633 case CONNECTION_IP_CONFIG_TYPE_STATIC:
634 net_info->IpConfigType = NET_IP_CONFIG_TYPE_STATIC;
635 net_info->IpAddr.Data.Ipv4.s_addr = 0;
636 net_info->SubnetMask.Data.Ipv4.s_addr = 0;
637 net_info->GatewayAddr.Data.Ipv4.s_addr = 0;
639 case CONNECTION_IP_CONFIG_TYPE_DYNAMIC:
640 net_info->IpConfigType = NET_IP_CONFIG_TYPE_DYNAMIC;
642 case CONNECTION_IP_CONFIG_TYPE_AUTO:
643 net_info->IpConfigType = NET_IP_CONFIG_TYPE_AUTO_IP;
645 case CONNECTION_IP_CONFIG_TYPE_FIXED:
646 net_info->IpConfigType = NET_IP_CONFIG_TYPE_FIXED;
648 case CONNECTION_IP_CONFIG_TYPE_NONE:
649 net_info->IpConfigType = NET_IP_CONFIG_TYPE_OFF;
652 return CONNECTION_ERROR_INVALID_PARAMETER;
655 return CONNECTION_ERROR_NONE;
658 int connection_profile_set_ip_address(connection_profile_h profile,
659 connection_address_family_e address_family, const char* ip_address)
661 if (!(_connection_libnet_check_profile_validity(profile)) ||
662 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
663 address_family != CONNECTION_ADDRESS_FAMILY_IPV6)) {
664 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
665 return CONNECTION_ERROR_INVALID_PARAMETER;
668 net_profile_info_t *profile_info = profile;
669 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
670 if (net_info == NULL)
671 return CONNECTION_ERROR_OPERATION_FAILED;
673 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
674 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
676 if (ip_address == NULL)
677 net_info->IpAddr.Data.Ipv4.s_addr = 0;
678 else if (inet_aton(ip_address, &(net_info->IpAddr.Data.Ipv4)) == 0)
679 return CONNECTION_ERROR_INVALID_PARAMETER;
681 return CONNECTION_ERROR_NONE;
684 int connection_profile_set_subnet_mask(connection_profile_h profile,
685 connection_address_family_e address_family, const char* subnet_mask)
687 if (!(_connection_libnet_check_profile_validity(profile)) ||
688 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
689 address_family != CONNECTION_ADDRESS_FAMILY_IPV6)) {
690 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
691 return CONNECTION_ERROR_INVALID_PARAMETER;
694 net_profile_info_t *profile_info = profile;
695 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
696 if (net_info == NULL)
697 return CONNECTION_ERROR_OPERATION_FAILED;
699 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
700 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
702 if (subnet_mask == NULL)
703 net_info->SubnetMask.Data.Ipv4.s_addr = 0;
704 else if (inet_aton(subnet_mask, &(net_info->SubnetMask.Data.Ipv4)) == 0)
705 return CONNECTION_ERROR_INVALID_PARAMETER;
707 return CONNECTION_ERROR_NONE;
710 int connection_profile_set_gateway_address(connection_profile_h profile,
711 connection_address_family_e address_family, const char* gateway_address)
713 if (!(_connection_libnet_check_profile_validity(profile)) ||
714 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
715 address_family != CONNECTION_ADDRESS_FAMILY_IPV6)) {
716 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
717 return CONNECTION_ERROR_INVALID_PARAMETER;
720 net_profile_info_t *profile_info = profile;
721 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
722 if (net_info == NULL)
723 return CONNECTION_ERROR_OPERATION_FAILED;
725 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
726 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
728 if (gateway_address == NULL)
729 net_info->GatewayAddr.Data.Ipv4.s_addr = 0;
730 else if (inet_aton(gateway_address, &(net_info->GatewayAddr.Data.Ipv4)) == 0)
731 return CONNECTION_ERROR_INVALID_PARAMETER;
733 return CONNECTION_ERROR_NONE;
736 int connection_profile_set_dns_address(connection_profile_h profile, int order,
737 connection_address_family_e address_family, const char* dns_address)
739 if (!(_connection_libnet_check_profile_validity(profile)) ||
740 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
741 address_family != CONNECTION_ADDRESS_FAMILY_IPV6) ||
743 order > NET_DNS_ADDR_MAX) {
744 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
745 return CONNECTION_ERROR_INVALID_PARAMETER;
748 net_profile_info_t *profile_info = profile;
749 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
750 if (net_info == NULL)
751 return CONNECTION_ERROR_OPERATION_FAILED;
753 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
754 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
756 if (dns_address == NULL)
757 net_info->DnsAddr[order-1].Data.Ipv4.s_addr = 0;
758 else if (inet_aton(dns_address, &(net_info->DnsAddr[order-1].Data.Ipv4)) == 0)
759 return CONNECTION_ERROR_INVALID_PARAMETER;
761 return CONNECTION_ERROR_NONE;
764 int connection_profile_set_proxy_type(connection_profile_h profile, connection_proxy_type_e type)
766 if (!(_connection_libnet_check_profile_validity(profile))) {
767 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
768 return CONNECTION_ERROR_INVALID_PARAMETER;
771 net_profile_info_t *profile_info = profile;
772 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
773 if (net_info == NULL)
774 return CONNECTION_ERROR_OPERATION_FAILED;
777 case CONNECTION_PROXY_TYPE_DIRECT:
778 net_info->ProxyMethod = NET_PROXY_TYPE_DIRECT;
780 case CONNECTION_PROXY_TYPE_AUTO:
781 net_info->ProxyMethod = NET_PROXY_TYPE_AUTO;
783 case CONNECTION_PROXY_TYPE_MANUAL:
784 net_info->ProxyMethod = NET_PROXY_TYPE_MANUAL;
787 return CONNECTION_ERROR_INVALID_PARAMETER;
790 return CONNECTION_ERROR_NONE;
793 int connection_profile_set_proxy_address(connection_profile_h profile,
794 connection_address_family_e address_family, const char* proxy_address)
796 if (!(_connection_libnet_check_profile_validity(profile)) ||
797 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
798 address_family != CONNECTION_ADDRESS_FAMILY_IPV6)) {
799 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
800 return CONNECTION_ERROR_INVALID_PARAMETER;
803 net_profile_info_t *profile_info = profile;
804 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
805 if (net_info == NULL)
806 return CONNECTION_ERROR_OPERATION_FAILED;
808 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
809 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
811 if (proxy_address == NULL)
812 net_info->ProxyAddr[0] = '\0';
814 g_strlcpy(net_info->ProxyAddr, proxy_address, NET_PROXY_LEN_MAX);
816 return CONNECTION_ERROR_NONE;
819 int connection_profile_set_state_changed_cb(connection_profile_h profile,
820 connection_profile_state_changed_cb callback, void* user_data)
822 if (!(_connection_libnet_check_profile_validity(profile)) || callback == NULL) {
823 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
824 return CONNECTION_ERROR_INVALID_PARAMETER;
827 if (_connection_libnet_add_to_profile_cb_list(profile, callback, user_data))
828 return CONNECTION_ERROR_NONE;
830 return CONNECTION_ERROR_OPERATION_FAILED;
833 int connection_profile_unset_state_changed_cb(connection_profile_h profile)
835 if (!(_connection_libnet_check_profile_cb_validity(profile))) {
836 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
837 return CONNECTION_ERROR_INVALID_PARAMETER;
840 _connection_libnet_remove_from_profile_cb_list(profile);
842 return CONNECTION_ERROR_NONE;
846 /* Wi-Fi profile module **************************************************************************/
848 int connection_profile_get_wifi_essid(connection_profile_h profile, char** essid)
850 if (!(_connection_libnet_check_profile_validity(profile)) || essid == NULL) {
851 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
852 return CONNECTION_ERROR_INVALID_PARAMETER;
855 net_profile_info_t *profile_info = profile;
857 if (profile_info->profile_type != NET_DEVICE_WIFI)
858 return CONNECTION_ERROR_INVALID_PARAMETER;
860 *essid = g_strdup(profile_info->ProfileInfo.Wlan.essid);
862 return CONNECTION_ERROR_OUT_OF_MEMORY;
864 return CONNECTION_ERROR_NONE;
867 int connection_profile_get_wifi_bssid(connection_profile_h profile, char** bssid)
869 if (!(_connection_libnet_check_profile_validity(profile)) || bssid == NULL) {
870 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
871 return CONNECTION_ERROR_INVALID_PARAMETER;
874 net_profile_info_t *profile_info = profile;
876 if (profile_info->profile_type != NET_DEVICE_WIFI)
877 return CONNECTION_ERROR_INVALID_PARAMETER;
879 *bssid = g_strdup(profile_info->ProfileInfo.Wlan.bssid);
881 return CONNECTION_ERROR_OUT_OF_MEMORY;
883 return CONNECTION_ERROR_NONE;
886 int connection_profile_get_wifi_rssi(connection_profile_h profile, int* rssi)
888 if (!(_connection_libnet_check_profile_validity(profile)) || rssi == NULL) {
889 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
890 return CONNECTION_ERROR_INVALID_PARAMETER;
893 net_profile_info_t *profile_info = profile;
895 if (profile_info->profile_type != NET_DEVICE_WIFI)
896 return CONNECTION_ERROR_INVALID_PARAMETER;
898 *rssi = (int)profile_info->ProfileInfo.Wlan.Strength;
900 return CONNECTION_ERROR_NONE;
903 int connection_profile_get_wifi_frequency(connection_profile_h profile, int* frequency)
905 if (!(_connection_libnet_check_profile_validity(profile)) || frequency == NULL) {
906 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
907 return CONNECTION_ERROR_INVALID_PARAMETER;
910 net_profile_info_t *profile_info = profile;
912 if (profile_info->profile_type != NET_DEVICE_WIFI)
913 return CONNECTION_ERROR_INVALID_PARAMETER;
915 *frequency = (int)profile_info->ProfileInfo.Wlan.frequency;
917 return CONNECTION_ERROR_NONE;
920 int connection_profile_get_wifi_max_speed(connection_profile_h profile, int* max_speed)
922 if (!(_connection_libnet_check_profile_validity(profile)) || max_speed == NULL) {
923 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
924 return CONNECTION_ERROR_INVALID_PARAMETER;
927 net_profile_info_t *profile_info = profile;
929 if (profile_info->profile_type != NET_DEVICE_WIFI)
930 return CONNECTION_ERROR_INVALID_PARAMETER;
932 *max_speed = (int)profile_info->ProfileInfo.Wlan.max_rate;
934 return CONNECTION_ERROR_NONE;
937 int connection_profile_get_wifi_security_type(connection_profile_h profile, connection_wifi_security_type_e* type)
939 if (!(_connection_libnet_check_profile_validity(profile)) || type == NULL) {
940 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
941 return CONNECTION_ERROR_INVALID_PARAMETER;
944 net_profile_info_t *profile_info = profile;
946 if (profile_info->profile_type != NET_DEVICE_WIFI)
947 return CONNECTION_ERROR_INVALID_PARAMETER;
949 switch (profile_info->ProfileInfo.Wlan.security_info.sec_mode) {
950 case WLAN_SEC_MODE_NONE:
951 *type = CONNECTION_WIFI_SECURITY_TYPE_NONE;
953 case WLAN_SEC_MODE_WEP:
954 *type = CONNECTION_WIFI_SECURITY_TYPE_WEP;
956 case WLAN_SEC_MODE_IEEE8021X:
957 *type = CONNECTION_WIFI_SECURITY_TYPE_EAP;
959 case WLAN_SEC_MODE_WPA_PSK:
960 *type = CONNECTION_WIFI_SECURITY_TYPE_WPA_PSK;
962 case WLAN_SEC_MODE_WPA2_PSK:
963 *type = CONNECTION_WIFI_SECURITY_TYPE_WPA2_PSK;
966 return CONNECTION_ERROR_OPERATION_FAILED;
969 return CONNECTION_ERROR_NONE;
972 int connection_profile_get_wifi_encryption_type(connection_profile_h profile, connection_wifi_encryption_type_e* type)
974 if (!(_connection_libnet_check_profile_validity(profile)) || type == NULL) {
975 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
976 return CONNECTION_ERROR_INVALID_PARAMETER;
979 net_profile_info_t *profile_info = profile;
981 if (profile_info->profile_type != NET_DEVICE_WIFI)
982 return CONNECTION_ERROR_INVALID_PARAMETER;
984 switch (profile_info->ProfileInfo.Wlan.security_info.enc_mode) {
985 case WLAN_ENC_MODE_NONE:
986 *type = CONNECTION_WIFI_ENCRYPTION_TYPE_NONE;
988 case WLAN_ENC_MODE_WEP:
989 *type = CONNECTION_WIFI_ENCRYPTION_TYPE_WEP;
991 case WLAN_ENC_MODE_TKIP:
992 *type = CONNECTION_WIFI_ENCRYPTION_TYPE_TKIP;
994 case WLAN_ENC_MODE_AES:
995 *type = CONNECTION_WIFI_ENCRYPTION_TYPE_AES;
997 case WLAN_ENC_MODE_TKIP_AES_MIXED:
998 *type = CONNECTION_WIFI_ENCRYPTION_TYPE_TKIP_AES_MIXED;
1001 return CONNECTION_ERROR_OPERATION_FAILED;
1004 return CONNECTION_ERROR_NONE;
1007 int connection_profile_is_wifi_passphrase_required(connection_profile_h profile, bool* required)
1009 if (!(_connection_libnet_check_profile_validity(profile)) || required == NULL) {
1010 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1011 return CONNECTION_ERROR_INVALID_PARAMETER;
1014 net_profile_info_t *profile_info = profile;
1016 if (profile_info->profile_type != NET_DEVICE_WIFI)
1017 return CONNECTION_ERROR_INVALID_PARAMETER;
1019 if (profile_info->Favourite) {
1021 return CONNECTION_ERROR_NONE;
1024 switch (profile_info->ProfileInfo.Wlan.security_info.sec_mode) {
1025 case WLAN_SEC_MODE_NONE:
1028 case WLAN_SEC_MODE_WEP:
1029 case WLAN_SEC_MODE_IEEE8021X:
1030 case WLAN_SEC_MODE_WPA_PSK:
1031 case WLAN_SEC_MODE_WPA2_PSK:
1035 return CONNECTION_ERROR_OPERATION_FAILED;
1038 return CONNECTION_ERROR_NONE;
1041 int connection_profile_set_wifi_passphrase(connection_profile_h profile, const char* passphrase)
1043 if (!(_connection_libnet_check_profile_validity(profile)) || passphrase == NULL) {
1044 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1045 return CONNECTION_ERROR_INVALID_PARAMETER;
1048 net_profile_info_t *profile_info = profile;
1050 if (profile_info->profile_type != NET_DEVICE_WIFI)
1051 return CONNECTION_ERROR_INVALID_PARAMETER;
1053 g_strlcpy(profile_info->ProfileInfo.Wlan.security_info.authentication.psk.pskKey,
1054 passphrase, NETPM_WLAN_MAX_PSK_PASSPHRASE_LEN);
1056 return CONNECTION_ERROR_NONE;
1059 int connection_profile_is_wifi_wps_supported(connection_profile_h profile, bool* supported)
1061 if (!(_connection_libnet_check_profile_validity(profile)) || supported == NULL) {
1062 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1063 return CONNECTION_ERROR_INVALID_PARAMETER;
1066 net_profile_info_t *profile_info = profile;
1068 if (profile_info->profile_type != NET_DEVICE_WIFI)
1069 return CONNECTION_ERROR_INVALID_PARAMETER;
1071 if (profile_info->ProfileInfo.Wlan.security_info.wps_support)
1076 return CONNECTION_ERROR_NONE;
1080 /* Cellular profile module ***********************************************************************/
1082 int connection_profile_get_cellular_network_type(connection_profile_h profile, connection_cellular_network_type_e* type)
1084 if (!(_connection_libnet_check_profile_validity(profile)) || type == NULL) {
1085 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1086 return CONNECTION_ERROR_INVALID_PARAMETER;
1090 net_profile_info_t *profile_info = profile;
1092 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1093 return CONNECTION_ERROR_INVALID_PARAMETER;
1095 if (vconf_get_int(VCONFKEY_TELEPHONY_SVC_ACT, &network_type)) {
1096 CONNECTION_LOG(CONNECTION_ERROR, "vconf_get_int Failed\n");
1097 return CONNECTION_ERROR_OPERATION_FAILED;
1100 CONNECTION_LOG(CONNECTION_INFO, "Cellular network type = %d\n", network_type);
1102 switch (network_type) {
1103 case VCONFKEY_TELEPHONY_SVC_ACT_NONE:
1104 *type = CONNECTION_CELLULAR_NETWORK_TYPE_UNKNOWN;
1106 case VCONFKEY_TELEPHONY_SVC_ACT_GPRS:
1107 *type = CONNECTION_CELLULAR_NETWORK_TYPE_GPRS;
1109 case VCONFKEY_TELEPHONY_SVC_ACT_EGPRS:
1110 *type = CONNECTION_CELLULAR_NETWORK_TYPE_EDGE;
1112 case VCONFKEY_TELEPHONY_SVC_ACT_UMTS:
1113 *type = CONNECTION_CELLULAR_NETWORK_TYPE_UMTS;
1116 return CONNECTION_ERROR_OPERATION_FAILED;
1119 return CONNECTION_ERROR_NONE;
1122 int connection_profile_get_cellular_service_type(connection_profile_h profile,
1123 connection_cellular_service_type_e* type)
1125 if (!(_connection_libnet_check_profile_validity(profile)) || type == NULL) {
1126 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1127 return CONNECTION_ERROR_INVALID_PARAMETER;
1130 net_profile_info_t *profile_info = profile;
1132 if (profile_info->profile_type != NET_DEVICE_CELLULAR) {
1133 CONNECTION_LOG(CONNECTION_ERROR, "Invalid profile type Passed\n");
1134 return CONNECTION_ERROR_INVALID_PARAMETER;
1137 *type = _profile_convert_to_connection_cellular_service_type(profile_info->ProfileInfo.Pdp.ServiceType);
1139 if (*type == CONNECTION_CELLULAR_SERVICE_TYPE_UNKNOWN) {
1140 CONNECTION_LOG(CONNECTION_ERROR, "Invalid service type Passed\n");
1141 return CONNECTION_ERROR_OPERATION_FAILED;
1144 return CONNECTION_ERROR_NONE;
1147 int connection_profile_get_cellular_apn(connection_profile_h profile, char** apn)
1149 if (!(_connection_libnet_check_profile_validity(profile)) || apn == NULL) {
1150 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1151 return CONNECTION_ERROR_INVALID_PARAMETER;
1154 net_profile_info_t *profile_info = profile;
1156 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1157 return CONNECTION_ERROR_INVALID_PARAMETER;
1159 *apn = g_strdup(profile_info->ProfileInfo.Pdp.Apn);
1161 return CONNECTION_ERROR_OUT_OF_MEMORY;
1163 return CONNECTION_ERROR_NONE;
1166 int connection_profile_get_cellular_auth_info(connection_profile_h profile,
1167 connection_cellular_auth_type_e* type, char** user_name, char** password)
1169 if (!(_connection_libnet_check_profile_validity(profile)) ||
1170 type == NULL || user_name == NULL || password == NULL) {
1171 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1172 return CONNECTION_ERROR_INVALID_PARAMETER;
1175 net_profile_info_t *profile_info = profile;
1177 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1178 return CONNECTION_ERROR_INVALID_PARAMETER;
1180 switch (profile_info->ProfileInfo.Pdp.AuthInfo.AuthType) {
1181 case NET_PDP_AUTH_NONE:
1182 *type = CONNECTION_CELLULAR_AUTH_TYPE_NONE;
1184 case NET_PDP_AUTH_PAP:
1185 *type = CONNECTION_CELLULAR_AUTH_TYPE_PAP;
1187 case NET_PDP_AUTH_CHAP:
1188 *type = CONNECTION_CELLULAR_AUTH_TYPE_CHAP;
1191 return CONNECTION_ERROR_OPERATION_FAILED;
1194 *user_name = g_strdup(profile_info->ProfileInfo.Pdp.AuthInfo.UserName);
1195 if (*user_name == NULL)
1196 return CONNECTION_ERROR_OUT_OF_MEMORY;
1198 *password = g_strdup(profile_info->ProfileInfo.Pdp.AuthInfo.Password);
1199 if (*password == NULL) {
1201 return CONNECTION_ERROR_OUT_OF_MEMORY;
1204 return CONNECTION_ERROR_NONE;
1207 int connection_profile_get_cellular_home_url(connection_profile_h profile, char** home_url)
1209 if (!(_connection_libnet_check_profile_validity(profile)) || home_url == NULL) {
1210 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1211 return CONNECTION_ERROR_INVALID_PARAMETER;
1214 net_profile_info_t *profile_info = profile;
1216 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1217 return CONNECTION_ERROR_INVALID_PARAMETER;
1219 *home_url = g_strdup(profile_info->ProfileInfo.Pdp.HomeURL);
1220 if (*home_url == NULL)
1221 return CONNECTION_ERROR_OUT_OF_MEMORY;
1223 return CONNECTION_ERROR_NONE;
1226 int connection_profile_is_cellular_roaming(connection_profile_h profile, bool* is_roaming)
1228 if (!(_connection_libnet_check_profile_validity(profile)) || is_roaming == NULL) {
1229 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1230 return CONNECTION_ERROR_INVALID_PARAMETER;
1233 net_profile_info_t *profile_info = profile;
1235 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1236 return CONNECTION_ERROR_INVALID_PARAMETER;
1238 if (profile_info->ProfileInfo.Pdp.Roaming)
1241 *is_roaming = false;
1243 return CONNECTION_ERROR_NONE;
1246 int connection_profile_set_cellular_service_type(connection_profile_h profile,
1247 connection_cellular_service_type_e service_type)
1249 if (!(_connection_libnet_check_profile_validity(profile))) {
1250 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1251 return CONNECTION_ERROR_INVALID_PARAMETER;
1254 net_profile_info_t *profile_info = profile;
1256 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1257 return CONNECTION_ERROR_INVALID_PARAMETER;
1259 switch (service_type) {
1260 case CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET:
1261 profile_info->ProfileInfo.Pdp.ServiceType = NET_SERVICE_INTERNET;
1263 case CONNECTION_CELLULAR_SERVICE_TYPE_MMS:
1264 profile_info->ProfileInfo.Pdp.ServiceType = NET_SERVICE_MMS;
1266 case CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_INTERNET:
1267 profile_info->ProfileInfo.Pdp.ServiceType = NET_SERVICE_PREPAID_INTERNET;
1269 case CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_MMS:
1270 profile_info->ProfileInfo.Pdp.ServiceType = NET_SERVICE_PREPAID_MMS;
1272 case CONNECTION_CELLULAR_SERVICE_TYPE_TETHERING:
1273 profile_info->ProfileInfo.Pdp.ServiceType = NET_SERVICE_TETHERING;
1275 case CONNECTION_CELLULAR_SERVICE_TYPE_APPLICATION:
1276 profile_info->ProfileInfo.Pdp.ServiceType = NET_SERVICE_APPLICATION;
1278 case CONNECTION_CELLULAR_SERVICE_TYPE_UNKNOWN:
1280 return CONNECTION_ERROR_INVALID_PARAMETER;
1283 return CONNECTION_ERROR_NONE;
1286 int connection_profile_set_cellular_apn(connection_profile_h profile, const char* apn)
1288 if (!(_connection_libnet_check_profile_validity(profile)) || apn == NULL) {
1289 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1290 return CONNECTION_ERROR_INVALID_PARAMETER;
1293 net_profile_info_t *profile_info = profile;
1295 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1296 return CONNECTION_ERROR_INVALID_PARAMETER;
1298 g_strlcpy(profile_info->ProfileInfo.Pdp.Apn, apn, NET_PDP_APN_LEN_MAX+1);
1300 return CONNECTION_ERROR_NONE;
1303 int connection_profile_set_cellular_auth_info(connection_profile_h profile,
1304 connection_cellular_auth_type_e type, const char* user_name, const char* password)
1306 if (!(_connection_libnet_check_profile_validity(profile)) ||
1307 user_name == NULL || password == NULL) {
1308 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1309 return CONNECTION_ERROR_INVALID_PARAMETER;
1312 net_profile_info_t *profile_info = profile;
1314 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1315 return CONNECTION_ERROR_INVALID_PARAMETER;
1318 case CONNECTION_CELLULAR_AUTH_TYPE_NONE:
1319 profile_info->ProfileInfo.Pdp.AuthInfo.AuthType = NET_PDP_AUTH_NONE;
1321 case CONNECTION_CELLULAR_AUTH_TYPE_PAP:
1322 profile_info->ProfileInfo.Pdp.AuthInfo.AuthType = NET_PDP_AUTH_PAP;
1324 case CONNECTION_CELLULAR_AUTH_TYPE_CHAP:
1325 profile_info->ProfileInfo.Pdp.AuthInfo.AuthType = NET_PDP_AUTH_CHAP;
1328 return CONNECTION_ERROR_INVALID_PARAMETER;
1331 g_strlcpy(profile_info->ProfileInfo.Pdp.AuthInfo.UserName, user_name, NET_PDP_AUTH_USERNAME_LEN_MAX+1);
1332 g_strlcpy(profile_info->ProfileInfo.Pdp.AuthInfo.Password, password, NET_PDP_AUTH_PASSWORD_LEN_MAX+1);
1334 return CONNECTION_ERROR_NONE;
1337 int connection_profile_set_cellular_home_url(connection_profile_h profile, const char* home_url)
1339 if (!(_connection_libnet_check_profile_validity(profile)) || home_url == NULL) {
1340 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1341 return CONNECTION_ERROR_INVALID_PARAMETER;
1344 net_profile_info_t *profile_info = profile;
1346 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1347 return CONNECTION_ERROR_INVALID_PARAMETER;
1349 g_strlcpy(profile_info->ProfileInfo.Pdp.HomeURL, home_url, NET_HOME_URL_LEN_MAX);
1351 return CONNECTION_ERROR_NONE;