+static DBusMessage *get_properties(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ DBusMessage *reply;
+ DBusMessageIter array, dict;
+ connman_bool_t offlinemode, tethering;
+ const char *str;
+
+ 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;
+
+ dbus_message_iter_init_append(reply, &array);
+
+ connman_dbus_dict_open(&array, &dict);
+
+ str = __connman_profile_active_path();
+ if (str != NULL)
+ connman_dbus_dict_append_basic(&dict, "ActiveProfile",
+ DBUS_TYPE_OBJECT_PATH, &str);
+
+ connman_dbus_dict_append_array(&dict, "Profiles",
+ DBUS_TYPE_OBJECT_PATH, __connman_profile_list, NULL);
+ connman_dbus_dict_append_array(&dict, "Services",
+ DBUS_TYPE_OBJECT_PATH, __connman_service_list, NULL);
+ connman_dbus_dict_append_array(&dict, "Providers",
+ DBUS_TYPE_OBJECT_PATH, __connman_provider_list, NULL);
+ connman_dbus_dict_append_array(&dict, "Technologies",
+ DBUS_TYPE_OBJECT_PATH, __connman_technology_list, NULL);
+
+ str = __connman_notifier_get_state();
+ connman_dbus_dict_append_basic(&dict, "State",
+ DBUS_TYPE_STRING, &str);
+
+ offlinemode = __connman_profile_get_offlinemode();
+ connman_dbus_dict_append_basic(&dict, "OfflineMode",
+ DBUS_TYPE_BOOLEAN, &offlinemode);
+
+ tethering = __connman_tethering_get_status();
+ connman_dbus_dict_append_basic(&dict, "Tethering",
+ DBUS_TYPE_BOOLEAN, &tethering);
+
+ connman_dbus_dict_append_array(&dict, "AvailableTechnologies",
+ DBUS_TYPE_STRING, __connman_notifier_list_registered, NULL);
+ connman_dbus_dict_append_array(&dict, "EnabledTechnologies",
+ DBUS_TYPE_STRING, __connman_notifier_list_enabled, NULL);
+ connman_dbus_dict_append_array(&dict, "ConnectedTechnologies",
+ DBUS_TYPE_STRING, __connman_notifier_list_connected, NULL);
+
+ str = __connman_service_default();
+ if (str != NULL)
+ connman_dbus_dict_append_basic(&dict, "DefaultTechnology",
+ DBUS_TYPE_STRING, &str);
+
+ connman_dbus_dict_append_array(&dict, "AvailableDebugs",
+ DBUS_TYPE_STRING, __connman_debug_list_available, NULL);
+ connman_dbus_dict_append_array(&dict, "EnabledDebugs",
+ DBUS_TYPE_STRING, __connman_debug_list_enabled, NULL);