add new API for preferred Ipv6 address 34/159334/4
authorSeonah Moon <seonah1.moon@samsung.com>
Thu, 2 Nov 2017 09:50:46 +0000 (18:50 +0900)
committerSeonah Moon <seonah1.moon@samsung.com>
Mon, 13 Nov 2017 07:48:43 +0000 (16:48 +0900)
Change-Id: Ib2bb81c6711d71053720639648dac3310e29c7f2

src/include/network-dbus-request.h
src/network-cm-intf.c
src/network-dbus-request.c

index 6fa8be5..9102fdd 100755 (executable)
@@ -95,6 +95,7 @@ int _net_dbus_set_bgscan_mode(net_wifi_background_scan_mode_t mode);
 int _net_dbus_get_state(char* state);
 int _net_dbus_get_ethernet_cable_state(int *state);
 int _net_dbus_get_metered_state(int *state);
+int _net_dbus_get_preferred_ipv6_address(const char *profilename, char **address);
 int _net_dbus_set_agent_passphrase_and_connect(
                const char *passphrase, const char *profilename);
 int _net_dbus_get_wps_pin(char **wps_pin);
index 7748026..2f342d8 100755 (executable)
@@ -1235,6 +1235,30 @@ EXPORT_API int net_get_metered_state(int *state)
        return Error;
 }
 
+/**
+ * @fn   EXPORT_API int net_get_preferred_ipv6_address(char **address)
+ *
+ * This function is to get preferred ipv6 address.
+ * This is Sync API.
+ *
+ * @return       0 - on success, negative values for errors
+ * @param[in]    const char *profile - profile name
+ * @param[out]   char **address - preferred ipv6 address of specific profile
+ */
+EXPORT_API int net_get_preferred_ipv6_address(const char *profilename, char **address)
+{
+       __NETWORK_FUNC_ENTER__;
+       net_err_t Error = NET_ERR_NONE;
+
+       Error = _net_dbus_get_preferred_ipv6_address(profilename, address);
+
+       if (Error != NET_ERR_NONE)
+               NETWORK_LOG(NETWORK_ERROR, "_net_dbus_get_preferred_ipv6_address failed\n");
+
+       __NETWORK_FUNC_EXIT__;
+       return Error;
+}
+
 /*****************************************************************************
  * ConnMan Wi-Fi Client Interface Async Function Definition
  *****************************************************************************/
index 827de54..e52b20d 100755 (executable)
@@ -599,6 +599,8 @@ GVariant *_net_invoke_dbus_method(const char *dest, const char *path,
        if (connection == NULL) {
                NETWORK_LOG(NETWORK_ERROR, "GDBusconnection is NULL");
                *dbus_error = NET_ERR_APP_NOT_REGISTERED;
+               if (params)
+                       g_variant_unref(params);
                return reply;
        }
 
@@ -1117,6 +1119,39 @@ int _net_dbus_get_metered_state(int *state)
        return Error;
 }
 
+int _net_dbus_get_preferred_ipv6_address(const char *profilename, char **address)
+{
+       __NETWORK_FUNC_ENTER__;
+
+       net_err_t Error = NET_ERR_NONE;
+       GVariant *message = NULL;
+       GVariant *params = NULL;
+
+       if (address == NULL) {
+               NETWORK_LOG(NETWORK_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) {
+               NETWORK_LOG(NETWORK_ERROR, "Failed to get preferred IPv6 address\n");
+               __NETWORK_FUNC_EXIT__;
+               return Error;
+       }
+
+       g_variant_get(message, "(s)", address);
+
+       NETWORK_LOG(NETWORK_LOW, "Preferred IPv6 Address [%s]\n", *address);
+
+       g_variant_unref(message);
+
+       __NETWORK_FUNC_EXIT__;
+       return Error;
+}
+
 int _net_dbus_set_eap_config_fields_and_connect(
                const net_wifi_connect_service_info_t *wifi_info,
                const char *profilename)