use preferred ipv6 address 75/161175/1
authorSeonah Moon <seonah1.moon@samsung.com>
Wed, 8 Nov 2017 08:13:22 +0000 (17:13 +0900)
committertaesub kim <taesub.kim@samsung.com>
Wed, 22 Nov 2017 04:25:16 +0000 (13:25 +0900)
Change-Id: I3e0f410e0c3394a251dbaac3882a38d72dbe3362

include/network_dbus.h
include/network_interface.h
packaging/capi-network-wifi-manager.spec
src/network_dbus.c
src/network_interface.c
src/wifi_ap.c

index 3b8e8dfcbc64d8afc638a4138252ee8b07ce12be..99629e347bcf9512b613290cec22800348986d39 100755 (executable)
@@ -90,6 +90,7 @@ int _net_dbus_set_agent_wps_pin_and_connect(
 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);
index 015dd744aa956437ec69b7160f248c77903ce930..29930933e72c216f01994c1c875258fb6b0a9393 100755 (executable)
@@ -286,6 +286,7 @@ int net_wifi_set_background_scan_mode(net_wifi_background_scan_mode_e scan_mode)
 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);
index 6b83ede09573393f8c2420f7a3a04318ca45d066..41d7633520dcccf210b1273751868a01ea3216ad 100755 (executable)
@@ -1,6 +1,6 @@
 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
index 81656e0d3242b950542c3c3184d29195b1e28a0e..3434dcb5ea927a07483491503ed3b0d1debba593 100755 (executable)
@@ -1319,6 +1319,39 @@ error:
        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)
 {
index a5fa109b0540fb436321028ea0474161d58a0849..3bc4ad8c1e37b4f7204a3bf17cebf06fceb98e5f 100755 (executable)
@@ -3406,4 +3406,17 @@ int net_foreach_ipv6_address(GSList **ipv6_address_list)
        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
index fd15fcd7d920f79a9c25462e61dcf0b202b90371..44b37ceac4252588eaf76bf311c9e3579c1d5d27 100755 (executable)
@@ -852,23 +852,27 @@ EXPORT_API int wifi_manager_ap_get_ip_address(wifi_manager_ap_h ap,
        }
 
        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);