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 <arpa/inet.h>
22 #include <vconf/vconf.h>
23 #include "net_connection_private.h"
25 #define HTTP_PROXY "http_proxy"
27 static net_dev_info_t* __profile_get_net_info(net_profile_info_t *profile_info)
29 switch (profile_info->profile_type) {
30 case NET_DEVICE_CELLULAR:
31 return &profile_info->ProfileInfo.Pdp.net_info;
33 return &profile_info->ProfileInfo.Wlan.net_info;
34 case NET_DEVICE_ETHERNET:
35 return &profile_info->ProfileInfo.Ethernet.net_info;
36 case NET_DEVICE_BLUETOOTH:
37 return &profile_info->ProfileInfo.Bluetooth.net_info;
38 case NET_DEVICE_DEFAULT:
40 case NET_DEVICE_UNKNOWN:
47 static char* __profile_convert_ip_to_string(net_addr_t *ip_addr)
49 unsigned char *ipaddr = (unsigned char *)&ip_addr->Data.Ipv4.s_addr;
51 char *ipstr = g_try_malloc0(16);
55 snprintf(ipstr, 16, "%d.%d.%d.%d", ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]);
60 static void __profile_init_cellular_profile(net_profile_info_t *profile_info, const char *keyword)
62 profile_info->profile_type = NET_DEVICE_CELLULAR;
63 profile_info->ProfileState = NET_STATE_TYPE_IDLE;
64 profile_info->ProfileInfo.Pdp.net_info.IpConfigType = NET_IP_CONFIG_TYPE_OFF;
65 profile_info->ProfileInfo.Pdp.net_info.ProxyMethod = NET_PROXY_TYPE_DIRECT;
66 g_strlcpy(profile_info->ProfileInfo.Pdp.Keyword, keyword, NET_PDP_APN_LEN_MAX);
69 static void __profile_init_wifi_profile(net_profile_info_t *profile_info)
71 profile_info->profile_type = NET_DEVICE_WIFI;
72 profile_info->ProfileState = NET_STATE_TYPE_IDLE;
73 profile_info->ProfileInfo.Wlan.net_info.IpConfigType = NET_IP_CONFIG_TYPE_OFF;
74 profile_info->ProfileInfo.Wlan.net_info.ProxyMethod = NET_PROXY_TYPE_DIRECT;
75 profile_info->ProfileInfo.Wlan.wlan_mode = NETPM_WLAN_CONNMODE_AUTO;
76 profile_info->ProfileInfo.Wlan.security_info.sec_mode = WLAN_SEC_MODE_NONE;
77 profile_info->ProfileInfo.Wlan.security_info.enc_mode = WLAN_ENC_MODE_NONE;
80 static const char* __profile_get_ethernet_proxy(void)
84 proxy = getenv(HTTP_PROXY);
87 CONNECTION_LOG(CONNECTION_ERROR, "Fail to get system proxy");
91 CONNECTION_LOG(CONNECTION_INFO, "Get system proxy: %s", proxy);
95 connection_cellular_service_type_e _profile_convert_to_connection_cellular_service_type(net_service_type_t svc_type)
98 case NET_SERVICE_INTERNET:
99 return CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET;
100 case NET_SERVICE_MMS:
101 return CONNECTION_CELLULAR_SERVICE_TYPE_MMS;
102 case NET_SERVICE_PREPAID_INTERNET:
103 return CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_INTERNET;
104 case NET_SERVICE_PREPAID_MMS:
105 return CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_MMS;
106 case NET_SERVICE_TETHERING:
107 return CONNECTION_CELLULAR_SERVICE_TYPE_TETHERING;
108 case NET_SERVICE_APPLICATION:
109 return CONNECTION_CELLULAR_SERVICE_TYPE_APPLICATION;
111 return CONNECTION_CELLULAR_SERVICE_TYPE_UNKNOWN;
115 connection_profile_state_e _profile_convert_to_cp_state(net_state_type_t state)
117 connection_profile_state_e cp_state;
120 case NET_STATE_TYPE_ONLINE:
121 case NET_STATE_TYPE_READY:
122 cp_state = CONNECTION_PROFILE_STATE_CONNECTED;
124 case NET_STATE_TYPE_IDLE:
125 case NET_STATE_TYPE_FAILURE:
126 case NET_STATE_TYPE_DISCONNECT:
127 cp_state = CONNECTION_PROFILE_STATE_DISCONNECTED;
129 case NET_STATE_TYPE_ASSOCIATION:
130 cp_state = CONNECTION_PROFILE_STATE_ASSOCIATION;
132 case NET_STATE_TYPE_CONFIGURATION:
133 cp_state = CONNECTION_PROFILE_STATE_CONFIGURATION;
142 net_service_type_t _connection_profile_convert_to_libnet_cellular_service_type(connection_cellular_service_type_e svc_type)
145 case CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET:
146 return NET_SERVICE_INTERNET;
147 case CONNECTION_CELLULAR_SERVICE_TYPE_MMS:
148 return NET_SERVICE_MMS;
149 case CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_INTERNET:
150 return NET_SERVICE_PREPAID_INTERNET;
151 case CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_MMS:
152 return NET_SERVICE_PREPAID_MMS;
153 case CONNECTION_CELLULAR_SERVICE_TYPE_TETHERING:
154 return NET_SERVICE_TETHERING;
155 case CONNECTION_CELLULAR_SERVICE_TYPE_APPLICATION:
156 return NET_SERVICE_APPLICATION;
158 return NET_SERVICE_UNKNOWN;
162 net_state_type_t _connection_profile_convert_to_net_state(connection_profile_state_e state)
164 net_state_type_t libnet_state = NET_STATE_TYPE_UNKNOWN;
167 case CONNECTION_PROFILE_STATE_CONNECTED:
168 libnet_state = NET_STATE_TYPE_ONLINE;
170 case CONNECTION_PROFILE_STATE_DISCONNECTED:
171 libnet_state = NET_STATE_TYPE_IDLE;
173 case CONNECTION_PROFILE_STATE_ASSOCIATION:
174 libnet_state = NET_STATE_TYPE_ASSOCIATION;
176 case CONNECTION_PROFILE_STATE_CONFIGURATION:
177 libnet_state = NET_STATE_TYPE_CONFIGURATION;
185 /* Connection profile module *********************************************************************/
187 int connection_profile_create(connection_profile_type_e type, const char* keyword, connection_profile_h* profile)
189 if ((type != CONNECTION_PROFILE_TYPE_CELLULAR &&
190 type != CONNECTION_PROFILE_TYPE_WIFI) || profile == NULL) {
191 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
192 return CONNECTION_ERROR_INVALID_PARAMETER;
195 net_profile_info_t *profile_info = g_try_malloc0(sizeof(net_profile_info_t));
196 if (profile_info == NULL)
197 return CONNECTION_ERROR_OUT_OF_MEMORY;
200 case CONNECTION_PROFILE_TYPE_CELLULAR:
201 if (keyword == NULL) {
202 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
203 return CONNECTION_ERROR_INVALID_PARAMETER;
205 __profile_init_cellular_profile(profile_info, keyword);
207 case CONNECTION_PROFILE_TYPE_WIFI:
208 __profile_init_wifi_profile(profile_info);
214 *profile = (connection_profile_h)profile_info;
215 _connection_libnet_add_to_profile_list(*profile);
217 return CONNECTION_ERROR_NONE;
220 int connection_profile_destroy(connection_profile_h profile)
222 if (!(_connection_libnet_check_profile_validity(profile))) {
223 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
224 return CONNECTION_ERROR_INVALID_PARAMETER;
227 _connection_libnet_remove_from_profile_list(profile);
229 return CONNECTION_ERROR_NONE;
232 int connection_profile_clone(connection_profile_h* cloned_profile, connection_profile_h origin_profile)
234 if (!(_connection_libnet_check_profile_validity(origin_profile)) || cloned_profile == NULL) {
235 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
236 return CONNECTION_ERROR_INVALID_PARAMETER;
239 *cloned_profile = g_try_malloc0(sizeof(net_profile_info_t));
240 if (*cloned_profile == NULL)
241 return CONNECTION_ERROR_OUT_OF_MEMORY;
243 memcpy(*cloned_profile, origin_profile, sizeof(net_profile_info_t));
244 _connection_libnet_add_to_profile_list(*cloned_profile);
246 return CONNECTION_ERROR_NONE;
249 int connection_profile_get_id(connection_profile_h profile, char** profile_id)
251 if (!(_connection_libnet_check_profile_validity(profile)) || profile_id == NULL) {
252 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
253 return CONNECTION_ERROR_INVALID_PARAMETER;
256 net_profile_info_t *profile_info = profile;
258 char *prof_id = strrchr(profile_info->ProfileName, '/');
260 return CONNECTION_ERROR_INVALID_PARAMETER;
263 *profile_id = g_strdup(prof_id);
265 if (*profile_id == NULL)
266 return CONNECTION_ERROR_OUT_OF_MEMORY;
268 return CONNECTION_ERROR_NONE;
271 int connection_profile_get_name(connection_profile_h profile, char** profile_name)
273 if (!(_connection_libnet_check_profile_validity(profile)) || profile_name == NULL) {
274 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
275 return CONNECTION_ERROR_INVALID_PARAMETER;
278 net_profile_info_t *profile_info = profile;
280 switch (profile_info->profile_type) {
281 case NET_DEVICE_CELLULAR:
282 *profile_name = g_strdup(profile_info->ProfileInfo.Pdp.Keyword);
284 case NET_DEVICE_WIFI:
285 *profile_name = g_strdup(profile_info->ProfileInfo.Wlan.essid);
287 case NET_DEVICE_ETHERNET:
288 *profile_name = g_strdup(profile_info->ProfileInfo.Ethernet.net_info.DevName);
290 case NET_DEVICE_BLUETOOTH: {
291 char *bt_name = strrchr(profile_info->ProfileName, '/');
293 return CONNECTION_ERROR_INVALID_PARAMETER;
296 *profile_name = g_strdup(bt_name);
299 return CONNECTION_ERROR_INVALID_PARAMETER;
302 if (*profile_name == NULL)
303 return CONNECTION_ERROR_OUT_OF_MEMORY;
305 return CONNECTION_ERROR_NONE;
308 int connection_profile_get_type(connection_profile_h profile, connection_profile_type_e* type)
310 if (!(_connection_libnet_check_profile_validity(profile)) || type == NULL) {
311 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
312 return CONNECTION_ERROR_INVALID_PARAMETER;
315 net_profile_info_t *profile_info = profile;
317 switch (profile_info->profile_type) {
318 case NET_DEVICE_CELLULAR:
319 *type = CONNECTION_PROFILE_TYPE_CELLULAR;
321 case NET_DEVICE_WIFI:
322 *type = CONNECTION_PROFILE_TYPE_WIFI;
324 case NET_DEVICE_ETHERNET:
325 *type = CONNECTION_PROFILE_TYPE_ETHERNET;
327 case NET_DEVICE_BLUETOOTH:
328 *type = CONNECTION_PROFILE_TYPE_BT;
331 CONNECTION_LOG(CONNECTION_ERROR, "Invalid profile type\n");
332 return CONNECTION_ERROR_OPERATION_FAILED;
335 return CONNECTION_ERROR_NONE;
338 int connection_profile_get_network_interface_name(connection_profile_h profile, char** interface_name)
340 if (!(_connection_libnet_check_profile_validity(profile)) || interface_name == NULL) {
341 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
342 return CONNECTION_ERROR_INVALID_PARAMETER;
345 net_profile_info_t *profile_info = profile;
346 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
347 if (net_info == NULL)
348 return CONNECTION_ERROR_INVALID_PARAMETER;
350 *interface_name = g_strdup(net_info->DevName);
351 if (*interface_name == NULL)
352 return CONNECTION_ERROR_OUT_OF_MEMORY;
354 return CONNECTION_ERROR_NONE;
357 int connection_profile_refresh(connection_profile_h profile)
359 if (!(_connection_libnet_check_profile_validity(profile))) {
360 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
361 return CONNECTION_ERROR_INVALID_PARAMETER;
364 net_profile_info_t profile_info_local;
365 net_profile_info_t *profile_info = profile;
367 if (net_get_profile_info(profile_info->ProfileName, &profile_info_local) != NET_ERR_NONE) {
368 CONNECTION_LOG(CONNECTION_ERROR, "Error!!! net_get_profile_info() failed\n");
369 return CONNECTION_ERROR_OPERATION_FAILED;
372 memcpy(profile, &profile_info_local, sizeof(net_profile_info_t));
374 return CONNECTION_ERROR_NONE;
377 int connection_profile_get_state(connection_profile_h profile, connection_profile_state_e* state)
379 if (!(_connection_libnet_check_profile_validity(profile)) || state == NULL) {
380 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
381 return CONNECTION_ERROR_INVALID_PARAMETER;
384 net_profile_info_t *profile_info = profile;
385 *state = _profile_convert_to_cp_state(profile_info->ProfileState);
387 return CONNECTION_ERROR_OPERATION_FAILED;
389 return CONNECTION_ERROR_NONE;
392 int connection_profile_get_ip_config_type(connection_profile_h profile,
393 connection_address_family_e address_family, connection_ip_config_type_e* type)
395 if (!(_connection_libnet_check_profile_validity(profile)) ||
396 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
397 address_family != CONNECTION_ADDRESS_FAMILY_IPV6) ||
399 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
400 return CONNECTION_ERROR_INVALID_PARAMETER;
403 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
404 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
406 net_profile_info_t *profile_info = profile;
407 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
408 if (net_info == NULL)
409 return CONNECTION_ERROR_OPERATION_FAILED;
411 switch (net_info->IpConfigType) {
412 case NET_IP_CONFIG_TYPE_STATIC:
413 *type = CONNECTION_IP_CONFIG_TYPE_STATIC;
415 case NET_IP_CONFIG_TYPE_DYNAMIC:
416 *type = CONNECTION_IP_CONFIG_TYPE_DYNAMIC;
418 case NET_IP_CONFIG_TYPE_AUTO_IP:
419 *type = CONNECTION_IP_CONFIG_TYPE_AUTO;
421 case NET_IP_CONFIG_TYPE_FIXED:
422 *type = CONNECTION_IP_CONFIG_TYPE_FIXED;
424 case NET_IP_CONFIG_TYPE_OFF:
425 *type = CONNECTION_IP_CONFIG_TYPE_NONE;
428 return CONNECTION_ERROR_OPERATION_FAILED;
431 return CONNECTION_ERROR_NONE;
434 int connection_profile_get_ip_address(connection_profile_h profile,
435 connection_address_family_e address_family, char** ip_address)
437 if (!(_connection_libnet_check_profile_validity(profile)) ||
438 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
439 address_family != CONNECTION_ADDRESS_FAMILY_IPV6) ||
440 ip_address == NULL) {
441 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
442 return CONNECTION_ERROR_INVALID_PARAMETER;
445 net_profile_info_t *profile_info = profile;
446 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
447 if (net_info == NULL)
448 return CONNECTION_ERROR_OPERATION_FAILED;
450 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
451 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
453 *ip_address = __profile_convert_ip_to_string(&net_info->IpAddr);
454 if (*ip_address == NULL)
455 return CONNECTION_ERROR_OUT_OF_MEMORY;
457 return CONNECTION_ERROR_NONE;
460 int connection_profile_get_subnet_mask(connection_profile_h profile,
461 connection_address_family_e address_family, char** subnet_mask)
463 if (!(_connection_libnet_check_profile_validity(profile)) ||
464 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
465 address_family != CONNECTION_ADDRESS_FAMILY_IPV6) ||
466 subnet_mask == NULL) {
467 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
468 return CONNECTION_ERROR_INVALID_PARAMETER;
471 net_profile_info_t *profile_info = profile;
472 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
473 if (net_info == NULL)
474 return CONNECTION_ERROR_OPERATION_FAILED;
476 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
477 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
479 *subnet_mask = __profile_convert_ip_to_string(&net_info->SubnetMask);
480 if (*subnet_mask == NULL)
481 return CONNECTION_ERROR_OUT_OF_MEMORY;
483 return CONNECTION_ERROR_NONE;
486 int connection_profile_get_gateway_address(connection_profile_h profile,
487 connection_address_family_e address_family, char** gateway_address)
489 if (!(_connection_libnet_check_profile_validity(profile)) ||
490 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
491 address_family != CONNECTION_ADDRESS_FAMILY_IPV6) ||
492 gateway_address == NULL) {
493 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
494 return CONNECTION_ERROR_INVALID_PARAMETER;
497 net_profile_info_t *profile_info = profile;
498 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
499 if (net_info == NULL)
500 return CONNECTION_ERROR_OPERATION_FAILED;
502 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
503 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
505 *gateway_address = __profile_convert_ip_to_string(&net_info->GatewayAddr);
506 if (*gateway_address == NULL)
507 return CONNECTION_ERROR_OUT_OF_MEMORY;
509 return CONNECTION_ERROR_NONE;
512 int connection_profile_get_dns_address(connection_profile_h profile, int order,
513 connection_address_family_e address_family, char** dns_address)
515 if (!(_connection_libnet_check_profile_validity(profile)) ||
516 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
517 address_family != CONNECTION_ADDRESS_FAMILY_IPV6) ||
518 dns_address == NULL ||
520 order > NET_DNS_ADDR_MAX) {
521 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
522 return CONNECTION_ERROR_INVALID_PARAMETER;
525 net_profile_info_t *profile_info = profile;
526 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
527 if (net_info == NULL)
528 return CONNECTION_ERROR_OPERATION_FAILED;
530 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
531 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
533 *dns_address = __profile_convert_ip_to_string(&net_info->DnsAddr[order-1]);
534 if (*dns_address == NULL)
535 return CONNECTION_ERROR_OUT_OF_MEMORY;
537 return CONNECTION_ERROR_NONE;
540 int connection_profile_get_proxy_type(connection_profile_h profile, connection_proxy_type_e* type)
542 if (!(_connection_libnet_check_profile_validity(profile)) || type == NULL) {
543 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
544 return CONNECTION_ERROR_INVALID_PARAMETER;
548 net_profile_info_t *profile_info = profile;
549 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
550 if (net_info == NULL)
551 return CONNECTION_ERROR_OPERATION_FAILED;
553 if (profile_info->profile_type == NET_DEVICE_ETHERNET) {
554 proxy = __profile_get_ethernet_proxy();
556 *type = CONNECTION_PROXY_TYPE_DIRECT;
558 *type = CONNECTION_PROXY_TYPE_MANUAL;
560 return CONNECTION_ERROR_NONE;
563 switch (net_info->ProxyMethod) {
564 case NET_PROXY_TYPE_DIRECT:
565 *type = CONNECTION_PROXY_TYPE_DIRECT;
567 case NET_PROXY_TYPE_AUTO:
568 *type = CONNECTION_PROXY_TYPE_AUTO;
570 case NET_PROXY_TYPE_MANUAL:
571 *type = CONNECTION_PROXY_TYPE_MANUAL;
573 case NET_PROXY_TYPE_UNKNOWN:
575 return CONNECTION_ERROR_OPERATION_FAILED;
578 return CONNECTION_ERROR_NONE;
581 int connection_profile_get_proxy_address(connection_profile_h profile,
582 connection_address_family_e address_family, char** proxy_address)
584 if (!(_connection_libnet_check_profile_validity(profile)) ||
585 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
586 address_family != CONNECTION_ADDRESS_FAMILY_IPV6) ||
587 proxy_address == NULL) {
588 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
589 return CONNECTION_ERROR_INVALID_PARAMETER;
593 net_profile_info_t *profile_info = profile;
594 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
595 if (net_info == NULL)
596 return CONNECTION_ERROR_OPERATION_FAILED;
598 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
599 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
601 if (profile_info->profile_type == NET_DEVICE_ETHERNET) {
602 proxy = __profile_get_ethernet_proxy();
604 return CONNECTION_ERROR_OPERATION_FAILED;
606 *proxy_address = g_strdup(proxy);
608 *proxy_address = g_strdup(net_info->ProxyAddr);
610 if (*proxy_address == NULL)
611 return CONNECTION_ERROR_OUT_OF_MEMORY;
613 return CONNECTION_ERROR_NONE;
616 int connection_profile_set_ip_config_type(connection_profile_h profile,
617 connection_address_family_e address_family, connection_ip_config_type_e type)
619 if (!(_connection_libnet_check_profile_validity(profile)) ||
620 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
621 address_family != CONNECTION_ADDRESS_FAMILY_IPV6)) {
622 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
623 return CONNECTION_ERROR_INVALID_PARAMETER;
626 net_profile_info_t *profile_info = profile;
627 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
628 if (net_info == NULL)
629 return CONNECTION_ERROR_OPERATION_FAILED;
631 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
632 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
635 case CONNECTION_IP_CONFIG_TYPE_STATIC:
636 net_info->IpConfigType = NET_IP_CONFIG_TYPE_STATIC;
637 net_info->IpAddr.Data.Ipv4.s_addr = 0;
638 net_info->SubnetMask.Data.Ipv4.s_addr = 0;
639 net_info->GatewayAddr.Data.Ipv4.s_addr = 0;
641 case CONNECTION_IP_CONFIG_TYPE_DYNAMIC:
642 net_info->IpConfigType = NET_IP_CONFIG_TYPE_DYNAMIC;
644 case CONNECTION_IP_CONFIG_TYPE_AUTO:
645 net_info->IpConfigType = NET_IP_CONFIG_TYPE_AUTO_IP;
647 case CONNECTION_IP_CONFIG_TYPE_FIXED:
648 net_info->IpConfigType = NET_IP_CONFIG_TYPE_FIXED;
650 case CONNECTION_IP_CONFIG_TYPE_NONE:
651 net_info->IpConfigType = NET_IP_CONFIG_TYPE_OFF;
654 return CONNECTION_ERROR_INVALID_PARAMETER;
657 return CONNECTION_ERROR_NONE;
660 int connection_profile_set_ip_address(connection_profile_h profile,
661 connection_address_family_e address_family, const char* ip_address)
663 if (!(_connection_libnet_check_profile_validity(profile)) ||
664 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
665 address_family != CONNECTION_ADDRESS_FAMILY_IPV6)) {
666 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
667 return CONNECTION_ERROR_INVALID_PARAMETER;
670 net_profile_info_t *profile_info = profile;
671 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
672 if (net_info == NULL)
673 return CONNECTION_ERROR_OPERATION_FAILED;
675 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
676 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
678 if (ip_address == NULL)
679 net_info->IpAddr.Data.Ipv4.s_addr = 0;
680 else if (inet_aton(ip_address, &(net_info->IpAddr.Data.Ipv4)) == 0)
681 return CONNECTION_ERROR_INVALID_PARAMETER;
683 return CONNECTION_ERROR_NONE;
686 int connection_profile_set_subnet_mask(connection_profile_h profile,
687 connection_address_family_e address_family, const char* subnet_mask)
689 if (!(_connection_libnet_check_profile_validity(profile)) ||
690 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
691 address_family != CONNECTION_ADDRESS_FAMILY_IPV6)) {
692 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
693 return CONNECTION_ERROR_INVALID_PARAMETER;
696 net_profile_info_t *profile_info = profile;
697 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
698 if (net_info == NULL)
699 return CONNECTION_ERROR_OPERATION_FAILED;
701 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
702 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
704 if (subnet_mask == NULL)
705 net_info->SubnetMask.Data.Ipv4.s_addr = 0;
706 else if (inet_aton(subnet_mask, &(net_info->SubnetMask.Data.Ipv4)) == 0)
707 return CONNECTION_ERROR_INVALID_PARAMETER;
709 return CONNECTION_ERROR_NONE;
712 int connection_profile_set_gateway_address(connection_profile_h profile,
713 connection_address_family_e address_family, const char* gateway_address)
715 if (!(_connection_libnet_check_profile_validity(profile)) ||
716 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
717 address_family != CONNECTION_ADDRESS_FAMILY_IPV6)) {
718 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
719 return CONNECTION_ERROR_INVALID_PARAMETER;
722 net_profile_info_t *profile_info = profile;
723 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
724 if (net_info == NULL)
725 return CONNECTION_ERROR_OPERATION_FAILED;
727 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
728 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
730 if (gateway_address == NULL)
731 net_info->GatewayAddr.Data.Ipv4.s_addr = 0;
732 else if (inet_aton(gateway_address, &(net_info->GatewayAddr.Data.Ipv4)) == 0)
733 return CONNECTION_ERROR_INVALID_PARAMETER;
735 return CONNECTION_ERROR_NONE;
738 int connection_profile_set_dns_address(connection_profile_h profile, int order,
739 connection_address_family_e address_family, const char* dns_address)
741 if (!(_connection_libnet_check_profile_validity(profile)) ||
742 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
743 address_family != CONNECTION_ADDRESS_FAMILY_IPV6) ||
745 order > NET_DNS_ADDR_MAX) {
746 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
747 return CONNECTION_ERROR_INVALID_PARAMETER;
750 net_profile_info_t *profile_info = profile;
751 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
752 if (net_info == NULL)
753 return CONNECTION_ERROR_OPERATION_FAILED;
755 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
756 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
758 if (dns_address == NULL)
759 net_info->DnsAddr[order-1].Data.Ipv4.s_addr = 0;
760 else if (inet_aton(dns_address, &(net_info->DnsAddr[order-1].Data.Ipv4)) == 0)
761 return CONNECTION_ERROR_INVALID_PARAMETER;
763 return CONNECTION_ERROR_NONE;
766 int connection_profile_set_proxy_type(connection_profile_h profile, connection_proxy_type_e type)
768 if (!(_connection_libnet_check_profile_validity(profile))) {
769 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
770 return CONNECTION_ERROR_INVALID_PARAMETER;
773 net_profile_info_t *profile_info = profile;
774 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
775 if (net_info == NULL)
776 return CONNECTION_ERROR_OPERATION_FAILED;
779 case CONNECTION_PROXY_TYPE_DIRECT:
780 net_info->ProxyMethod = NET_PROXY_TYPE_DIRECT;
782 case CONNECTION_PROXY_TYPE_AUTO:
783 net_info->ProxyMethod = NET_PROXY_TYPE_AUTO;
785 case CONNECTION_PROXY_TYPE_MANUAL:
786 net_info->ProxyMethod = NET_PROXY_TYPE_MANUAL;
789 return CONNECTION_ERROR_INVALID_PARAMETER;
792 return CONNECTION_ERROR_NONE;
795 int connection_profile_set_proxy_address(connection_profile_h profile,
796 connection_address_family_e address_family, const char* proxy_address)
798 if (!(_connection_libnet_check_profile_validity(profile)) ||
799 (address_family != CONNECTION_ADDRESS_FAMILY_IPV4 &&
800 address_family != CONNECTION_ADDRESS_FAMILY_IPV6)) {
801 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
802 return CONNECTION_ERROR_INVALID_PARAMETER;
805 net_profile_info_t *profile_info = profile;
806 net_dev_info_t *net_info = __profile_get_net_info(profile_info);
807 if (net_info == NULL)
808 return CONNECTION_ERROR_OPERATION_FAILED;
810 if (address_family == CONNECTION_ADDRESS_FAMILY_IPV6)
811 return CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED;
813 if (proxy_address == NULL)
814 net_info->ProxyAddr[0] = '\0';
816 g_strlcpy(net_info->ProxyAddr, proxy_address, NET_PROXY_LEN_MAX);
818 return CONNECTION_ERROR_NONE;
821 int connection_profile_set_state_changed_cb(connection_profile_h profile,
822 connection_profile_state_changed_cb callback, void* user_data)
824 if (!(_connection_libnet_check_profile_validity(profile)) || callback == NULL) {
825 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
826 return CONNECTION_ERROR_INVALID_PARAMETER;
829 if (_connection_libnet_add_to_profile_cb_list(profile, callback, user_data))
830 return CONNECTION_ERROR_NONE;
832 return CONNECTION_ERROR_OPERATION_FAILED;
835 int connection_profile_unset_state_changed_cb(connection_profile_h profile)
837 if (!(_connection_libnet_check_profile_cb_validity(profile))) {
838 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
839 return CONNECTION_ERROR_INVALID_PARAMETER;
842 _connection_libnet_remove_from_profile_cb_list(profile);
844 return CONNECTION_ERROR_NONE;
848 /* Wi-Fi profile module **************************************************************************/
850 int connection_profile_get_wifi_essid(connection_profile_h profile, char** essid)
852 if (!(_connection_libnet_check_profile_validity(profile)) || essid == NULL) {
853 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
854 return CONNECTION_ERROR_INVALID_PARAMETER;
857 net_profile_info_t *profile_info = profile;
859 if (profile_info->profile_type != NET_DEVICE_WIFI)
860 return CONNECTION_ERROR_INVALID_PARAMETER;
862 *essid = g_strdup(profile_info->ProfileInfo.Wlan.essid);
864 return CONNECTION_ERROR_OUT_OF_MEMORY;
866 return CONNECTION_ERROR_NONE;
869 int connection_profile_get_wifi_bssid(connection_profile_h profile, char** bssid)
871 if (!(_connection_libnet_check_profile_validity(profile)) || bssid == NULL) {
872 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
873 return CONNECTION_ERROR_INVALID_PARAMETER;
876 net_profile_info_t *profile_info = profile;
878 if (profile_info->profile_type != NET_DEVICE_WIFI)
879 return CONNECTION_ERROR_INVALID_PARAMETER;
881 *bssid = g_strdup(profile_info->ProfileInfo.Wlan.bssid);
883 return CONNECTION_ERROR_OUT_OF_MEMORY;
885 return CONNECTION_ERROR_NONE;
888 int connection_profile_get_wifi_rssi(connection_profile_h profile, int* rssi)
890 if (!(_connection_libnet_check_profile_validity(profile)) || rssi == NULL) {
891 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
892 return CONNECTION_ERROR_INVALID_PARAMETER;
895 net_profile_info_t *profile_info = profile;
897 if (profile_info->profile_type != NET_DEVICE_WIFI)
898 return CONNECTION_ERROR_INVALID_PARAMETER;
900 *rssi = (int)profile_info->ProfileInfo.Wlan.Strength;
902 return CONNECTION_ERROR_NONE;
905 int connection_profile_get_wifi_frequency(connection_profile_h profile, int* frequency)
907 if (!(_connection_libnet_check_profile_validity(profile)) || frequency == NULL) {
908 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
909 return CONNECTION_ERROR_INVALID_PARAMETER;
912 net_profile_info_t *profile_info = profile;
914 if (profile_info->profile_type != NET_DEVICE_WIFI)
915 return CONNECTION_ERROR_INVALID_PARAMETER;
917 *frequency = (int)profile_info->ProfileInfo.Wlan.frequency;
919 return CONNECTION_ERROR_NONE;
922 int connection_profile_get_wifi_max_speed(connection_profile_h profile, int* max_speed)
924 if (!(_connection_libnet_check_profile_validity(profile)) || max_speed == NULL) {
925 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
926 return CONNECTION_ERROR_INVALID_PARAMETER;
929 net_profile_info_t *profile_info = profile;
931 if (profile_info->profile_type != NET_DEVICE_WIFI)
932 return CONNECTION_ERROR_INVALID_PARAMETER;
934 *max_speed = (int)profile_info->ProfileInfo.Wlan.max_rate;
936 return CONNECTION_ERROR_NONE;
939 int connection_profile_get_wifi_security_type(connection_profile_h profile, connection_wifi_security_type_e* type)
941 if (!(_connection_libnet_check_profile_validity(profile)) || type == NULL) {
942 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
943 return CONNECTION_ERROR_INVALID_PARAMETER;
946 net_profile_info_t *profile_info = profile;
948 if (profile_info->profile_type != NET_DEVICE_WIFI)
949 return CONNECTION_ERROR_INVALID_PARAMETER;
951 switch (profile_info->ProfileInfo.Wlan.security_info.sec_mode) {
952 case WLAN_SEC_MODE_NONE:
953 *type = CONNECTION_WIFI_SECURITY_TYPE_NONE;
955 case WLAN_SEC_MODE_WEP:
956 *type = CONNECTION_WIFI_SECURITY_TYPE_WEP;
958 case WLAN_SEC_MODE_IEEE8021X:
959 *type = CONNECTION_WIFI_SECURITY_TYPE_EAP;
961 case WLAN_SEC_MODE_WPA_PSK:
962 *type = CONNECTION_WIFI_SECURITY_TYPE_WPA_PSK;
964 case WLAN_SEC_MODE_WPA2_PSK:
965 *type = CONNECTION_WIFI_SECURITY_TYPE_WPA2_PSK;
968 return CONNECTION_ERROR_OPERATION_FAILED;
971 return CONNECTION_ERROR_NONE;
974 int connection_profile_get_wifi_encryption_type(connection_profile_h profile, connection_wifi_encryption_type_e* type)
976 if (!(_connection_libnet_check_profile_validity(profile)) || type == NULL) {
977 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
978 return CONNECTION_ERROR_INVALID_PARAMETER;
981 net_profile_info_t *profile_info = profile;
983 if (profile_info->profile_type != NET_DEVICE_WIFI)
984 return CONNECTION_ERROR_INVALID_PARAMETER;
986 switch (profile_info->ProfileInfo.Wlan.security_info.enc_mode) {
987 case WLAN_ENC_MODE_NONE:
988 *type = CONNECTION_WIFI_ENCRYPTION_TYPE_NONE;
990 case WLAN_ENC_MODE_WEP:
991 *type = CONNECTION_WIFI_ENCRYPTION_TYPE_WEP;
993 case WLAN_ENC_MODE_TKIP:
994 *type = CONNECTION_WIFI_ENCRYPTION_TYPE_TKIP;
996 case WLAN_ENC_MODE_AES:
997 *type = CONNECTION_WIFI_ENCRYPTION_TYPE_AES;
999 case WLAN_ENC_MODE_TKIP_AES_MIXED:
1000 *type = CONNECTION_WIFI_ENCRYPTION_TYPE_TKIP_AES_MIXED;
1003 return CONNECTION_ERROR_OPERATION_FAILED;
1006 return CONNECTION_ERROR_NONE;
1009 int connection_profile_is_wifi_passphrase_required(connection_profile_h profile, bool* required)
1011 if (!(_connection_libnet_check_profile_validity(profile)) || required == NULL) {
1012 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1013 return CONNECTION_ERROR_INVALID_PARAMETER;
1016 net_profile_info_t *profile_info = profile;
1018 if (profile_info->profile_type != NET_DEVICE_WIFI)
1019 return CONNECTION_ERROR_INVALID_PARAMETER;
1021 if (profile_info->Favourite) {
1023 return CONNECTION_ERROR_NONE;
1026 switch (profile_info->ProfileInfo.Wlan.security_info.sec_mode) {
1027 case WLAN_SEC_MODE_NONE:
1030 case WLAN_SEC_MODE_WEP:
1031 case WLAN_SEC_MODE_IEEE8021X:
1032 case WLAN_SEC_MODE_WPA_PSK:
1033 case WLAN_SEC_MODE_WPA2_PSK:
1037 return CONNECTION_ERROR_OPERATION_FAILED;
1040 return CONNECTION_ERROR_NONE;
1043 int connection_profile_set_wifi_passphrase(connection_profile_h profile, const char* passphrase)
1045 if (!(_connection_libnet_check_profile_validity(profile)) || passphrase == NULL) {
1046 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1047 return CONNECTION_ERROR_INVALID_PARAMETER;
1050 net_profile_info_t *profile_info = profile;
1052 if (profile_info->profile_type != NET_DEVICE_WIFI)
1053 return CONNECTION_ERROR_INVALID_PARAMETER;
1055 g_strlcpy(profile_info->ProfileInfo.Wlan.security_info.authentication.psk.pskKey,
1056 passphrase, NETPM_WLAN_MAX_PSK_PASSPHRASE_LEN);
1058 return CONNECTION_ERROR_NONE;
1061 int connection_profile_is_wifi_wps_supported(connection_profile_h profile, bool* supported)
1063 if (!(_connection_libnet_check_profile_validity(profile)) || supported == NULL) {
1064 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1065 return CONNECTION_ERROR_INVALID_PARAMETER;
1068 net_profile_info_t *profile_info = profile;
1070 if (profile_info->profile_type != NET_DEVICE_WIFI)
1071 return CONNECTION_ERROR_INVALID_PARAMETER;
1073 if (profile_info->ProfileInfo.Wlan.security_info.wps_support)
1078 return CONNECTION_ERROR_NONE;
1082 /* Cellular profile module ***********************************************************************/
1084 int connection_profile_get_cellular_network_type(connection_profile_h profile, connection_cellular_network_type_e* type)
1086 if (!(_connection_libnet_check_profile_validity(profile)) || type == NULL) {
1087 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1088 return CONNECTION_ERROR_INVALID_PARAMETER;
1092 net_profile_info_t *profile_info = profile;
1094 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1095 return CONNECTION_ERROR_INVALID_PARAMETER;
1097 if (vconf_get_int(VCONFKEY_TELEPHONY_SVC_ACT, &network_type)) {
1098 CONNECTION_LOG(CONNECTION_ERROR, "vconf_get_int Failed\n");
1099 return CONNECTION_ERROR_OPERATION_FAILED;
1102 CONNECTION_LOG(CONNECTION_INFO, "Cellular network type = %d\n", network_type);
1104 switch (network_type) {
1105 case VCONFKEY_TELEPHONY_SVC_ACT_NONE:
1106 *type = CONNECTION_CELLULAR_NETWORK_TYPE_UNKNOWN;
1108 case VCONFKEY_TELEPHONY_SVC_ACT_GPRS:
1109 *type = CONNECTION_CELLULAR_NETWORK_TYPE_GPRS;
1111 case VCONFKEY_TELEPHONY_SVC_ACT_EGPRS:
1112 *type = CONNECTION_CELLULAR_NETWORK_TYPE_EDGE;
1114 case VCONFKEY_TELEPHONY_SVC_ACT_UMTS:
1115 *type = CONNECTION_CELLULAR_NETWORK_TYPE_UMTS;
1118 return CONNECTION_ERROR_OPERATION_FAILED;
1121 return CONNECTION_ERROR_NONE;
1124 int connection_profile_get_cellular_service_type(connection_profile_h profile,
1125 connection_cellular_service_type_e* type)
1127 if (!(_connection_libnet_check_profile_validity(profile)) || type == NULL) {
1128 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1129 return CONNECTION_ERROR_INVALID_PARAMETER;
1132 net_profile_info_t *profile_info = profile;
1134 if (profile_info->profile_type != NET_DEVICE_CELLULAR) {
1135 CONNECTION_LOG(CONNECTION_ERROR, "Invalid profile type Passed\n");
1136 return CONNECTION_ERROR_INVALID_PARAMETER;
1139 *type = _profile_convert_to_connection_cellular_service_type(profile_info->ProfileInfo.Pdp.ServiceType);
1141 if (*type == CONNECTION_CELLULAR_SERVICE_TYPE_UNKNOWN) {
1142 CONNECTION_LOG(CONNECTION_ERROR, "Invalid service type Passed\n");
1143 return CONNECTION_ERROR_OPERATION_FAILED;
1146 return CONNECTION_ERROR_NONE;
1149 int connection_profile_get_cellular_apn(connection_profile_h profile, char** apn)
1151 if (!(_connection_libnet_check_profile_validity(profile)) || apn == NULL) {
1152 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1153 return CONNECTION_ERROR_INVALID_PARAMETER;
1156 net_profile_info_t *profile_info = profile;
1158 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1159 return CONNECTION_ERROR_INVALID_PARAMETER;
1161 *apn = g_strdup(profile_info->ProfileInfo.Pdp.Apn);
1163 return CONNECTION_ERROR_OUT_OF_MEMORY;
1165 return CONNECTION_ERROR_NONE;
1168 int connection_profile_get_cellular_auth_info(connection_profile_h profile,
1169 connection_cellular_auth_type_e* type, char** user_name, char** password)
1171 if (!(_connection_libnet_check_profile_validity(profile)) ||
1172 type == NULL || user_name == NULL || password == NULL) {
1173 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1174 return CONNECTION_ERROR_INVALID_PARAMETER;
1177 net_profile_info_t *profile_info = profile;
1179 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1180 return CONNECTION_ERROR_INVALID_PARAMETER;
1182 switch (profile_info->ProfileInfo.Pdp.AuthInfo.AuthType) {
1183 case NET_PDP_AUTH_NONE:
1184 *type = CONNECTION_CELLULAR_AUTH_TYPE_NONE;
1186 case NET_PDP_AUTH_PAP:
1187 *type = CONNECTION_CELLULAR_AUTH_TYPE_PAP;
1189 case NET_PDP_AUTH_CHAP:
1190 *type = CONNECTION_CELLULAR_AUTH_TYPE_CHAP;
1193 return CONNECTION_ERROR_OPERATION_FAILED;
1196 *user_name = g_strdup(profile_info->ProfileInfo.Pdp.AuthInfo.UserName);
1197 if (*user_name == NULL)
1198 return CONNECTION_ERROR_OUT_OF_MEMORY;
1200 *password = g_strdup(profile_info->ProfileInfo.Pdp.AuthInfo.Password);
1201 if (*password == NULL) {
1203 return CONNECTION_ERROR_OUT_OF_MEMORY;
1206 return CONNECTION_ERROR_NONE;
1209 int connection_profile_get_cellular_home_url(connection_profile_h profile, char** home_url)
1211 if (!(_connection_libnet_check_profile_validity(profile)) || home_url == NULL) {
1212 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1213 return CONNECTION_ERROR_INVALID_PARAMETER;
1216 net_profile_info_t *profile_info = profile;
1218 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1219 return CONNECTION_ERROR_INVALID_PARAMETER;
1221 *home_url = g_strdup(profile_info->ProfileInfo.Pdp.HomeURL);
1222 if (*home_url == NULL)
1223 return CONNECTION_ERROR_OUT_OF_MEMORY;
1225 return CONNECTION_ERROR_NONE;
1228 int connection_profile_is_cellular_roaming(connection_profile_h profile, bool* is_roaming)
1230 if (!(_connection_libnet_check_profile_validity(profile)) || is_roaming == NULL) {
1231 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1232 return CONNECTION_ERROR_INVALID_PARAMETER;
1235 net_profile_info_t *profile_info = profile;
1237 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1238 return CONNECTION_ERROR_INVALID_PARAMETER;
1240 if (profile_info->ProfileInfo.Pdp.Roaming)
1243 *is_roaming = false;
1245 return CONNECTION_ERROR_NONE;
1248 int connection_profile_set_cellular_service_type(connection_profile_h profile,
1249 connection_cellular_service_type_e service_type)
1251 if (!(_connection_libnet_check_profile_validity(profile))) {
1252 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1253 return CONNECTION_ERROR_INVALID_PARAMETER;
1256 net_profile_info_t *profile_info = profile;
1258 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1259 return CONNECTION_ERROR_INVALID_PARAMETER;
1261 switch (service_type) {
1262 case CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET:
1263 profile_info->ProfileInfo.Pdp.ServiceType = NET_SERVICE_INTERNET;
1265 case CONNECTION_CELLULAR_SERVICE_TYPE_MMS:
1266 profile_info->ProfileInfo.Pdp.ServiceType = NET_SERVICE_MMS;
1268 case CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_INTERNET:
1269 profile_info->ProfileInfo.Pdp.ServiceType = NET_SERVICE_PREPAID_INTERNET;
1271 case CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_MMS:
1272 profile_info->ProfileInfo.Pdp.ServiceType = NET_SERVICE_PREPAID_MMS;
1274 case CONNECTION_CELLULAR_SERVICE_TYPE_TETHERING:
1275 profile_info->ProfileInfo.Pdp.ServiceType = NET_SERVICE_TETHERING;
1277 case CONNECTION_CELLULAR_SERVICE_TYPE_APPLICATION:
1278 profile_info->ProfileInfo.Pdp.ServiceType = NET_SERVICE_APPLICATION;
1280 case CONNECTION_CELLULAR_SERVICE_TYPE_UNKNOWN:
1282 return CONNECTION_ERROR_INVALID_PARAMETER;
1285 return CONNECTION_ERROR_NONE;
1288 int connection_profile_set_cellular_apn(connection_profile_h profile, const char* apn)
1290 if (!(_connection_libnet_check_profile_validity(profile)) || apn == NULL) {
1291 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1292 return CONNECTION_ERROR_INVALID_PARAMETER;
1295 net_profile_info_t *profile_info = profile;
1297 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1298 return CONNECTION_ERROR_INVALID_PARAMETER;
1300 g_strlcpy(profile_info->ProfileInfo.Pdp.Apn, apn, NET_PDP_APN_LEN_MAX+1);
1302 return CONNECTION_ERROR_NONE;
1305 int connection_profile_set_cellular_auth_info(connection_profile_h profile,
1306 connection_cellular_auth_type_e type, const char* user_name, const char* password)
1308 if (!(_connection_libnet_check_profile_validity(profile)) ||
1309 user_name == NULL || password == NULL) {
1310 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1311 return CONNECTION_ERROR_INVALID_PARAMETER;
1314 net_profile_info_t *profile_info = profile;
1316 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1317 return CONNECTION_ERROR_INVALID_PARAMETER;
1320 case CONNECTION_CELLULAR_AUTH_TYPE_NONE:
1321 profile_info->ProfileInfo.Pdp.AuthInfo.AuthType = NET_PDP_AUTH_NONE;
1323 case CONNECTION_CELLULAR_AUTH_TYPE_PAP:
1324 profile_info->ProfileInfo.Pdp.AuthInfo.AuthType = NET_PDP_AUTH_PAP;
1326 case CONNECTION_CELLULAR_AUTH_TYPE_CHAP:
1327 profile_info->ProfileInfo.Pdp.AuthInfo.AuthType = NET_PDP_AUTH_CHAP;
1330 return CONNECTION_ERROR_INVALID_PARAMETER;
1333 g_strlcpy(profile_info->ProfileInfo.Pdp.AuthInfo.UserName, user_name, NET_PDP_AUTH_USERNAME_LEN_MAX+1);
1334 g_strlcpy(profile_info->ProfileInfo.Pdp.AuthInfo.Password, password, NET_PDP_AUTH_PASSWORD_LEN_MAX+1);
1336 return CONNECTION_ERROR_NONE;
1339 int connection_profile_set_cellular_home_url(connection_profile_h profile, const char* home_url)
1341 if (!(_connection_libnet_check_profile_validity(profile)) || home_url == NULL) {
1342 CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed\n");
1343 return CONNECTION_ERROR_INVALID_PARAMETER;
1346 net_profile_info_t *profile_info = profile;
1348 if (profile_info->profile_type != NET_DEVICE_CELLULAR)
1349 return CONNECTION_ERROR_INVALID_PARAMETER;
1351 g_strlcpy(profile_info->ProfileInfo.Pdp.HomeURL, home_url, NET_HOME_URL_LEN_MAX);
1353 return CONNECTION_ERROR_NONE;