This email list is read-only. Emails sent to this list will be discarded
----------------------------------
src/connman.h | 2 +-
src/element.c | 13 ++++++++++++-
src/main.c | 10 +++++-----
3 files changed, 18 insertions(+), 7 deletions(-)
New commits:
commit ed776f9ab57e249da21b3bfd7da5848d2263c5b1
Author: Marcel Holtmann <[EMAIL PROTECTED]>
Date: Tue Aug 5 02:38:14 2008 +0200
Fix selecting network device
Diff in this email is a maximum of 400 lines.
diff --git a/src/connman.h b/src/connman.h
index 5f64286..df1aabb 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -52,7 +52,7 @@ void __connman_plugin_cleanup(void);
#include <connman/driver.h>
#include <connman/element.h>
-int __connman_element_init(DBusConnection *conn);
+int __connman_element_init(DBusConnection *conn, const char *device);
void __connman_element_cleanup(void);
void __connman_element_list(enum connman_element_type type,
diff --git a/src/element.c b/src/element.c
index 5537e41..7c892e6 100644
--- a/src/element.c
+++ b/src/element.c
@@ -40,6 +40,8 @@ static GSList *driver_list = NULL;
static GThreadPool *thread_register = NULL;
static GThreadPool *thread_unregister = NULL;
+static gchar *device_filter = NULL;
+
static const char *type2string(enum connman_element_type type)
{
switch (type) {
@@ -601,6 +603,11 @@ int connman_element_register(struct connman_element
*element,
{
DBG("element %p name %s parent %p", element, element->name, parent);
+ if (device_filter && element->type == CONNMAN_ELEMENT_TYPE_DEVICE) {
+ if (g_str_equal(device_filter, element->netdev.name) == FALSE)
+ return -EINVAL;
+ }
+
if (connman_element_ref(element) == NULL)
return -EINVAL;
@@ -788,7 +795,7 @@ static void unregister_element(gpointer data, gpointer
user_data)
connman_element_unref(element);
}
-int __connman_element_init(DBusConnection *conn)
+int __connman_element_init(DBusConnection *conn, const char *device)
{
struct connman_element *element;
@@ -798,6 +805,8 @@ int __connman_element_init(DBusConnection *conn)
if (connection == NULL)
return -EIO;
+ device_filter = g_strdup(device);
+
g_static_rw_lock_writer_lock(&element_lock);
element = connman_element_create();
@@ -873,5 +882,7 @@ void __connman_element_cleanup(void)
element_root = NULL;
g_static_rw_lock_writer_unlock(&element_lock);
+ g_free(device_filter);
+
dbus_connection_unref(connection);
}
diff --git a/src/main.c b/src/main.c
index 1c63f1e..3a5990b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -50,14 +50,14 @@ static void disconnect_callback(void *user_data)
g_main_loop_quit(main_loop);
}
-static gchar *option_interface = NULL;
+static gchar *option_device = NULL;
static gboolean option_detach = TRUE;
static gboolean option_compat = FALSE;
static gboolean option_debug = FALSE;
static GOptionEntry options[] = {
- { "interface", 'i', 0, G_OPTION_ARG_STRING, &option_interface,
- "Specify network interface", "IFACE" },
+ { "device", 'i', 0, G_OPTION_ARG_STRING, &option_device,
+ "Specify network device/interface", "DEV" },
{ "nodaemon", 'n', G_OPTION_FLAG_REVERSE,
G_OPTION_ARG_NONE, &option_detach,
"Don't fork daemon to background" },
@@ -138,7 +138,7 @@ int main(int argc, char *argv[])
__connman_storage_init();
- __connman_element_init(conn);
+ __connman_element_init(conn, option_device);
__connman_agent_init(conn);
@@ -146,7 +146,7 @@ int main(int argc, char *argv[])
__connman_plugin_init();
- g_free(option_interface);
+ g_free(option_device);
memset(&sa, 0, sizeof(sa));
sa.sa_handler = sig_term;
_______________________________________________
Commits mailing list
[email protected]
https://www.moblin.org/mailman/listinfo/commits