Add support for disconnecting networks first
[connman] / src / connection.c
index 7344cd4..f617dde 100644 (file)
@@ -205,11 +205,17 @@ static DBusMessage *get_properties(DBusConnection *conn,
        struct connman_element *element = data;
        DBusMessage *reply;
        DBusMessageIter array, dict;
+       connman_uint8_t strength = 0;
+       const char *device, *network;
        const char *type = NULL, *method = NULL;
        const char *address = NULL, *netmask = NULL, *gateway = 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;
@@ -227,6 +233,11 @@ static DBusMessage *get_properties(DBusConnection *conn,
                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);
@@ -234,6 +245,16 @@ static DBusMessage *get_properties(DBusConnection *conn,
        connman_dbus_dict_append_variant(&dict, "Default",
                                        DBUS_TYPE_BOOLEAN, &element->enabled);
 
+       device = __connman_element_get_device(element);
+       if (device != NULL)
+               connman_dbus_dict_append_variant(&dict, "Device",
+                                       DBUS_TYPE_OBJECT_PATH, &device);
+
+       network = __connman_element_get_network(element);
+       if (network != NULL)
+               connman_dbus_dict_append_variant(&dict, "Network",
+                                       DBUS_TYPE_OBJECT_PATH, &network);
+
        connman_element_get_value(element,
                                CONNMAN_PROPERTY_ID_IPV4_METHOD, &method);
 
@@ -270,6 +291,7 @@ static DBusMessage *set_property(DBusConnection *conn,
 {
        DBusMessageIter iter, value;
        const char *name;
+       int type;
 
        DBG("conn %p", conn);
 
@@ -280,9 +302,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);
 }