This email list is read-only.  Emails sent to this list will be discarded
----------------------------------
 plugins/supplicant.c |   26 +++++++++++++++++++++++---
 src/connman.h        |    8 +++++---
 src/device.c         |    9 ++++++---
 src/element.c        |   45 +++++++++++++++++++++++++++++++++------------
 src/manager.c        |    6 +++---
 5 files changed, 70 insertions(+), 24 deletions(-)

New commits:
commit d7a989cc7e5ae1f7ba1791fab7aecc1e06dcde63
Author: Marcel Holtmann <[EMAIL PROTECTED]>
Date:   Sat Dec 6 00:36:41 2008 +0100

    Convert hex WEP key string into binary

commit e4192ffa8649754ebbab769495bb3ab40a7c146c
Author: Marcel Holtmann <[EMAIL PROTECTED]>
Date:   Fri Dec 5 23:01:17 2008 +0100

    Disable generic device driver for now

commit 193dcee5019657796339e4c4132e6d5425318871
Author: Marcel Holtmann <[EMAIL PROTECTED]>
Date:   Fri Dec 5 22:55:15 2008 +0100

    Support selected listing and counting of elements


Diff in this email is a maximum of 400 lines.
diff --git a/plugins/supplicant.c b/plugins/supplicant.c
index 39e1624..0a23039 100644
--- a/plugins/supplicant.c
+++ b/plugins/supplicant.c
@@ -23,6 +23,7 @@
 #include <config.h>
 #endif
 
+#include <stdlib.h>
 #include <string.h>
 #include <dbus/dbus.h>
 
@@ -516,9 +517,28 @@ static int set_network(struct supplicant_task *task,
                connman_dbus_dict_append_variant(&dict, "key_mgmt",
                                                DBUS_TYPE_STRING, &key_mgmt);
 
-               if (passphrase && strlen(passphrase) > 0) {
-                       connman_dbus_dict_append_variant(&dict, "wep_key0",
-                                               DBUS_TYPE_STRING, &passphrase);
+               if (passphrase) {
+                       int size = strlen(passphrase);
+                       if (size == 10 || size == 26) {
+                               unsigned char *key = malloc(13);
+                               char tmp[3];
+                               int i;
+                               memset(tmp, 0, sizeof(tmp));
+                               if (key == NULL)
+                                       size = 0;
+                               for (i = 0; i < size / 2; i++) {
+                                       memcpy(tmp, passphrase + (i * 2), 2);
+                                       key[i] = (unsigned char) strtol(tmp,
+                                                               NULL, 16);
+                               }
+                               connman_dbus_dict_append_array(&dict,
+                                               "wep_key0", DBUS_TYPE_BYTE,
+                                                       &key, size / 2);
+                               free(key);
+                       } else
+                               connman_dbus_dict_append_variant(&dict,
+                                               "wep_key0", DBUS_TYPE_STRING,
+                                                               &passphrase);
                        connman_dbus_dict_append_variant(&dict, "wep_tx_keyidx",
                                                DBUS_TYPE_STRING, &index);
                }
diff --git a/src/connman.h b/src/connman.h
index 9f7c4c1..965a283 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -73,9 +73,11 @@ void __connman_driver_rescan(struct connman_driver *driver);
 int __connman_element_init(DBusConnection *conn, const char *device);
 void __connman_element_cleanup(void);
 
-void __connman_element_list(enum connman_element_type type,
-                                               DBusMessageIter *iter);
-int __connman_element_count(enum connman_element_type type);
+void __connman_element_list(struct connman_element *element,
+                                       enum connman_element_type type,
+                                                       DBusMessageIter *iter);
+int __connman_element_count(struct connman_element *element,
+                                       enum connman_element_type type);
 
 const char *__connman_element_type2string(enum connman_element_type type);
 const char *__connman_element_subtype2string(enum connman_element_subtype 
type);
diff --git a/src/device.c b/src/device.c
index 0e2cf59..3ad61ff 100644
--- a/src/device.c
+++ b/src/device.c
@@ -29,6 +29,7 @@
 
 static GSList *driver_list = NULL;
 
+#if 0
 static gboolean match_driver(struct connman_device *device,
                                        struct connman_device_driver *driver)
 {
@@ -93,19 +94,21 @@ static struct connman_driver device_driver = {
        .probe          = device_probe,
        .remove         = device_remove,
 };
+#endif
 
 int __connman_device_init(void)
 {
        DBG("");
 
-       return connman_driver_register(&device_driver);
+       //return connman_driver_register(&device_driver);
+       return 0;
 }
 
 void __connman_device_cleanup(void)
 {
        DBG("");
 
-       connman_driver_unregister(&device_driver);
+       //connman_driver_unregister(&device_driver);
 }
 
 static gint compare_priority(gconstpointer a, gconstpointer b)
@@ -131,7 +134,7 @@ int connman_device_driver_register(struct 
connman_device_driver *driver)
        driver_list = g_slist_insert_sorted(driver_list, driver,
                                                        compare_priority);
 
-       __connman_driver_rescan(&device_driver);
+       //__connman_driver_rescan(&device_driver);
 
        return 0;
 }
diff --git a/src/element.c b/src/element.c
index 0f7cecc..0aef003 100644
--- a/src/element.c
+++ b/src/element.c
@@ -356,7 +356,8 @@ static DBusMessage *do_disable(DBusConnection *conn,
        return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
 }
 
-static void append_networks(DBusMessageIter *dict)
+static void append_networks(struct connman_element *element,
+                                               DBusMessageIter *dict)
 {
        DBusMessageIter entry, value, iter;
        const char *key = "Networks";
@@ -373,7 +374,7 @@ static void append_networks(DBusMessageIter *dict)
        dbus_message_iter_open_container(&value, DBUS_TYPE_ARRAY,
                                DBUS_TYPE_OBJECT_PATH_AS_STRING, &iter);
 
-       __connman_element_list(CONNMAN_ELEMENT_TYPE_NETWORK, &iter);
+       __connman_element_list(element, CONNMAN_ELEMENT_TYPE_NETWORK, &iter);
 
        dbus_message_iter_close_container(&value, &iter);
 
@@ -416,7 +417,7 @@ static DBusMessage *get_device_properties(DBusConnection 
*conn,
        connman_dbus_dict_append_variant(&dict, "Powered",
                                        DBUS_TYPE_BOOLEAN, &element->enabled);
 
-       append_networks(&dict);
+       append_networks(element, &dict);
 
        add_common_properties(element, &dict);
 
@@ -735,16 +736,26 @@ static gboolean append_path(GNode *node, gpointer 
user_data)
        return FALSE;
 }
 
-void __connman_element_list(enum connman_element_type type,
-                                               DBusMessageIter *iter)
+void __connman_element_list(struct connman_element *element,
+                                       enum connman_element_type type,
+                                                       DBusMessageIter *iter)
 {
        struct append_filter filter = { type, iter };
+       GNode *node;
 
        DBG("");
 
+       if (element != NULL) {
+               node = g_node_find(element_root, G_PRE_ORDER,
+                                               G_TRAVERSE_ALL, element);
+               if (node == NULL)
+                       return;
+       } else
+               node = element_root;
+
        g_static_rw_lock_reader_lock(&element_lock);
-       g_node_traverse(element_root, G_PRE_ORDER, G_TRAVERSE_ALL, -1,
-                                                       append_path, &filter);
+       g_node_traverse(node, G_PRE_ORDER, G_TRAVERSE_ALL, -1,
+                                               append_path, &filter);
        g_static_rw_lock_reader_unlock(&element_lock);
 }
 
@@ -772,15 +783,25 @@ static gboolean count_element(GNode *node, gpointer 
user_data)
        return FALSE;
 }
 
-int __connman_element_count(enum connman_element_type type)
+int __connman_element_count(struct connman_element *element,
+                                       enum connman_element_type type)
 {
        struct count_data data = { type, 0 };
+       GNode *node;
 
        DBG("");
 
+       if (element != NULL) {
+               node = g_node_find(element_root, G_PRE_ORDER,
+                                               G_TRAVERSE_ALL, element);
+               if (node == NULL)
+                       return 0;
+       } else
+               node = element_root;
+
        g_static_rw_lock_reader_lock(&element_lock);
-       g_node_traverse(element_root, G_PRE_ORDER, G_TRAVERSE_ALL, -1,
-                                                       count_element, &data);
+       g_node_traverse(node, G_PRE_ORDER, G_TRAVERSE_ALL, -1,
+                                               count_element, &data);
        g_static_rw_lock_reader_unlock(&element_lock);
 
        return data.count;
@@ -1506,7 +1527,7 @@ static void append_devices(DBusMessageIter *entry)
        dbus_message_iter_open_container(&value, DBUS_TYPE_ARRAY,
                                DBUS_TYPE_OBJECT_PATH_AS_STRING, &iter);
 
-       __connman_element_list(CONNMAN_ELEMENT_TYPE_DEVICE, &iter);
+       __connman_element_list(NULL, CONNMAN_ELEMENT_TYPE_DEVICE, &iter);
 
        dbus_message_iter_close_container(&value, &iter);
 
@@ -1546,7 +1567,7 @@ static void append_connections(DBusMessageIter *entry)
        dbus_message_iter_open_container(&value, DBUS_TYPE_ARRAY,
                                DBUS_TYPE_OBJECT_PATH_AS_STRING, &iter);
 
-       __connman_element_list(CONNMAN_ELEMENT_TYPE_CONNECTION, &iter);
+       __connman_element_list(NULL, CONNMAN_ELEMENT_TYPE_CONNECTION, &iter);
 
        dbus_message_iter_close_container(&value, &iter);
 
diff --git a/src/manager.c b/src/manager.c
index 341e462..3c22339 100644
--- a/src/manager.c
+++ b/src/manager.c
@@ -70,7 +70,7 @@ static void append_devices(DBusMessageIter *dict)
        dbus_message_iter_open_container(&value, DBUS_TYPE_ARRAY,
                                DBUS_TYPE_OBJECT_PATH_AS_STRING, &iter);
 
-       __connman_element_list(CONNMAN_ELEMENT_TYPE_DEVICE, &iter);
+       __connman_element_list(NULL, CONNMAN_ELEMENT_TYPE_DEVICE, &iter);
 
        dbus_message_iter_close_container(&value, &iter);
 
@@ -96,7 +96,7 @@ static void append_connections(DBusMessageIter *dict)
        dbus_message_iter_open_container(&value, DBUS_TYPE_ARRAY,
                                DBUS_TYPE_OBJECT_PATH_AS_STRING, &iter);
 
-       __connman_element_list(CONNMAN_ELEMENT_TYPE_CONNECTION, &iter);
+       __connman_element_list(NULL, CONNMAN_ELEMENT_TYPE_CONNECTION, &iter);
 
        dbus_message_iter_close_container(&value, &iter);
 
@@ -149,7 +149,7 @@ static DBusMessage *get_properties(DBusConnection *conn,
        append_devices(&dict);
        append_connections(&dict);
 
-       if (__connman_element_count(CONNMAN_ELEMENT_TYPE_CONNECTION) > 0)
+       if (__connman_element_count(NULL, CONNMAN_ELEMENT_TYPE_CONNECTION) > 0)
                append_state(&dict, "online");
        else
                append_state(&dict, "offline");
_______________________________________________
Commits mailing list
[email protected]
https://lists.moblin.org/mailman/listinfo/commits

Reply via email to