int _net_dbus_get_tech_status(net_tech_info_s* tech_status);
int _net_dbus_get_wifi_state(char **wifi_state);
int _net_dbus_connect_service(const net_wifi_connect_service_info_t* wifi_connection_info);
+int _net_dbus_get_preferred_ipv6_address(const char *profilename, char **address);
int _net_dbus_set_profile_ipv4(net_profile_info_s* prof_info, char* profile_name);
int _net_dbus_set_profile_ipv6(net_profile_info_s* prof_info, char* profile_name);
int _net_dbus_set_profile_dns(net_profile_info_s* prof_info, char* profile_name);
int net_wifi_get_autoscan(gboolean *autoscan);
int net_wifi_get_autoscanmode(unsigned int *autoscanmode);
int net_foreach_ipv6_address(GSList **ipv6_address_list);
+int net_get_preferred_ipv6_address(const char *profilename, char **address);
int net_config_get_id_list(GSList **list);
int net_config_set_field(const gchar *config_id, const gchar *key, const gchar *value);
Name: capi-network-wifi-manager
Summary: Network Wi-Fi library in TIZEN C API
-Version: 1.0.21
+Version: 1.0.22
Release: 1
Group: System/Network
License: Apache-2.0
return Error;
}
+int _net_dbus_get_preferred_ipv6_address(const char *profilename, char **address)
+{
+ __NETWORK_FUNC_ENTER__;
+
+ net_err_e Error = NET_ERR_NONE;
+ GVariant *message = NULL;
+ GVariant *params = NULL;
+
+ if (address == NULL) {
+ WIFI_LOG(WIFI_ERROR, "Invalid Parameter\n");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_INVALID_PARAM;
+ }
+
+ params = g_variant_new("(s)", profilename);
+ message = _net_invoke_dbus_method(NETCONFIG_SERVICE, NETCONFIG_NETWORK_PATH,
+ NETCONFIG_NETWORK_INTERFACE, "PreferredIpv6Address", params, &Error);
+ if (message == NULL) {
+ WIFI_LOG(WIFI_ERROR, "Failed to get preferred IPv6 address\n");
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+ }
+
+ g_variant_get(message, "(s)", address);
+
+ WIFI_LOG(WIFI_INFO, "Preferred IPv6 Address [%s]\n", *address);
+
+ g_variant_unref(message);
+
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+}
+
//LCOV_EXCL_START
int _net_dbus_set_profile_ipv4(net_profile_info_s* prof_info, char* profile_name)
{
return Error;
}
+int net_get_preferred_ipv6_address(const char *profilename, char **address)
+{
+ __NETWORK_FUNC_ENTER__;
+ net_err_e Error = NET_ERR_NONE;
+
+ Error = _net_dbus_get_preferred_ipv6_address(profilename, address);
+ if (Error != NET_ERR_NONE)
+ WIFI_LOG(WIFI_ERROR, "_net_dbus_get_preferred_ipv6_address failed\n");
+
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+}
+
//LCOV_EXCL_STOP
}
net_profile_info_s *profile_info = ap;
- if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4)
+ if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV4) {
*ip_address = __ap_convert_ip_to_string(
&profile_info->net_info.IpAddr,
address_family);
- else
- *ip_address = __ap_convert_ip_to_string(
- &profile_info->net_info.IpAddr6,
- address_family);
+ if (g_strcmp0(*ip_address, "0.0.0.0") == 0) {
+ WIFI_LOG(WIFI_ERROR, "Invalid IP Address [%s]\n", *ip_address); //LCOV_EXCL_LINE
+ __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
+ return WIFI_MANAGER_ERROR_NO_CONNECTION; //LCOV_EXCL_LINE
+ }
+ } else if (address_family == WIFI_MANAGER_ADDRESS_FAMILY_IPV6) {
+ if (net_get_preferred_ipv6_address(profile_info->ProfileName, ip_address) != NET_ERR_NONE) {
+ WIFI_LOG(WIFI_ERROR, "Failed to get preferred ipv6 address");
+ *ip_address = NULL;
+ return WIFI_MANAGER_ERROR_OPERATION_FAILED;
+ }
+ }
if (*ip_address == NULL) {
WIFI_LOG(WIFI_ERROR, "Out of memory\n"); //LCOV_EXCL_LINE
__NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
return WIFI_MANAGER_ERROR_OUT_OF_MEMORY; //LCOV_EXCL_LINE
- } else if (g_strcmp0(*ip_address, "0.0.0.0") == 0) {
- WIFI_LOG(WIFI_ERROR, "Invalid IP Address [%s]\n", *ip_address); //LCOV_EXCL_LINE
- __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
- return WIFI_MANAGER_ERROR_NO_CONNECTION; //LCOV_EXCL_LINE
}
WIFI_LOG(WIFI_INFO, "Wi-Fi IP Address [%s]\n", *ip_address);