Don't try to re-connect to networks out of range
[connman] / src / connection.c
index 01a84cc..f011b0c 100644 (file)
@@ -205,11 +205,16 @@ static DBusMessage *get_properties(DBusConnection *conn,
        struct connman_element *element = data;
        DBusMessage *reply;
        DBusMessageIter array, dict;
-       const char *method = NULL;
-       const char *address = NULL, *netmask = NULL, *gateway = NULL;
+       connman_uint8_t strength = 0;
+       const char *device, *network;
+       const char *type = NULL;
 
        DBG("conn %p", conn);
 
+       if (__connman_security_check_privilege(msg,
+                                       CONNMAN_SECURITY_PRIVILEGE_PUBLIC) < 0)
+               return __connman_error_permission_denied(msg);
+
        reply = dbus_message_new_method_return(msg);
        if (reply == NULL)
                return NULL;
@@ -221,6 +226,17 @@ static DBusMessage *get_properties(DBusConnection *conn,
                        DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING
                        DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);
 
+       connman_element_get_static_property(element, "Type", &type);
+
+       if (type != NULL)
+               connman_dbus_dict_append_variant(&dict, "Type",
+                                               DBUS_TYPE_STRING, &type);
+
+       connman_element_get_static_property(element, "Strength", &strength);
+       if (strength > 0)
+               connman_dbus_dict_append_variant(&dict, "Strength",
+                                               DBUS_TYPE_BYTE, &strength);
+
        if (element->devname != NULL)
                connman_dbus_dict_append_variant(&dict, "Interface",
                                        DBUS_TYPE_STRING, &element->devname);
@@ -228,31 +244,17 @@ static DBusMessage *get_properties(DBusConnection *conn,
        connman_dbus_dict_append_variant(&dict, "Default",
                                        DBUS_TYPE_BOOLEAN, &element->enabled);
 
-       connman_element_get_value(element,
-                               CONNMAN_PROPERTY_ID_IPV4_METHOD, &method);
-
-       connman_element_get_value(element,
-                               CONNMAN_PROPERTY_ID_IPV4_ADDRESS, &address);
-       connman_element_get_value(element,
-                               CONNMAN_PROPERTY_ID_IPV4_NETMASK, &netmask);
-       connman_element_get_value(element,
-                               CONNMAN_PROPERTY_ID_IPV4_GATEWAY, &gateway);
+       device = __connman_element_get_device(element);
+       if (device != NULL)
+               connman_dbus_dict_append_variant(&dict, "Device",
+                                       DBUS_TYPE_OBJECT_PATH, &device);
 
-       if (method != NULL)
-               connman_dbus_dict_append_variant(&dict, "IPv4.Method",
-                                               DBUS_TYPE_STRING, &method);
+       network = __connman_element_get_network(element);
+       if (network != NULL)
+               connman_dbus_dict_append_variant(&dict, "Network",
+                                       DBUS_TYPE_OBJECT_PATH, &network);
 
-       if (address != NULL)
-               connman_dbus_dict_append_variant(&dict, "IPv4.Address",
-                                               DBUS_TYPE_STRING, &address);
-
-       if (netmask != NULL)
-               connman_dbus_dict_append_variant(&dict, "IPv4.Netmask",
-                                               DBUS_TYPE_STRING, &netmask);
-
-       if (gateway != NULL)
-               connman_dbus_dict_append_variant(&dict, "IPv4.Gateway",
-                                               DBUS_TYPE_STRING, &gateway);
+       __connman_element_append_ipv4(element, &dict);
 
        dbus_message_iter_close_container(&array, &dict);
 
@@ -264,6 +266,7 @@ static DBusMessage *set_property(DBusConnection *conn,
 {
        DBusMessageIter iter, value;
        const char *name;
+       int type;
 
        DBG("conn %p", conn);
 
@@ -274,9 +277,12 @@ static DBusMessage *set_property(DBusConnection *conn,
        dbus_message_iter_next(&iter);
        dbus_message_iter_recurse(&iter, &value);
 
-       if (__connman_security_check_privileges(msg) < 0)
+       if (__connman_security_check_privilege(msg,
+                                       CONNMAN_SECURITY_PRIVILEGE_MODIFY) < 0)
                return __connman_error_permission_denied(msg);
 
+       type = dbus_message_iter_get_arg_type(&value);
+
        return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
 }