Add new APIs for IPv6 and DNS configuration
[platform/core/api/connection.git] / include / net_connection.h
index 47a2455..59198ac 100755 (executable)
@@ -167,7 +167,6 @@ typedef enum {
        CONNECTION_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED      /**< Not Supported */
 } connection_error_e;
 
-
 /**
  * @}
 */
@@ -267,6 +266,17 @@ typedef void(*connection_address_changed_cb)(const char* ipv4_address, const cha
 */
 typedef void(*connection_set_default_cb)(connection_error_e result, void* user_data);
 
+/* @brief Called with an IPv6 address.
+ * @since_tizen 4.0
+ * @remarks   If @a ipv6_address is needed outside the callback, a copy should be made. \n
+ *            @a ipv6_address will be freed automatically after the execution of this callback.
+ * @param[in]  ipv6_address  The IPv6 address
+ * @param[in]  user_data     The user data passed from the foreach function
+ * @return  @c true to continue with the next iteration of the loop, \n @c false to break out of the loop
+ * @pre  connection_foreach_ipv6_addresses() will invoke this callback.
+ * @see  connection_foreach_ipv6_addresses()
+ */
+typedef bool(*connection_ipv6_address_cb)(char *ipv6_address, void *user_data);
 
 /**
  * @brief Gets the type of the current profile for data connection.
@@ -620,7 +630,7 @@ int connection_update_profile(connection_h connection, connection_profile_h prof
  * @privilege %http://tizen.org/privilege/network.get
  * @remarks You must release @a profile_iterator using connection_destroy().
  * @param[in] connection The connection handle
- * @param[in] type The type of the connetion iterator
+ * @param[in] type The type of the connection iterator
  * @param[out] profile_iterator The iterator of profile
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -706,7 +716,7 @@ int connection_get_current_profile(connection_h connection, connection_profile_h
  * @retval #CONNECTION_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #CONNECTION_ERROR_OUT_OF_MEMORY Out of memory
  * @retval #CONNECTION_ERROR_OPERATION_FAILED Operation failed
- * @retval #CONNECTION_ERROR_PERMISSION_DENIED Permission Denieda
+ * @retval #CONNECTION_ERROR_PERMISSION_DENIED Permission Denied
  * @retval #CONNECTION_ERROR_NOT_SUPPORTED Not Supported
  */
 int connection_get_default_cellular_service_profile(connection_h connection, connection_cellular_service_type_e type, connection_profile_h* profile);
@@ -950,6 +960,21 @@ int connection_add_route_ipv6(connection_h connection, const char *interface_nam
  */
 int connection_remove_route_ipv6(connection_h connection, const char *interface_name, const char *host_address, const char * gateway);
 
+/*
+ * @brief Gets all IPv6 addresses assigned to the network interface.
+ * @since_tizen 4.0
+ * @param[in] connection       The connection handle
+ * @param[in] connection_type  The connection type
+ * @param[in] callback         The callback to be called for each IPv6 address
+ * @param[in] user_data        The user data passed to the callback function
+ * @return 0 on success, otherwise negative error value.
+ * @retval #CONNECTION_ERROR_NONE               Successful
+ * @retval #CONNECTION_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval #CONNECTION_ERROR_OPERATION_FAILED   Operation failed
+ * @retval #CONNECTION_ERROR_NOT_SUPPORTED      Not supported
+ */
+int connection_foreach_ipv6_address(connection_h connection, connection_type_e connection_type,
+               connection_ipv6_address_cb callback, void *user_data);
 
 /**
  * @}
@@ -1000,7 +1025,6 @@ int connection_get_statistics(connection_h connection, connection_type_e connect
  */
 int connection_reset_statistics(connection_h connection, connection_type_e connection_type, connection_statistics_type_e statistics_type);
 
-
 /**
  * @}
 */