From 6fcddc2d61694348525ad7c1edce6f405eabead8 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 31 Dec 2009 20:08:24 -0800 Subject: Add support for supplicant signals with included properties --- tools/supplicant.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'tools/supplicant.c') diff --git a/tools/supplicant.c b/tools/supplicant.c index f5695f4f..d3ea5531 100644 --- a/tools/supplicant.c +++ b/tools/supplicant.c @@ -504,11 +504,12 @@ static void network_property(const char *key, DBusMessageIter *iter, if (key == NULL) return; - DBG("key %s type %c", key, dbus_message_iter_get_arg_type(iter)); + //DBG("key %s type %c", key, dbus_message_iter_get_arg_type(iter)); } static void interface_network_added(DBusMessageIter *iter, void *user_data) { + //struct supplicant_interface *interface = user_data; const char *path = NULL; dbus_message_iter_get_basic(iter, &path); @@ -518,7 +519,12 @@ static void interface_network_added(DBusMessageIter *iter, void *user_data) if (g_strcmp0(path, "/") == 0) return; - DBG("path %s", path); + dbus_message_iter_next(iter); + if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_INVALID) { + supplicant_dbus_property_foreach(iter, network_property, NULL); + network_property(NULL, NULL, NULL); + return; + } supplicant_dbus_property_get_all(path, SUPPLICANT_INTERFACE ".Interface.Network", @@ -841,6 +847,13 @@ static void interface_bss_added(DBusMessageIter *iter, void *user_data) bss->interface = interface; bss->path = g_strdup(path); + dbus_message_iter_next(iter); + if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_INVALID) { + supplicant_dbus_property_foreach(iter, bss_property, bss); + bss_property(NULL, NULL, bss); + return; + } + supplicant_dbus_property_get_all(path, SUPPLICANT_INTERFACE ".Interface.BSS", bss_property, bss); @@ -985,6 +998,14 @@ static void interface_added(DBusMessageIter *iter, void *user_data) if (interface == NULL) return; + dbus_message_iter_next(iter); + if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_INVALID) { + supplicant_dbus_property_foreach(iter, interface_property, + interface); + interface_property(NULL, NULL, interface); + return; + } + supplicant_dbus_property_get_all(path, SUPPLICANT_INTERFACE ".Interface", interface_property, interface); -- cgit v1.2.3