X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fconnection.c;h=e01c914f95bf757c27a66d9151ce115ebdd68359;hb=7d8ee44647a5b0126d1f1398f4fccceea4ba166a;hp=cacbf5130f2fb67685f483013841ab9dd9495b1a;hpb=12c0865a562d1980267a48b74080dbd71e19fa5b;p=platform%2Fcore%2Fapi%2Fconnection.git diff --git a/src/connection.c b/src/connection.c index cacbf51..e01c914 100755 --- a/src/connection.c +++ b/src/connection.c @@ -16,13 +16,17 @@ #include #include +#include #include #include +#include #include "net_connection_private.h" static __thread GSList *conn_handle_list = NULL; +static int tv_profile = -1; // Unknown +//LCOV_EXCL_START static int __connection_convert_net_state(int status) { switch (status) { @@ -35,7 +39,7 @@ static int __connection_convert_net_state(int status) case VCONFKEY_NETWORK_BLUETOOTH: return CONNECTION_TYPE_BT; case VCONFKEY_NETWORK_DEFAULT_PROXY: - return CONNECTION_TYPE_PROXY; + return CONNECTION_TYPE_NET_PROXY; default: return CONNECTION_TYPE_DISCONNECTED; } @@ -170,7 +174,7 @@ static int __connection_set_type_changed_callback(connection_h connection, if (--refcount == 0) { if (vconf_ignore_key_changed(VCONFKEY_NETWORK_STATUS, __connection_cb_type_change_cb) < 0) { - CONNECTION_LOG(CONNECTION_ERROR, + CONNECTION_LOG(CONNECTION_ERROR, //LCOV_EXCL_LINE "Error to de-register vconf callback(%d)", refcount); } else { CONNECTION_LOG(CONNECTION_INFO, @@ -209,6 +213,9 @@ static gboolean __connection_cb_ip_changed_cb_idle(gpointer user_data) return FALSE; ip_addr = vconf_get_str(VCONFKEY_NETWORK_IP); + if (ip_addr == NULL) + CONNECTION_LOG(CONNECTION_ERROR, //LCOV_EXCL_LINE + "vconf_get_str(VCONFKEY_NETWORK_IP) is Failed"); callback = __connection_get_ip_changed_callback(local_handle); data = __connection_get_ip_changed_userdata(local_handle); @@ -216,6 +223,8 @@ static gboolean __connection_cb_ip_changed_cb_idle(gpointer user_data) if (callback) callback(ip_addr, NULL, data); + g_free(ip_addr); + return FALSE; } @@ -257,7 +266,7 @@ static int __connection_set_ip_changed_callback(connection_h connection, if (--refcount == 0) { if (vconf_ignore_key_changed(VCONFKEY_NETWORK_IP, __connection_cb_ip_change_cb) < 0) { - CONNECTION_LOG(CONNECTION_ERROR, + CONNECTION_LOG(CONNECTION_ERROR, //LCOV_EXCL_LINE "Error to de-register vconf callback(%d)", refcount); } else { CONNECTION_LOG(CONNECTION_INFO, @@ -296,6 +305,9 @@ static gboolean __connection_cb_proxy_changed_cb_idle(gpointer user_data) return FALSE; proxy = vconf_get_str(VCONFKEY_NETWORK_PROXY); + if (proxy == NULL) + CONNECTION_LOG(CONNECTION_ERROR, //LCOV_EXCL_LINE + "vconf_get_str(VCONFKEY_NETWORK_PROXY) is Failed"); callback = __connection_get_proxy_changed_callback(local_handle); data = __connection_get_proxy_changed_userdata(local_handle); @@ -303,6 +315,8 @@ static gboolean __connection_cb_proxy_changed_cb_idle(gpointer user_data) if (callback) callback(proxy, NULL, data); + g_free(proxy); + return FALSE; } @@ -344,7 +358,7 @@ static int __connection_set_proxy_changed_callback(connection_h connection, if (--refcount == 0) { if (vconf_ignore_key_changed(VCONFKEY_NETWORK_PROXY, __connection_cb_proxy_change_cb) < 0) { - CONNECTION_LOG(CONNECTION_ERROR, + CONNECTION_LOG(CONNECTION_ERROR, //LCOV_EXCL_LINE "Error to de-register vconf callback(%d)", refcount); } else { CONNECTION_LOG(CONNECTION_INFO, @@ -379,6 +393,7 @@ static int __connection_set_ethernet_cable_state_changed_cb(connection_h connect local_handle->ethernet_cable_state_changed_user_data = user_data; return CONNECTION_ERROR_NONE; } +//LCOV_EXCL_STOP static int __connection_get_handle_count(void) { @@ -397,18 +412,18 @@ EXPORT_API int connection_create(connection_h *connection) int rv = _connection_libnet_init(); if (rv == NET_ERR_ACCESS_DENIED) { - CONNECTION_LOG(CONNECTION_ERROR, "Access denied"); - return CONNECTION_ERROR_PERMISSION_DENIED; + CONNECTION_LOG(CONNECTION_ERROR, "Access denied"); //LCOV_EXCL_LINE + return CONNECTION_ERROR_PERMISSION_DENIED; //LCOV_EXCL_LINE } else if (rv != NET_ERR_NONE) { - CONNECTION_LOG(CONNECTION_ERROR, "Failed to create connection[%d]", rv); - return CONNECTION_ERROR_OPERATION_FAILED; + CONNECTION_LOG(CONNECTION_ERROR, "Failed to create connection[%d]", rv); //LCOV_EXCL_LINE + return CONNECTION_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE } *connection = g_try_malloc0(sizeof(connection_handle_s)); if (*connection != NULL) CONNECTION_LOG(CONNECTION_INFO, "New handle created[%p]", *connection); else - return CONNECTION_ERROR_OUT_OF_MEMORY; + return CONNECTION_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE conn_handle_list = g_slist_prepend(conn_handle_list, *connection); @@ -458,8 +473,8 @@ EXPORT_API int connection_get_type(connection_h connection, connection_type_e* t rv = vconf_get_int(VCONFKEY_NETWORK_STATUS, &status); if (rv != VCONF_OK) { - CONNECTION_LOG(CONNECTION_ERROR, "vconf_get_int Failed = %d", status); - return CONNECTION_ERROR_OPERATION_FAILED; + CONNECTION_LOG(CONNECTION_ERROR, "vconf_get_int Failed = %d", status); //LCOV_EXCL_LINE + return CONNECTION_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE } CONNECTION_LOG(CONNECTION_INFO, "Connected Network = %d", status); @@ -490,8 +505,8 @@ EXPORT_API int connection_get_ip_address(connection_h connection, } if (*ip_address == NULL) { - CONNECTION_LOG(CONNECTION_ERROR, "vconf_get_str Failed"); - return CONNECTION_ERROR_OPERATION_FAILED; + CONNECTION_LOG(CONNECTION_ERROR, "vconf_get_str Failed"); //LCOV_EXCL_LINE + return CONNECTION_ERROR_OPERATION_FAILED;//LCOV_EXCL_LINE } return CONNECTION_ERROR_NONE; @@ -518,8 +533,8 @@ EXPORT_API int connection_get_proxy(connection_h connection, } if (*proxy == NULL) { - CONNECTION_LOG(CONNECTION_ERROR, "vconf_get_str Failed"); - return CONNECTION_ERROR_OPERATION_FAILED; + CONNECTION_LOG(CONNECTION_ERROR, "vconf_get_str Failed"); //LCOV_EXCL_LINE + return CONNECTION_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE } return CONNECTION_ERROR_NONE; @@ -534,8 +549,8 @@ EXPORT_API int connection_get_mac_address(connection_h connection, connection_ty if (type == CONNECTION_TYPE_WIFI) CHECK_FEATURE_SUPPORTED(WIFI_FEATURE); - else if (type == CONNECTION_TYPE_ETHERNET) - CHECK_FEATURE_SUPPORTED(ETHERNET_FEATURE); + else if (type == CONNECTION_TYPE_ETHERNET) //LCOV_EXCL_LINE + CHECK_FEATURE_SUPPORTED(ETHERNET_FEATURE); //LCOV_EXCL_LINE if (mac_addr == NULL || !(__connection_check_handle_validity(connection))) { CONNECTION_LOG(CONNECTION_ERROR, "Invalid parameter"); @@ -544,29 +559,48 @@ EXPORT_API int connection_get_mac_address(connection_h connection, connection_ty switch (type) { case CONNECTION_TYPE_WIFI: - fp = fopen(WIFI_MAC_INFO_FILE, "r"); - if (fp == NULL) { - CONNECTION_LOG(CONNECTION_ERROR, "Failed to open file %s", WIFI_MAC_INFO_FILE); - return CONNECTION_ERROR_OUT_OF_MEMORY; + if (__builtin_expect(tv_profile == -1, 0)) { + char *profileName; + system_info_get_platform_string("http://tizen.org/feature/profile", &profileName); + if (*profileName == 't' || *profileName == 'T') + tv_profile = 1; + else + tv_profile = 0; + free(profileName); } + if (tv_profile == 1) { + fp = fopen(WIFI_MAC_INFO_FILE, "r"); + if (fp == NULL) { + CONNECTION_LOG(CONNECTION_ERROR, "Failed to open file %s", WIFI_MAC_INFO_FILE); //LCOV_EXCL_LINE + return CONNECTION_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE + } - if (fgets(buf, sizeof(buf), fp) == NULL) { - CONNECTION_LOG(CONNECTION_ERROR, "Failed to get MAC info from %s", WIFI_MAC_INFO_FILE); - fclose(fp); - return CONNECTION_ERROR_OPERATION_FAILED; - } + if (fgets(buf, sizeof(buf), fp) == NULL) { + CONNECTION_LOG(CONNECTION_ERROR, "Failed to get MAC info from %s", WIFI_MAC_INFO_FILE); //LCOV_EXCL_LINE + fclose(fp); //LCOV_EXCL_LINE + return CONNECTION_ERROR_OPERATION_FAILED; + } - CONNECTION_LOG(CONNECTION_INFO, "%s : %s", WIFI_MAC_INFO_FILE, buf); + CONNECTION_LOG(CONNECTION_INFO, "%s : %s", WIFI_MAC_INFO_FILE, buf); - *mac_addr = (char *)malloc(CONNECTION_MAC_INFO_LENGTH + 1); - if (*mac_addr == NULL) { - CONNECTION_LOG(CONNECTION_ERROR, "malloc() failed"); + *mac_addr = (char *)malloc(CONNECTION_MAC_INFO_LENGTH + 1); + if (*mac_addr == NULL) { + CONNECTION_LOG(CONNECTION_ERROR, "malloc() failed"); //LCOV_EXCL_LINE + fclose(fp); //LCOV_EXCL_LINE + return CONNECTION_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE + } + g_strlcpy(*mac_addr, buf, CONNECTION_MAC_INFO_LENGTH + 1); fclose(fp); - return CONNECTION_ERROR_OUT_OF_MEMORY; + } else { + *mac_addr = vconf_get_str(VCONFKEY_WIFI_BSSID_ADDRESS); + + if (*mac_addr == NULL) { + CONNECTION_LOG(CONNECTION_ERROR, "Failed to get vconf from %s", VCONFKEY_WIFI_BSSID_ADDRESS); //LCOV_EXCL_LINE + return CONNECTION_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE + } } - g_strlcpy(*mac_addr, buf, CONNECTION_MAC_INFO_LENGTH + 1); - fclose(fp); break; + //LCOV_EXCL_START case CONNECTION_TYPE_ETHERNET: fp = fopen(ETHERNET_MAC_INFO_FILE, "r"); if (fp == NULL) { @@ -593,16 +627,17 @@ EXPORT_API int connection_get_mac_address(connection_h connection, connection_ty fclose(fp); break; - default: - CONNECTION_LOG(CONNECTION_ERROR, "Invalid parameter"); - return CONNECTION_ERROR_INVALID_PARAMETER; + //LCOV_EXCL_STOP + default : + CONNECTION_LOG(CONNECTION_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE + return CONNECTION_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE } /* Checking Invalid MAC Address */ if ((strcmp(*mac_addr, "00:00:00:00:00:00") == 0) || (strcmp(*mac_addr, "ff:ff:ff:ff:ff:ff") == 0)) { - CONNECTION_LOG(CONNECTION_ERROR, "MAC Address(%s) is invalid", *mac_addr); - return CONNECTION_ERROR_INVALID_OPERATION; + CONNECTION_LOG(CONNECTION_ERROR, "MAC Address(%s) is invalid", *mac_addr); //LCOV_EXCL_LINE + return CONNECTION_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE } CONNECTION_LOG(CONNECTION_INFO, "MAC Address %s", *mac_addr); @@ -610,6 +645,7 @@ EXPORT_API int connection_get_mac_address(connection_h connection, connection_ty return CONNECTION_ERROR_NONE; } + EXPORT_API int connection_get_cellular_state(connection_h connection, connection_cellular_state_e* state) { int rv = 0; @@ -628,8 +664,8 @@ EXPORT_API int connection_get_cellular_state(connection_h connection, connection rv = vconf_get_int(VCONFKEY_NETWORK_CELLULAR_STATE, &status); if (rv != VCONF_OK) { - CONNECTION_LOG(CONNECTION_ERROR, "Failed to get cellular state"); - return CONNECTION_ERROR_OPERATION_FAILED; + CONNECTION_LOG(CONNECTION_ERROR, "Failed to get cellular state"); //LCOV_EXCL_LINE + return CONNECTION_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE } CONNECTION_LOG(CONNECTION_INFO, "Cellular: %d", status); @@ -661,8 +697,8 @@ EXPORT_API int connection_get_cellular_state(connection_h connection, connection } #endif if (rv != VCONF_OK) { - CONNECTION_LOG(CONNECTION_ERROR, "Failed to get cellular state"); - return CONNECTION_ERROR_OPERATION_FAILED; + CONNECTION_LOG(CONNECTION_ERROR, "Failed to get cellular state"); //LCOV_EXCL_LINE + return CONNECTION_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE } } @@ -687,8 +723,8 @@ EXPORT_API int connection_get_wifi_state(connection_h connection, connection_wif int rv = _connection_libnet_get_wifi_state(state); if (rv != CONNECTION_ERROR_NONE) { - CONNECTION_LOG(CONNECTION_ERROR, "Fail to get Wi-Fi state[%d]", rv); - return rv; + CONNECTION_LOG(CONNECTION_ERROR, "Fail to get Wi-Fi state[%d]", rv); //LCOV_EXCL_LINE + return rv; //LCOV_EXCL_LINE } CONNECTION_LOG(CONNECTION_INFO, "Wi-Fi state: %d", *state); @@ -696,7 +732,8 @@ EXPORT_API int connection_get_wifi_state(connection_h connection, connection_wif return CONNECTION_ERROR_NONE; } -EXPORT_API int connection_get_ethernet_state(connection_h connection, connection_ethernet_state_e* state) +//LCOV_EXCL_START +EXPORT_API int connection_get_ethernet_state(connection_h connection, connection_ethernet_state_e *state) { CHECK_FEATURE_SUPPORTED(ETHERNET_FEATURE); @@ -746,8 +783,9 @@ EXPORT_API int connection_unset_ethernet_cable_state_chaged_cb(connection_h conn return __connection_set_ethernet_cable_state_changed_cb(connection, NULL, NULL); } +//LCOV_EXCL_STOP -EXPORT_API int connection_get_bt_state(connection_h connection, connection_bt_state_e* state) +EXPORT_API int connection_get_bt_state(connection_h connection, connection_bt_state_e *state) { CHECK_FEATURE_SUPPORTED(TETHERING_BLUETOOTH_FEATURE); @@ -848,24 +886,24 @@ EXPORT_API int connection_add_profile(connection_h connection, connection_profil } if (profile_info->profile_type != NET_DEVICE_CELLULAR) { - CONNECTION_LOG(CONNECTION_ERROR, "Invalid parameter"); - return CONNECTION_ERROR_INVALID_PARAMETER; + CONNECTION_LOG(CONNECTION_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE + return CONNECTION_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE } if (profile_info->ProfileInfo.Pdp.PSModemPath[0] != '/' || strlen(profile_info->ProfileInfo.Pdp.PSModemPath) < 2) { - CONNECTION_LOG(CONNECTION_ERROR, "Modem object path is NULL"); - return CONNECTION_ERROR_INVALID_PARAMETER; + CONNECTION_LOG(CONNECTION_ERROR, "Modem object path is NULL"); //LCOV_EXCL_LINE + return CONNECTION_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE } rv = net_add_profile(profile_info->ProfileInfo.Pdp.ServiceType, (net_profile_info_t*)profile); if (rv == NET_ERR_ACCESS_DENIED) { - CONNECTION_LOG(CONNECTION_ERROR, "Access denied"); - return CONNECTION_ERROR_PERMISSION_DENIED; + CONNECTION_LOG(CONNECTION_ERROR, "Access denied"); //LCOV_EXCL_LINE + return CONNECTION_ERROR_PERMISSION_DENIED; //LCOV_EXCL_LINE } else if (rv != NET_ERR_NONE) { - CONNECTION_LOG(CONNECTION_ERROR, "Failed to add profile[%d]", rv); - return CONNECTION_ERROR_OPERATION_FAILED; + CONNECTION_LOG(CONNECTION_ERROR, "Failed to add profile[%d]", rv); //LCOV_EXCL_LINE + return CONNECTION_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE } return CONNECTION_ERROR_NONE; @@ -886,17 +924,17 @@ EXPORT_API int connection_remove_profile(connection_h connection, connection_pro if (profile_info->profile_type != NET_DEVICE_CELLULAR && profile_info->profile_type != NET_DEVICE_WIFI) { - CONNECTION_LOG(CONNECTION_ERROR, "Invalid parameter"); - return CONNECTION_ERROR_INVALID_PARAMETER; + CONNECTION_LOG(CONNECTION_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE + return CONNECTION_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE } rv = net_delete_profile(profile_info->ProfileName); if (rv == NET_ERR_ACCESS_DENIED) { - CONNECTION_LOG(CONNECTION_ERROR, "Access denied"); - return CONNECTION_ERROR_PERMISSION_DENIED; + CONNECTION_LOG(CONNECTION_ERROR, "Access denied"); //LCOV_EXCL_LINE + return CONNECTION_ERROR_PERMISSION_DENIED; //LCOV_EXCL_LINE } else if (rv != NET_ERR_NONE) { - CONNECTION_LOG(CONNECTION_ERROR, "Failed to delete profile[%d]", rv); - return CONNECTION_ERROR_OPERATION_FAILED; + CONNECTION_LOG(CONNECTION_ERROR, "Failed to delete profile[%d]", rv); //LCOV_EXCL_LINE + return CONNECTION_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE } return CONNECTION_ERROR_NONE; @@ -917,11 +955,11 @@ EXPORT_API int connection_update_profile(connection_h connection, connection_pro rv = net_modify_profile(profile_info->ProfileName, (net_profile_info_t*)profile); if (rv == NET_ERR_ACCESS_DENIED) { - CONNECTION_LOG(CONNECTION_ERROR, "Access denied"); - return CONNECTION_ERROR_PERMISSION_DENIED; + CONNECTION_LOG(CONNECTION_ERROR, "Access denied"); //LCOV_EXCL_LINE + return CONNECTION_ERROR_PERMISSION_DENIED; //LCOV_EXCL_LINE } else if (rv != NET_ERR_NONE) { - CONNECTION_LOG(CONNECTION_ERROR, "Failed to modify profile[%d]", rv); - return CONNECTION_ERROR_OPERATION_FAILED; + CONNECTION_LOG(CONNECTION_ERROR, "Failed to modify profile[%d]", rv); //LCOV_EXCL_LINE + return CONNECTION_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE } return CONNECTION_ERROR_NONE; @@ -1058,8 +1096,8 @@ EXPORT_API int connection_reset_profile(connection_h connection, } if (id < 0 || id > 1) { - CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed"); - return CONNECTION_ERROR_INVALID_PARAMETER; + CONNECTION_LOG(CONNECTION_ERROR, "Wrong Parameter Passed"); //LCOV_EXCL_LINE + return CONNECTION_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE } return _connection_libnet_reset_profile(type, id, callback, user_data); @@ -1126,7 +1164,7 @@ static int __get_cellular_statistic(connection_statistics_type_e statistics_type #endif if (llsize == NULL) { - CONNECTION_LOG(CONNECTION_ERROR, "Invalid parameter"); + CONNECTION_LOG(CONNECTION_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE return CONNECTION_ERROR_INVALID_PARAMETER; } @@ -1195,8 +1233,8 @@ static int __get_cellular_statistic(connection_statistics_type_e statistics_type #endif if (rv != VCONF_OK || rv1 != VCONF_OK) { - CONNECTION_LOG(CONNECTION_ERROR, "Failed to get cellular statistics"); - return CONNECTION_ERROR_OPERATION_FAILED; + CONNECTION_LOG(CONNECTION_ERROR, "Failed to get cellular statistics"); //LCOV_EXCL_LINE + return CONNECTION_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE } *llsize = (long long)(last_size * 1000) + (long long)(size * 1000); @@ -1212,7 +1250,7 @@ static int __get_statistic(connection_type_e connection_type, unsigned long long ull_size; if (llsize == NULL) { - CONNECTION_LOG(CONNECTION_ERROR, "Invalid parameter"); + CONNECTION_LOG(CONNECTION_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE return CONNECTION_ERROR_INVALID_PARAMETER; } @@ -1220,7 +1258,7 @@ static int __get_statistic(connection_type_e connection_type, if (rv == CONNECTION_ERROR_PERMISSION_DENIED) return rv; else if (rv != CONNECTION_ERROR_NONE) { - CONNECTION_LOG(CONNECTION_ERROR, "Failed to get statistics"); + CONNECTION_LOG(CONNECTION_ERROR, "Failed to get statistics"); //LCOV_EXCL_LINE return CONNECTION_ERROR_OPERATION_FAILED; } @@ -1248,9 +1286,9 @@ static int __get_statistic(connection_type_e connection_type, if (rv == CONNECTION_ERROR_PERMISSION_DENIED) return rv; else if (rv != CONNECTION_ERROR_NONE) { - CONNECTION_LOG(CONNECTION_ERROR, "Failed to get Wi-Fi statistics"); - *llsize = 0; - return CONNECTION_ERROR_OPERATION_FAILED; + CONNECTION_LOG(CONNECTION_ERROR, "Failed to get Wi-Fi statistics"); //LCOV_EXCL_LINE + *llsize = 0; //LCOV_EXCL_LINE + return CONNECTION_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE } CONNECTION_LOG(CONNECTION_INFO, "%lld bytes", ull_size);