e_connman0_7x: phase-1 - revert to old code
[framework/uifw/edbus.git] / src / lib / connman / e_connman_service.c
index df114ca..9638b4f 100644 (file)
@@ -9,12 +9,12 @@ e_connman_service_get(const char *path)
 
    service = e_connman_element_get(path);
    if (!service)
-     return NULL;
+      return NULL;
 
    if (!e_connman_element_is_service(service))
      {
-       WRN("path '%s' is not a service!", path);
-       return NULL;
+        WRN("path '%s' is not a service!", path);
+        return NULL;
      }
 
    return service;
@@ -36,16 +36,16 @@ e_connman_service_get(const char *path)
  * @param cb function to call when server replies or some error happens.
  * @param data data to give to cb when it is called.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_connect(E_Connman_Element *service, E_DBus_Method_Return_Cb cb, const void *data)
 {
    const char name[] = "Connect";
 
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
    return e_connman_element_call_full
-     (service, name, NULL, &service->_pending.service_connect, cb, data);
+             (service, name, NULL, &service->_pending.service_connect, cb, data);
 }
 
 /**
@@ -66,16 +66,16 @@ e_connman_service_connect(E_Connman_Element *service, E_DBus_Method_Return_Cb cb
  * @param cb function to call when server replies or some error happens.
  * @param data data to give to cb when it is called.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_disconnect(E_Connman_Element *service, E_DBus_Method_Return_Cb cb, const void *data)
 {
    const char name[] = "Disconnect";
 
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
    return e_connman_element_call_full
-     (service, name, NULL, &service->_pending.service_disconnect, cb, data);
+             (service, name, NULL, &service->_pending.service_disconnect, cb, data);
 }
 
 /**
@@ -103,16 +103,16 @@ e_connman_service_disconnect(E_Connman_Element *service, E_DBus_Method_Return_Cb
  * @param cb function to call when server replies or some error happens.
  * @param data data to give to cb when it is called.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_remove(E_Connman_Element *service, E_DBus_Method_Return_Cb cb, const void *data)
 {
    const char name[] = "Remove";
 
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
    return e_connman_element_call_full
-     (service, name, NULL, &service->_pending.service_remove, cb, data);
+             (service, name, NULL, &service->_pending.service_remove, cb, data);
 }
 
 /**
@@ -124,18 +124,18 @@ e_connman_service_remove(E_Connman_Element *service, E_DBus_Method_Return_Cb cb,
  * @param cb function to call when server replies or some error happens.
  * @param data data to give to cb when it is called.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_clear_property(E_Connman_Element *service, const char *property, E_DBus_Method_Return_Cb cb, const void *data)
 {
    const char name[] = "ClearProperty";
 
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(property, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(property, EINA_FALSE);
    return e_connman_element_call_with_string
-     (service, name, property, NULL, &service->_pending.service_clear_property,
-      cb, data);
+             (service, name, property, NULL, &service->_pending.service_clear_property,
+             cb, data);
 }
 
 /**
@@ -154,18 +154,18 @@ e_connman_service_clear_property(E_Connman_Element *service, const char *propert
  * @param cb function to call when server replies or some error happens.
  * @param data data to give to cb when it is called.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_move_before(E_Connman_Element *service, const char *object_path, E_DBus_Method_Return_Cb cb, const void *data)
 {
    const char name[] = "MoveBefore";
 
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(object_path, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(object_path, EINA_FALSE);
    return e_connman_element_call_with_path
-     (service, name, object_path, NULL,
-      &service->_pending.service_move_before, cb, data);
+             (service, name, object_path, NULL,
+             &service->_pending.service_move_before, cb, data);
 }
 
 /**
@@ -183,31 +183,31 @@ e_connman_service_move_before(E_Connman_Element *service, const char *object_pat
  * @param cb function to call when server replies or some error happens.
  * @param data data to give to cb when it is called.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_move_after(E_Connman_Element *service, const char *object_path, E_DBus_Method_Return_Cb cb, const void *data)
 {
    const char name[] = "MoveAfter";
 
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(object_path, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(object_path, EINA_FALSE);
    return e_connman_element_call_with_path
-     (service, name, object_path, NULL,
-      &service->_pending.service_move_after, cb, data);
+             (service, name, object_path, NULL,
+             &service->_pending.service_move_after, cb, data);
 }
 
 /**
  * Get property "State" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * The service state information.
  *
  * Valid states are "idle", "failure", "association",
- * "configuration" and "ready".
+ * "configuration", "ready", "login" and "online".
  *
  * @param service path to get property.
  * @param state where to store the property value, must be a pointer
@@ -215,22 +215,22 @@ e_connman_service_move_after(E_Connman_Element *service, const char *object_path
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_state_get(const E_Connman_Element *service, const char **state)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(state, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(state, EINA_FALSE);
    return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_state, NULL, state);
+             (service, e_connman_prop_state, NULL, state);
 }
 
 /**
  * Get property "Error" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * The service error status details.
@@ -252,22 +252,22 @@ e_connman_service_state_get(const E_Connman_Element *service, const char **state
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_error_get(const E_Connman_Element *service, const char **error)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(error, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(error, EINA_FALSE);
    return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_error, NULL, error);
+             (service, e_connman_prop_error, NULL, error);
 }
 
 /**
  * Get property "Name" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * The service name (for example "Wireless" etc.)
@@ -284,22 +284,22 @@ e_connman_service_error_get(const E_Connman_Element *service, const char **error
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_name_get(const E_Connman_Element *service, const char **name)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(name, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(name, EINA_FALSE);
    return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_name, NULL, name);
+             (service, e_connman_prop_name, NULL, name);
 }
 
 /**
  * Get property "Type" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * The service type (for example "ethernet", "wifi" etc.)
@@ -314,91 +314,58 @@ e_connman_service_name_get(const E_Connman_Element *service, const char **name)
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_type_get(const E_Connman_Element *service, const char **type)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(type, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(type, EINA_FALSE);
    return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_type, NULL, type);
-}
-
-/**
- * Get property "Mode" value.
- *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
- * values shall be considered invalid.
- *
- * If the service type is WiFi or Cellular, then this
- * property is present and contains the mode of the
- * network.
- *
- * For WiFi services the possible values are "managed"
- * and "adhoc". For Cellular services it describes the
- * network technology. Possible values are "gprs", "edge"
- * and "umts".
- *
- * This property might be only present for WiFi and
- * Cellular services.
- *
- * @param service path to get property.
- * @param mode where to store the property value, must be a pointer
- *        to string (const char **), it will not be allocated or
- *        copied and references will be valid until element changes,
- *        so copy it if you want to use it later.
- *
- * @return 1 on success, 0 otherwise.
- */
-bool
-e_connman_service_mode_get(const E_Connman_Element *service, const char **mode)
-{
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(mode, 0);
-   return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_mode, NULL, mode);
+             (service, e_connman_prop_type, NULL, type);
 }
 
 /**
  * Get property "Security" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * If the service type is WiFi, then this property is
- * present and contains the security method or key
+ * present and contains the list of security method or key
  * management setting.
  *
- * Possible values are "none", "wep", "wpa" and "rsn".
+ * Possible values are "none", "wep", "wpa", "rsn", "psk", "ieee8021x" and "wps"
  *
  * This property might be only present for WiFi
  * services.
  *
  * @param service path to get property.
+ * @param count where to return the number of elements in @a security
  * @param security where to store the property value, must be a pointer
- *        to string (const char **), it will not be allocated or
+ *        to array of strings, it will not be allocated or
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
-e_connman_service_security_get(const E_Connman_Element *service, const char **security)
+Eina_Bool
+e_connman_service_security_get(const E_Connman_Element *service, unsigned int *count, const char ***security)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(security, 0);
-   return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_security, NULL, security);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(count, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(security, EINA_FALSE);
+
+   return e_connman_element_strings_array_get_stringshared
+     (service, e_connman_prop_security, count, security);
 }
 
 /**
  * Get property "Passphrase" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * If the service type is WiFi, then this property
@@ -417,23 +384,23 @@ e_connman_service_security_get(const E_Connman_Element *service, const char **se
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  * @see e_connman_service_passphrase_set()
  */
-bool
+Eina_Bool
 e_connman_service_passphrase_get(const E_Connman_Element *service, const char **passphrase)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(passphrase, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(passphrase, EINA_FALSE);
    return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_passphrase, NULL, passphrase);
+             (service, e_connman_prop_passphrase, NULL, passphrase);
 }
 
 /**
  * Set property "Passphrase" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * If the service type is WiFi, then this property
@@ -451,23 +418,23 @@ e_connman_service_passphrase_get(const E_Connman_Element *service, const char **
  * @param cb function to call when server replies or some error happens.
  * @param data data to give to cb when it is called.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  * @see e_connman_service_passphrase_get()
  */
-bool
+Eina_Bool
 e_connman_service_passphrase_set(E_Connman_Element *service, const char *passphrase, E_DBus_Method_Return_Cb cb, const void *data)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
    return e_connman_element_property_set_full
-     (service, e_connman_prop_passphrase, DBUS_TYPE_STRING,
-      passphrase, cb, data);
+             (service, e_connman_prop_passphrase, DBUS_TYPE_STRING,
+             passphrase, cb, data);
 }
 
 /**
  * Get property "PassphraseRequired" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * If the service type is WiFi, then this property
@@ -479,24 +446,55 @@ e_connman_service_passphrase_set(E_Connman_Element *service, const char *passphr
  *
  * @param service path to get property.
  * @param passphrase_required where to store the property value, must be a
- *        pointer to boolean (bool *).
+ *        pointer to Eina_Bool (Eina_Bool *).
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
-e_connman_service_passphrase_required_get(const E_Connman_Element *service, bool *passphrase_required)
+Eina_Bool
+e_connman_service_passphrase_required_get(const E_Connman_Element *service, Eina_Bool *passphrase_required)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(passphrase_required, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(passphrase_required, EINA_FALSE);
    return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_passphrase_required, NULL, passphrase_required);
+             (service, e_connman_prop_passphrase_required, NULL, passphrase_required);
+}
+
+/**
+ * Get property "LoginRequired" value.
+ *
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
+ * values shall be considered invalid.
+ *
+ * Indicates that a manual configuration must be done to login the
+ * user, likely access an website using a browser.
+ *
+ * If a login has been set already or if no
+ * login is needed, then this property will
+ * be set to false.
+ *
+ * @param service path to get property.
+ * @param login_required where to store the property value, must be a
+ *        pointer to Eina_Bool (Eina_Bool *).
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ *
+ * @since 1.1.0
+ */
+Eina_Bool
+e_connman_service_login_required_get(const E_Connman_Element *service, Eina_Bool *login_required)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(login_required, EINA_FALSE);
+   return e_connman_element_property_get_stringshared
+             (service, e_connman_prop_login_required, NULL, login_required);
 }
 
 /**
  * Get property "Strength" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * Indicates the signal strength of the service. This
@@ -509,22 +507,22 @@ e_connman_service_passphrase_required_get(const E_Connman_Element *service, bool
  * @param strength where to store the property value, must be a pointer
  *        to byte (unsigned char*).
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_strength_get(const E_Connman_Element *service, unsigned char *strength)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(strength, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(strength, EINA_FALSE);
    return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_strength, NULL, strength);
+             (service, e_connman_prop_strength, NULL, strength);
 }
 
 /**
  * Get property "Favorite" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * Will be true if a cable is plugged in or the user
@@ -536,17 +534,17 @@ e_connman_service_strength_get(const E_Connman_Element *service, unsigned char *
  *
  * @param service path to get property.
  * @param favorite where to store the property value, must be a
- *        pointer to boolean (bool *).
+ *        pointer to Eina_Bool (Eina_Bool *).
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
-e_connman_service_favorite_get(const E_Connman_Element *service, bool *favorite)
+Eina_Bool
+e_connman_service_favorite_get(const E_Connman_Element *service, Eina_Bool *favorite)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(favorite, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(favorite, EINA_FALSE);
    return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_favorite, NULL, favorite);
+             (service, e_connman_prop_favorite, NULL, favorite);
 }
 
 /**
@@ -561,24 +559,24 @@ e_connman_service_favorite_get(const E_Connman_Element *service, bool *favorite)
 
  * @param service path to get property.
  * @param immutable where to store the property value, must be a
- *        pointer to bollean (bool *).
+ *        pointer to Eina_Bool (Eina_Bool *).
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
-e_connman_service_immutable_get(const E_Connman_Element *service, bool *immutable)
+Eina_Bool
+e_connman_service_immutable_get(const E_Connman_Element *service, Eina_Bool *immutable)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(immutable, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(immutable, EINA_FALSE);
    return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_immutable, NULL, immutable);
+             (service, e_connman_prop_immutable, NULL, immutable);
 }
 
 /**
  * Get property "AutoConnect" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * If set to true, this service will auto-connect
@@ -590,25 +588,25 @@ e_connman_service_immutable_get(const E_Connman_Element *service, bool *immutabl
  *
  * @param service path to get property.
  * @param auto_connect where to store the property value, must be a
- *        pointer to boolean (bool *).
+ *        pointer to Eina_Bool (Eina_Bool *).
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  * @see e_connman_service_auto_connect_set()
  */
-bool
-e_connman_service_auto_connect_get(const E_Connman_Element *service, bool *auto_connect)
+Eina_Bool
+e_connman_service_auto_connect_get(const E_Connman_Element *service, Eina_Bool *auto_connect)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(auto_connect, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(auto_connect, EINA_FALSE);
    return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_auto_connect, NULL, auto_connect);
+             (service, e_connman_prop_auto_connect, NULL, auto_connect);
 }
 
 /**
  * Set property "AutoConnect" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * If set to true, this service will auto-connect
@@ -620,203 +618,273 @@ e_connman_service_auto_connect_get(const E_Connman_Element *service, bool *auto_
  *
  * @param service path to get property.
  * @param service_favorite where to store the property value, must be a
- *        pointer to boolean (bool *).
+ *        pointer to Eina_Bool (Eina_Bool *).
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  * @see e_connman_service_auto_connect_get()
  */
-bool
-e_connman_service_auto_connect_set(E_Connman_Element *service, bool auto_connect, E_DBus_Method_Return_Cb cb, const void *data)
+Eina_Bool
+e_connman_service_auto_connect_set(E_Connman_Element *service, Eina_Bool auto_connect, E_DBus_Method_Return_Cb cb, const void *data)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
    return e_connman_element_property_set_full
-     (service, e_connman_prop_auto_connect, DBUS_TYPE_BOOLEAN, &auto_connect, cb, data);
+             (service, e_connman_prop_auto_connect, DBUS_TYPE_BOOLEAN, &auto_connect, cb, data);
 }
 
 /**
- * Get property "SetupRequired" value.
+ * Get property "Roaming" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
- * If the service is Cellular, then this property
- * indicates that some extra setup steps are required.
+ * This property indicates if this service is roaming.
  *
- * In most cases it is required to fill in the APN
- * details.
+ * In the case of Cellular services this normally
+ * indicates connections to a foreign provider when
+ * traveling abroad.
  *
  * @param service path to get property.
- * @param setup_required where to store the property value, must be a
- *        pointer to boolean (bool *).
+ * @param roaming where to store the property value, must be a
+ *        pointer to Eina_Bool (Eina_Bool *).
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
-e_connman_service_setup_required_get(const E_Connman_Element *service, bool *setup_required)
+Eina_Bool
+e_connman_service_roaming_get(const E_Connman_Element *service, Eina_Bool *roaming)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(setup_required, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(roaming, EINA_FALSE);
    return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_setup_required, NULL, setup_required);
+             (service, e_connman_prop_roaming, NULL, roaming);
 }
 
 /**
- * Get property "APN" value.
+ * Get property "Nameservers" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
+ * The list of currently active nameservers for this service. If the server is
+ * not in READY or ONLINE state than this list will be empty.
  *
- * If the service is Cellular, then this property
- * contains the APN details.
+ * Global nameservers are automatically added to this list.
  *
- * The APN is network provider specific and even
- * sometimes data plan specific. Possible examples
- * are "isp.cingular" or "internet.t-mobile".
+ * The array represents a sorted list of the current nameservers. The first one
+ * has the highest priority and is used by default.
  *
- * This property might also not always be included
- * since it is protected by a different security policy.
+ * When using DHCP this array represents the nameservers provided by the
+ * network. In case of manual settings, the ones from Nameservers.Configuration
+ * are used.
  *
  * @param service path to get property.
- * @param apn where to store the property value, must be a pointer
- *        to string (const char **), it will not be allocated or
- *        copied and references will be valid until element changes,
- *        so copy it if you want to use it later.
+ * @param count return the number of elements in array.
+ * @param nameservers array with pointers to internal strings. These
+ *        strings are not copied in any way, and they are granted to
+ *        be eina_stringshare instances, so one can use
+ *        eina_stringshare_ref() if he wants to save memory and cpu to
+ *        get an extra reference. The array itself is also NOT
+ *        allocated or copied, do not modify it. This pointer is just
+ *        set if return is @c EINA_TRUE.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ */
+Eina_Bool
+e_connman_service_nameservers_get(const E_Connman_Element *service, unsigned int *count, const char ***nameservers)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(nameservers, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(count, EINA_FALSE);
+   return e_connman_element_strings_array_get_stringshared
+             (service, e_connman_prop_nameservers, count, nameservers);
+}
+
+/**
+ * Get property "Nameservers.Configuration" value.
+ *
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
+ * values shall be considered invalid.
+ * The list of currently active nameservers for this service. If the server is
+ * not in READY or ONLINE state than this list will be empty.
+ *
+ * Unlike Nameservers, this is the user-set value, rather than the
+ * actual value.
  *
- * @return 1 on success, 0 otherwise.
- * @see e_connman_service_apn_set()
+ * @param service path to get property.
+ * @param count return the number of elements in array.
+ * @param nameservers array with pointers to internal strings. These
+ *        strings are not copied in any way, and they are granted to
+ *        be eina_stringshare instances, so one can use
+ *        eina_stringshare_ref() if he wants to save memory and cpu to
+ *        get an extra reference. The array itself is also NOT
+ *        allocated or copied, do not modify it. This pointer is just
+ *        set if return is @c EINA_TRUE.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
-e_connman_service_apn_get(const E_Connman_Element *service, const char **apn)
+Eina_Bool
+e_connman_service_nameservers_configuration_get(const E_Connman_Element *service, unsigned int *count, const char ***nameservers)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(apn, 0);
-   return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_apn, NULL, apn);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(nameservers, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(count, EINA_FALSE);
+   return e_connman_element_strings_array_get_stringshared
+             (service, e_connman_prop_nameservers_configuration,
+              count, nameservers);
 }
 
 /**
- * Set property "APN" value.
+ * Set property "Nameservers.Configuration" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
- * If the service is Cellular, then this property
- * contains the APN details.
+ * Unlike Nameservers, this is the user-set value, rather than the actual value.
+ * It allows user to override the default setting.  When using manual
+ * configuration and no global nameservers are configured, then it is useful to
+ * configure this setting as well.
  *
- * The APN is network provider specific and even
- * sometimes data plan specific. Possible examples
- * are "isp.cingular" or "internet.t-mobile".
+ * This list is sorted by priority and the first entry represents the nameserver
+ * with the highest priority.
  *
- * This property might also not always be included
- * since it is protected by a different security policy.
+ * Changes to the domain name servers can be done at any time. It will not cause
+ * a disconnect of the service. However there might be small window where name
+ * resolution might fail.
  *
- * @param service path to get property.
- * @param passphrase value to set.
+ * @param service path to set property.
+ * @param nameservers sorted list of the current nameservers. The first one has
+ * the highest priority and is used by default.
  * @param cb function to call when server replies or some error happens.
  * @param data data to give to cb when it is called.
  *
- * @return 1 on success, 0 otherwise.
- * @see e_connman_service_apn_get()
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ * @see e_connman_service_nameservers_configuration_get()
  */
-bool
-e_connman_service_apn_set(E_Connman_Element *service, const char *apn, E_DBus_Method_Return_Cb cb, const void *data)
+Eina_Bool
+e_connman_service_nameservers_configuration_set(E_Connman_Element *service, unsigned int count, const char **nameservers, E_DBus_Method_Return_Cb cb, const void *data)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   return e_connman_element_property_set_full
-     (service, e_connman_prop_apn, DBUS_TYPE_STRING,
-      apn, cb, data);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(nameservers, EINA_FALSE);
+   return e_connman_element_property_array_set_full
+             (service, e_connman_prop_nameservers_configuration,
+              DBUS_TYPE_STRING, count,
+              (const void * const *)nameservers, cb, data);
 }
 
 /**
- * Get property "MCC" value.
+ * Get property "Domains" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
+ * The list of currently active domains for this service. If the server is
+ * not in READY or ONLINE state than this list will be empty.
  *
- * If the service is Cellular, then this property
- * contains the Mobile Country Code.
+ * The list of currently used search domains.
  *
  * @param service path to get property.
- * @param mcc where to store the property value, must be a pointer
- *        to string (const char **), it will not be allocated or
- *        copied and references will be valid until element changes,
- *        so copy it if you want to use it later.
- *
- * @return 1 on success, 0 otherwise.
+ * @param count return the number of elements in array.
+ * @param domains array with pointers to internal strings. These
+ *        strings are not copied in any way, and they are granted to
+ *        be eina_stringshare instances, so one can use
+ *        eina_stringshare_ref() if he wants to save memory and cpu to
+ *        get an extra reference. The array itself is also NOT
+ *        allocated or copied, do not modify it. This pointer is just
+ *        set if return is @c EINA_TRUE.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
-e_connman_service_mcc_get(const E_Connman_Element *service, const char **mcc)
+Eina_Bool
+e_connman_service_domains_get(const E_Connman_Element *service, unsigned int *count, const char ***domains)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(mcc, 0);
-   return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_mcc, NULL, mcc);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(domains, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(count, EINA_FALSE);
+   return e_connman_element_strings_array_get_stringshared
+             (service, e_connman_prop_domains, count, domains);
 }
 
 /**
- * Get property "MNC" value.
+ * Get property "Domains.Configuration" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
+ * The list of currently active domains for this service. If the server is
+ * not in READY or ONLINE state than this list will be empty.
  *
- * If the service is Cellular, then this property
- * contains the Mobile Network Code.
+ * Unlike Domains, this is the user-set value, rather than the
+ * actual value.
  *
  * @param service path to get property.
- * @param mnc where to store the property value, must be a pointer
- *        to string (const char **), it will not be allocated or
- *        copied and references will be valid until element changes,
- *        so copy it if you want to use it later.
- *
- * @return 1 on success, 0 otherwise.
+ * @param count return the number of elements in array.
+ * @param domains array with pointers to internal strings. These
+ *        strings are not copied in any way, and they are granted to
+ *        be eina_stringshare instances, so one can use
+ *        eina_stringshare_ref() if he wants to save memory and cpu to
+ *        get an extra reference. The array itself is also NOT
+ *        allocated or copied, do not modify it. This pointer is just
+ *        set if return is @c EINA_TRUE.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
-e_connman_service_mnc_get(const E_Connman_Element *service, const char **mnc)
+Eina_Bool
+e_connman_service_domains_configuration_get(const E_Connman_Element *service, unsigned int *count, const char ***domains)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(mnc, 0);
-   return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_mnc, NULL, mnc);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(domains, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(count, EINA_FALSE);
+   return e_connman_element_strings_array_get_stringshared
+             (service, e_connman_prop_domains_configuration, count, domains);
 }
 
 /**
- * Get property "Roaming" value.
+ * Set property "Domains.Configuration" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
- * This property indicates if this service is roaming.
+ * Unlike Domains, this is the user-set value, rather than the actual value.
+ * It allows user to override the default setting.  When using manual
+ * configuration and no global domains are configured, then it is useful to
+ * configure this setting as well.
  *
- * In the case of Cellular services this normally
- * indicates connections to a foreign provider when
- * traveling abroad.
+ * This list is sorted by priority and the first entry represents the nameserver
+ * with the highest priority.
  *
- * @param service path to get property.
- * @param roaming where to store the property value, must be a
- *        pointer to boolean (bool *).
+ * Changes to the domain name servers can be done at any time. It will not cause
+ * a disconnect of the service. However there might be small window where name
+ * resolution might fail.
+ *
+ * @param service path to set property.
+ * @param count number of elements in @a domain.
+ * @param domains sorted list of the current domains. The first one has
+ * the highest priority and is used by default.
+ * @param cb function to call when server replies or some error happens.
+ * @param data data to give to cb when it is called.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ * @see e_connman_service_domains_configuration_get()
  */
-bool
-e_connman_service_roaming_get(const E_Connman_Element *service, bool *roaming)
+Eina_Bool
+e_connman_service_domains_configuration_set(E_Connman_Element *service, unsigned int count, const char **domains, E_DBus_Method_Return_Cb cb, const void *data)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(roaming, 0);
-   return e_connman_element_property_get_stringshared
-     (service, e_connman_prop_roaming, NULL, roaming);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(domains, EINA_FALSE);
+   return e_connman_element_property_array_set_full
+             (service, e_connman_prop_domains_configuration,
+              DBUS_TYPE_STRING, count,
+              (const void * const *)domains, cb, data);
 }
 
 /**
  * Get property "IPv4.Method" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * The IPv4 method in use. Possible values here are "dhcp" and
@@ -828,22 +896,22 @@ e_connman_service_roaming_get(const E_Connman_Element *service, bool *roaming)
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_ipv4_method_get(const E_Connman_Element *service, const char **method)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(method, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(method, EINA_FALSE);
    return e_connman_element_property_dict_get_stringshared
-     (service, e_connman_prop_ipv4, e_connman_prop_method, NULL, method);
+             (service, e_connman_prop_ipv4, e_connman_prop_method, NULL, method);
 }
 
 /**
  * Get property "IPv4.Address" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * The current IPv4 address.
@@ -854,22 +922,22 @@ e_connman_service_ipv4_method_get(const E_Connman_Element *service, const char *
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_ipv4_address_get(const E_Connman_Element *service, const char **address)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(address, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(address, EINA_FALSE);
    return e_connman_element_property_dict_get_stringshared
-     (service, e_connman_prop_ipv4, e_connman_prop_address, NULL, address);
+             (service, e_connman_prop_ipv4, e_connman_prop_address, NULL, address);
 }
 
 /**
  * Get property "IPv4.Gateway" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * The current IPv4 gateway.
@@ -880,22 +948,22 @@ e_connman_service_ipv4_address_get(const E_Connman_Element *service, const char
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_ipv4_gateway_get(const E_Connman_Element *service, const char **gateway)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(gateway, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(gateway, EINA_FALSE);
    return e_connman_element_property_dict_get_stringshared
-     (service, e_connman_prop_ipv4, e_connman_prop_gateway, NULL, gateway);
+             (service, e_connman_prop_ipv4, e_connman_prop_gateway, NULL, gateway);
 }
 
 /**
  * Get property "IPv4.Netmask" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * The current IPv4 netmask.
@@ -906,15 +974,15 @@ e_connman_service_ipv4_gateway_get(const E_Connman_Element *service, const char
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_ipv4_netmask_get(const E_Connman_Element *service, const char **netmask)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(netmask, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(netmask, EINA_FALSE);
    return e_connman_element_property_dict_get_stringshared
-     (service, e_connman_prop_ipv4, e_connman_prop_netmask, NULL, netmask);
+             (service, e_connman_prop_ipv4, e_connman_prop_netmask, NULL, netmask);
 }
 
 /**
@@ -923,8 +991,8 @@ e_connman_service_ipv4_netmask_get(const E_Connman_Element *service, const char
  * Unlike IPv4.Method, this is the user-set value, rather than the
  * actual value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * The IPv4 configured method. Possible values here are "dhcp" and
@@ -936,16 +1004,16 @@ e_connman_service_ipv4_netmask_get(const E_Connman_Element *service, const char
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_ipv4_configuration_method_get(const E_Connman_Element *service, const char **method)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(method, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(method, EINA_FALSE);
    return e_connman_element_property_dict_get_stringshared
-     (service, e_connman_prop_ipv4_configuration, e_connman_prop_method,
-      NULL, method);
+             (service, e_connman_prop_ipv4_configuration, e_connman_prop_method,
+             NULL, method);
 }
 
 /**
@@ -954,8 +1022,8 @@ e_connman_service_ipv4_configuration_method_get(const E_Connman_Element *service
  * Unlike IPv4.Address, this is the user-set value, rather than the
  * actual value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * The current configured IPv4 address.
@@ -966,16 +1034,16 @@ e_connman_service_ipv4_configuration_method_get(const E_Connman_Element *service
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_ipv4_configuration_address_get(const E_Connman_Element *service, const char **address)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(address, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(address, EINA_FALSE);
    return e_connman_element_property_dict_get_stringshared
-     (service, e_connman_prop_ipv4_configuration, e_connman_prop_address,
-      NULL, address);
+             (service, e_connman_prop_ipv4_configuration, e_connman_prop_address,
+             NULL, address);
 }
 
 /**
@@ -984,8 +1052,8 @@ e_connman_service_ipv4_configuration_address_get(const E_Connman_Element *servic
  * Unlike IPv4.Gateway, this is the user-set value, rather than the
  * actual value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * The current configured IPv4 gateway.
@@ -996,16 +1064,16 @@ e_connman_service_ipv4_configuration_address_get(const E_Connman_Element *servic
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_ipv4_configuration_gateway_get(const E_Connman_Element *service, const char **gateway)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(gateway, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(gateway, EINA_FALSE);
    return e_connman_element_property_dict_get_stringshared
-     (service, e_connman_prop_ipv4_configuration, e_connman_prop_gateway,
-      NULL, gateway);
+             (service, e_connman_prop_ipv4_configuration, e_connman_prop_gateway,
+             NULL, gateway);
 }
 
 /**
@@ -1014,8 +1082,8 @@ e_connman_service_ipv4_configuration_gateway_get(const E_Connman_Element *servic
  * Unlike IPv4.Netmask, this is the user-set value, rather than the
  * actual value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * The current configured IPv4 netmask.
@@ -1026,16 +1094,16 @@ e_connman_service_ipv4_configuration_gateway_get(const E_Connman_Element *servic
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_ipv4_configuration_netmask_get(const E_Connman_Element *service, const char **netmask)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(netmask, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(netmask, EINA_FALSE);
    return e_connman_element_property_dict_get_stringshared
-     (service, e_connman_prop_ipv4_configuration, e_connman_prop_netmask,
-      NULL, netmask);
+             (service, e_connman_prop_ipv4_configuration, e_connman_prop_netmask,
+             NULL, netmask);
 }
 
 /**
@@ -1045,16 +1113,16 @@ e_connman_service_ipv4_configuration_netmask_get(const E_Connman_Element *servic
  * @param cb function to call when server replies or some error happens.
  * @param data data to give to cb when it is called.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_ipv4_configure_dhcp(E_Connman_Element *service, E_DBus_Method_Return_Cb cb, const void *data)
 {
    const char method[] = "dhcp";
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
    return e_connman_element_property_dict_set_full
-     (service, e_connman_prop_ipv4_configuration, e_connman_prop_method,
-      DBUS_TYPE_STRING, method, cb, data);
+             (service, e_connman_prop_ipv4_configuration, e_connman_prop_method,
+             DBUS_TYPE_STRING, method, cb, data);
 }
 
 /**
@@ -1062,35 +1130,36 @@ e_connman_service_ipv4_configure_dhcp(E_Connman_Element *service, E_DBus_Method_
  *
  * @param service path to set.
  * @param address IPv4 address.
- * @param netmask IPv4 netmask, or @c NULL for "/32"
+ * @param netmask IPv4 netmask, or @c NULL for "/32".
+ * @param gateway IPv4 gateway address.
  * @param cb function to call when server replies or some error happens.
  * @param data data to give to cb when it is called.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
-e_connman_service_ipv4_configure_manual(E_Connman_Element *service, const char *address, const char *netmask, E_DBus_Method_Return_Cb cb, const void *data)
+Eina_Bool
+e_connman_service_ipv4_configure_manual(E_Connman_Element *service, const char *address, const char *netmask, const char *gateway, E_DBus_Method_Return_Cb cb, const void *data)
 {
    const char name[] = "SetProperty";
    const char *method = "manual"; /* not method[] as gcc screws it with dbus */
    DBusMessage *msg;
    DBusMessageIter itr, variant, dict, entry;
 
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(address, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(address, EINA_FALSE);
 
    msg = dbus_message_new_method_call
-     (e_connman_system_bus_name_get(), service->path, service->interface, name);
+         (e_connman_system_bus_name_get(), service->path, service->interface, name);
 
    if (!msg)
-     return 0;
+      return 0;
 
    dbus_message_iter_init_append(msg, &itr);
    dbus_message_iter_append_basic
-     (&itr, DBUS_TYPE_STRING, &e_connman_prop_ipv4_configuration);
+      (&itr, DBUS_TYPE_STRING, &e_connman_prop_ipv4_configuration);
 
    dbus_message_iter_open_container
-     (&itr, DBUS_TYPE_VARIANT,
+      (&itr, DBUS_TYPE_VARIANT,
       (DBUS_TYPE_ARRAY_AS_STRING
        DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
        DBUS_TYPE_STRING_AS_STRING
@@ -1098,7 +1167,7 @@ e_connman_service_ipv4_configure_manual(E_Connman_Element *service, const char *
        DBUS_DICT_ENTRY_END_CHAR_AS_STRING),
       &variant);
    dbus_message_iter_open_container
-     (&variant, DBUS_TYPE_ARRAY,
+      (&variant, DBUS_TYPE_ARRAY,
       (DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
        DBUS_TYPE_STRING_AS_STRING
        DBUS_TYPE_STRING_AS_STRING
@@ -1107,41 +1176,331 @@ e_connman_service_ipv4_configure_manual(E_Connman_Element *service, const char *
 
    dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry);
    dbus_message_iter_append_basic
-     (&entry, DBUS_TYPE_STRING, &e_connman_prop_method);
+      (&entry, DBUS_TYPE_STRING, &e_connman_prop_method);
    dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &method);
    dbus_message_iter_close_container(&dict, &entry);
 
    dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry);
    dbus_message_iter_append_basic
-     (&entry, DBUS_TYPE_STRING, &e_connman_prop_address);
+      (&entry, DBUS_TYPE_STRING, &e_connman_prop_address);
    dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &address);
    dbus_message_iter_close_container(&dict, &entry);
 
    if (netmask)
      {
-       dbus_message_iter_open_container
-         (&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry);
-       dbus_message_iter_append_basic
-         (&entry, DBUS_TYPE_STRING, &e_connman_prop_netmask);
-       dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &netmask);
-       dbus_message_iter_close_container(&dict, &entry);
+        dbus_message_iter_open_container
+           (&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry);
+        dbus_message_iter_append_basic
+           (&entry, DBUS_TYPE_STRING, &e_connman_prop_netmask);
+        dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &netmask);
+        dbus_message_iter_close_container(&dict, &entry);
+     }
+
+   if (gateway)
+     {
+        dbus_message_iter_open_container
+           (&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry);
+        dbus_message_iter_append_basic
+           (&entry, DBUS_TYPE_STRING, &e_connman_prop_gateway);
+        dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &gateway);
+        dbus_message_iter_close_container(&dict, &entry);
      }
 
    dbus_message_iter_close_container(&variant, &dict);
    dbus_message_iter_close_container(&itr, &variant);
 
    return e_connman_element_message_send
-     (service, name, NULL, msg, &service->_pending.property_set, cb, data);
+             (service, name, NULL, msg, &service->_pending.property_set, cb, data);
+}
+
+/**
+ * Get property "Proxy.Method" value.
+ *
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
+ * values shall be considered invalid.
+ *
+ * Possible values are "direct", "auto" and "manual".
+ *
+ * @param service path to get property.
+ * @param method where to store the property value, must be a pointer
+ *        to string (const char **), it will not be allocated or
+ *        copied and references will be valid until element changes,
+ *        so copy it if you want to use it later.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ */
+Eina_Bool
+e_connman_service_proxy_method_get(const E_Connman_Element *service, const char **method)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(method, EINA_FALSE);
+   return e_connman_element_property_dict_get_stringshared
+             (service, e_connman_prop_proxy, e_connman_prop_method, NULL, method);
+}
+
+/**
+ * Get property "Proxy.URL" value.
+ *
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
+ * values shall be considered invalid.
+ *
+ * Automatic proxy configuration URL. Used by "auto" method.
+ *
+ * @param service path to get property.
+ * @param url where to store the property value, must be a pointer
+ *        to string (const char **), it will not be allocated or
+ *        copied and references will be valid until element changes,
+ *        so copy it if you want to use it later.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ */
+Eina_Bool
+e_connman_service_proxy_url_get(const E_Connman_Element *service, const char **url)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(url, EINA_FALSE);
+   return e_connman_element_property_dict_get_stringshared
+             (service, e_connman_prop_proxy, e_connman_prop_url, NULL, url);
+}
+
+/**
+ * Get property "Proxy.Servers" value.
+ *
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
+ * values shall be considered invalid.
+ *
+ * List of proxy URIs. The URI without a protocol will be interpreted as the
+ * generic proxy URI. All others will target a specific protocol and only once.
+ * Example of generic proxy server entry would be like this:
+ * "server.example.com:911".
+ *
+ * Used when "manual" method is set.
+ *
+ * @param service path to get property.
+ * @param count return the number of elements in array.
+ * @param servers array with pointers to internal strings. These
+ *        strings are not copied in any way, and they are granted to
+ *        be eina_stringshare instances, so one can use
+ *        eina_stringshare_ref() if he wants to save memory and cpu to
+ *        get an extra reference. The array itself is also NOT
+ *        allocated or copied, do not modify it. This pointer is just
+ *        set if return is @c EINA_TRUE.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ */
+Eina_Bool
+e_connman_service_proxy_servers_get(const E_Connman_Element *service, unsigned int *count, const char ***servers)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(servers, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(count, EINA_FALSE);
+   return e_connman_element_property_dict_strings_array_get_stringshared
+             (service, e_connman_prop_proxy, e_connman_prop_servers, count, servers);
+}
+
+/**
+ * Get property "Proxy.Excludes" value.
+ *
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
+ * values shall be considered invalid.
+ *
+ * List of hosts which can be accessed directly.
+ *
+ * Used when "manual" method is set.
+ *
+ * @param service path to get property.
+ * @param count return the number of elements in array.
+ * @param excludes array with pointers to internal strings. These
+ *        strings are not copied in any way, and they are granted to
+ *        be eina_stringshare instances, so one can use
+ *        eina_stringshare_ref() if he wants to save memory and cpu to
+ *        get an extra reference. The array itself is also NOT
+ *        allocated or copied, do not modify it. This pointer is just
+ *        set if return is @c EINA_TRUE.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ */
+Eina_Bool
+e_connman_service_proxy_excludes_get(const E_Connman_Element *service, unsigned int *count, const char ***excludes)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(excludes, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(count, EINA_FALSE);
+   return e_connman_element_property_dict_strings_array_get_stringshared
+             (service, e_connman_prop_proxy, e_connman_prop_excludes, count, excludes);
+}
+
+/**
+ * Get property "Proxy.Configuration.Method" value.
+ *
+ * Unlike Proxy.Configuration.Method, this is the user-set value, rather than
+ * the actual value.
+ *
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
+ * values shall be considered invalid.
+ *
+ * Possible values are "direct", "auto" and "manual".
+ *
+ * @param service path to get property.
+ * @param method where to store the property value, must be a pointer
+ *        to string (const char **), it will not be allocated or
+ *        copied and references will be valid until element changes,
+ *        so copy it if you want to use it later.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ */
+Eina_Bool
+e_connman_service_proxy_configuration_method_get(const E_Connman_Element *service, const char **method)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(method, EINA_FALSE);
+   return e_connman_element_property_dict_get_stringshared
+             (service, e_connman_prop_proxy_configuration, e_connman_prop_method, NULL, method);
+}
+
+/**
+ * Get property "Proxy.Configuration.URL" value.
+ *
+ * Unlike Proxy.URL, this is the user-set value, rather than the
+ * actual value.
+ *
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
+ * values shall be considered invalid.
+ *
+ * Automatic proxy configuration URL. Used by "auto" method.
+ *
+ * @param service path to get property.
+ * @param url where to store the property value, must be a pointer
+ *        to string (const char **), it will not be allocated or
+ *        copied and references will be valid until element changes,
+ *        so copy it if you want to use it later.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ */
+Eina_Bool
+e_connman_service_proxy_configuration_url_get(const E_Connman_Element *service, const char **url)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(url, EINA_FALSE);
+   return e_connman_element_property_dict_get_stringshared
+             (service, e_connman_prop_proxy_configuration, e_connman_prop_url, NULL, url);
+}
+
+/**
+ * Get property "Proxy.Configuration.Servers" value.
+ *
+ * Unlike Proxy.Servers, this is the user-set value, rather than the
+ * actual value.
+ *
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
+ * values shall be considered invalid.
+ *
+ * List of proxy URIs. The URI without a protocol will be interpreted as the
+ * generic proxy URI. All others will target a specific protocol and only once.
+ * Example of generic proxy server entry would be like this:
+ * "server.example.com:911".
+ *
+ * Used when "manual" method is set.
+ *
+ * @param service path to get property.
+ * @param count return the number of elements in array.
+ * @param servers array with pointers to internal strings. These
+ *        strings are not copied in any way, and they are granted to
+ *        be eina_stringshare instances, so one can use
+ *        eina_stringshare_ref() if he wants to save memory and cpu to
+ *        get an extra reference. The array itself is also NOT
+ *        allocated or copied, do not modify it. This pointer is just
+ *        set if return is @c EINA_TRUE.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ */
+Eina_Bool
+e_connman_service_proxy_configuration_servers_get(const E_Connman_Element *service, unsigned int *count, const char ***servers)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(servers, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(count, EINA_FALSE);
+   return e_connman_element_property_dict_strings_array_get_stringshared
+             (service, e_connman_prop_proxy_configuration, e_connman_prop_servers, count, servers);
+}
+
+/**
+ * Get property "Proxy.Configuration.Excludes" value.
+ *
+ * Unlike Proxy.Excludes, this is the user-set value, rather than the
+ * actual value.
+
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
+ * values shall be considered invalid.
+ *
+ * List of hosts which can be accessed directly.
+ *
+ * Used when "manual" method is set.
+ *
+ * @param service path to get property.
+ * @param count return the number of elements in array.
+ * @param excludes array with pointers to internal strings. These
+ *        strings are not copied in any way, and they are granted to
+ *        be eina_stringshare instances, so one can use
+ *        eina_stringshare_ref() if he wants to save memory and cpu to
+ *        get an extra reference. The array itself is also NOT
+ *        allocated or copied, do not modify it. This pointer is just
+ *        set if return is @c EINA_TRUE.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ */
+Eina_Bool
+e_connman_service_proxy_configuration_excludes_get(const E_Connman_Element *service, unsigned int *count, const char ***excludes)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(excludes, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(count, EINA_FALSE);
+   return e_connman_element_property_dict_strings_array_get_stringshared
+             (service, e_connman_prop_proxy_configuration, e_connman_prop_excludes, count, excludes);
+}
+
+/**
+ * Get property "Ethernet.Interface" value.
+ *
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
+ * values shall be considered invalid.
+ *
+ * Interface name (for example eth0).
+ *
+ * @param service path to get property.
+ * @param iface where to store the property value, must be a pointer
+ *        to string (const char **), it will not be allocated or
+ *        copied and references will be valid until element changes,
+ *        so copy it if you want to use it later.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ */
+Eina_Bool
+e_connman_service_ethernet_interface_get(const E_Connman_Element *service, const char **iface)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(iface, EINA_FALSE);
+   return e_connman_element_property_dict_get_stringshared
+             (service, e_connman_prop_ethernet, e_connman_prop_interface, NULL, iface);
 }
 
 /**
  * Get property "Ethernet.Method" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
- * The Ethernet configuration method. Possible values here "auto".
+ * The Ethernet configuration method. Possible values here "auto" and "manual".
  *
  * @param service path to get property.
  * @param method where to store the property value, must be a pointer
@@ -1149,22 +1508,45 @@ e_connman_service_ipv4_configure_manual(E_Connman_Element *service, const char *
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_ethernet_method_get(const E_Connman_Element *service, const char **method)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(method, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(method, EINA_FALSE);
    return e_connman_element_property_dict_get_stringshared
-     (service, e_connman_prop_ethernet, e_connman_prop_method, NULL, method);
+             (service, e_connman_prop_ethernet, e_connman_prop_method, NULL, method);
+}
+
+/**
+ * Get property "Ethernet.Speed" value.
+ *
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
+ * values shall be considered invalid.
+ *
+ * Selected speed of the line. This information might not always be available.
+ *
+ * @param service path to get property.
+ * @param speed where to store the property value.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ */
+Eina_Bool
+e_connman_service_ethernet_speed_get(const E_Connman_Element *service, unsigned short *speed)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(speed, EINA_FALSE);
+   return e_connman_element_property_dict_get_stringshared
+             (service, e_connman_prop_ethernet, e_connman_prop_speed, NULL, speed);
 }
 
 /**
  * Get property "Ethernet.Address" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
  * The current configured Ethernet address (mac-address).
@@ -1175,65 +1557,66 @@ e_connman_service_ethernet_method_get(const E_Connman_Element *service, const ch
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
+Eina_Bool
 e_connman_service_ethernet_address_get(const E_Connman_Element *service, const char **address)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(address, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(address, EINA_FALSE);
    return e_connman_element_property_dict_get_stringshared
-     (service, e_connman_prop_ethernet, e_connman_prop_address, NULL, address);
+             (service, e_connman_prop_ethernet, e_connman_prop_address, NULL, address);
 }
 
 /**
- * Get property "Ethernet.Gateway" value.
+ * Get property "Ethernet.Duplex" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
- * The current configured Ethernet MTU.
+ * Selected duplex settings of the line. Possible values are "half" and "full".
+ * This information might not always be available.
  *
  * @param service path to get property.
- * @param gateway where to store the property value, must be a pointer
+ * @param duplex where to store the property value, must be a pointer
  *        to string (const char **), it will not be allocated or
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
-e_connman_service_ethernet_mtu_get(const E_Connman_Element *service, unsigned short *mtu)
+Eina_Bool
+e_connman_service_ethernet_duplex_get(const E_Connman_Element *service, const char **duplex)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(mtu, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(duplex, EINA_FALSE);
    return e_connman_element_property_dict_get_stringshared
-     (service, e_connman_prop_ethernet, e_connman_prop_mtu, NULL, mtu);
+             (service, e_connman_prop_ethernet, e_connman_prop_duplex, NULL, duplex);
 }
 
 /**
- * Get property "Ethernet.Netmask" value.
+ * Get property "Ethernet.MTU" value.
  *
- * If this property isn't found then 0 is returned.
- * If zero is returned, then this call failed and parameter-returned
+ * If this property isn't found then @c EINA_FALSE is returned.
+ * If @c EINA_FALSE is returned, then this call failed and parameter-returned
  * values shall be considered invalid.
  *
- * The current configured Ethernet netmask.
+ * The current configured Ethernet MTU.
  *
  * @param service path to get property.
- * @param netmask where to store the property value, must be a pointer
+ * @param gateway where to store the property value, must be a pointer
  *        to string (const char **), it will not be allocated or
  *        copied and references will be valid until element changes,
  *        so copy it if you want to use it later.
  *
- * @return 1 on success, 0 otherwise.
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
  */
-bool
-e_connman_service_ethernet_netmask_get(const E_Connman_Element *service, const char **netmask)
+Eina_Bool
+e_connman_service_ethernet_mtu_get(const E_Connman_Element *service, unsigned short *mtu)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(service, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(netmask, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(service, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(mtu, EINA_FALSE);
    return e_connman_element_property_dict_get_stringshared
-     (service, e_connman_prop_ethernet, e_connman_prop_netmask, NULL, netmask);
+             (service, e_connman_prop_ethernet, e_connman_prop_mtu, NULL, mtu);
 }