Use RTNL device detection only if udev is not available
authorMarcel Holtmann <marcel@holtmann.org>
Sat, 4 Jul 2009 05:31:59 +0000 (22:31 -0700)
committerMarcel Holtmann <marcel@holtmann.org>
Sat, 4 Jul 2009 05:31:59 +0000 (22:31 -0700)
src/Makefile.am
src/connman.h
src/detect.c [deleted file]
src/element.c
src/udev-compat.c

index b146a4b..fb0d646 100644 (file)
@@ -11,7 +11,7 @@ connmand_SOURCES = main.c connman.h log.c selftest.c error.c plugin.c \
                        element.c device.c network.c connection.c \
                        manager.c profile.c service.c agent.c notifier.c \
                        security.c resolver.c ipconfig.c rfkill.c \
-                       storage.c ipv4.c detect.c rtnl.c inet.c dbus.c
+                       storage.c ipv4.c rtnl.c inet.c dbus.c
 
 if UDEV
 connmand_SOURCES += udev.c
index 24b64ad..d778cc1 100644 (file)
@@ -175,9 +175,6 @@ int __connman_element_append_ipv4(struct connman_element *element,
 int __connman_element_set_ipv4(struct connman_element *element,
                                const char *name, DBusMessageIter *value);
 
-int __connman_detect_init(void);
-void __connman_detect_cleanup(void);
-
 int __connman_ipv4_init(void);
 void __connman_ipv4_cleanup(void);
 
diff --git a/src/detect.c b/src/detect.c
deleted file mode 100644 (file)
index f239d85..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- *
- *  Connection Manager
- *
- *  Copyright (C) 2007-2009  Intel Corporation. All rights reserved.
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License version 2 as
- *  published by the Free Software Foundation.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <glib.h>
-
-#include "connman.h"
-
-static GSList *device_list = NULL;
-
-static struct connman_device *find_device(int index)
-{
-       GSList *list;
-
-       for (list = device_list; list; list = list->next) {
-               struct connman_device *device = list->data;
-
-               if (connman_device_get_index(device) == index)
-                       return device;
-       }
-
-       return NULL;
-}
-
-static void detect_newlink(unsigned short type, int index,
-                                       unsigned flags, unsigned change)
-{
-       struct connman_device *device;
-
-       DBG("type %d index %d", type, index);
-
-       device = find_device(index);
-       if (device != NULL)
-               return;
-
-       device = connman_inet_create_device(index);
-       if (device == NULL)
-               return;
-
-       if (connman_device_register(device) < 0) {
-               connman_device_unref(device);
-               return;
-       }
-
-       device_list = g_slist_append(device_list, device);
-}
-
-static void detect_dellink(unsigned short type, int index,
-                                       unsigned flags, unsigned change)
-{
-       struct connman_device *device;
-
-       DBG("type %d index %d", type, index);
-
-       device = find_device(index);
-       if (device == NULL)
-               return;
-
-       device_list = g_slist_remove(device_list, device);
-
-       connman_device_unregister(device);
-       connman_device_unref(device);
-}
-
-static struct connman_rtnl detect_rtnl = {
-       .name           = "detect",
-       .priority       = CONNMAN_RTNL_PRIORITY_LOW,
-       .newlink        = detect_newlink,
-       .dellink        = detect_dellink,
-};
-
-int __connman_detect_init(void)
-{
-       int err;
-
-       DBG("");
-
-       err = connman_rtnl_register(&detect_rtnl);
-       if (err < 0)
-               return err;
-
-       connman_rtnl_send_getlink();
-
-       return 0;
-}
-
-void __connman_detect_cleanup(void)
-{
-       GSList *list;
-
-       DBG("");
-
-       connman_rtnl_unregister(&detect_rtnl);
-
-       for (list = device_list; list; list = list->next) {
-               struct connman_device *device = list->data;
-
-               connman_device_unregister(device);
-               connman_device_unref(device);
-       }
-
-       g_slist_free(device_list);
-       device_list = NULL;
-}
index 81f5eaf..dca26ea 100644 (file)
@@ -1425,7 +1425,6 @@ void __connman_element_start(void)
 
        __connman_connection_init();
        __connman_ipv4_init();
-       __connman_detect_init();
        __connman_rfkill_init();
 }
 
@@ -1434,7 +1433,6 @@ void __connman_element_stop(void)
        DBG("");
 
        __connman_rfkill_cleanup();
-       __connman_detect_cleanup();
        __connman_ipv4_cleanup();
        __connman_connection_cleanup();
 }
index 516a48d..333eb89 100644 (file)
 #include <config.h>
 #endif
 
+#include <glib.h>
+
 #include "connman.h"
 
+static GSList *device_list = NULL;
+
+static struct connman_device *find_device(int index)
+{
+       GSList *list;
+
+       for (list = device_list; list; list = list->next) {
+               struct connman_device *device = list->data;
+
+               if (connman_device_get_index(device) == index)
+                       return device;
+       }
+
+       return NULL;
+}
+
+static void detect_newlink(unsigned short type, int index,
+                                       unsigned flags, unsigned change)
+{
+       struct connman_device *device;
+
+       DBG("type %d index %d", type, index);
+
+       device = find_device(index);
+       if (device != NULL)
+               return;
+
+       device = connman_inet_create_device(index);
+       if (device == NULL)
+               return;
+
+       if (connman_device_register(device) < 0) {
+               connman_device_unref(device);
+               return;
+       }
+
+       device_list = g_slist_append(device_list, device);
+}
+
+static void detect_dellink(unsigned short type, int index,
+                                       unsigned flags, unsigned change)
+{
+       struct connman_device *device;
+
+       DBG("type %d index %d", type, index);
+
+       device = find_device(index);
+       if (device == NULL)
+               return;
+
+       device_list = g_slist_remove(device_list, device);
+
+       connman_device_unregister(device);
+       connman_device_unref(device);
+}
+
+static struct connman_rtnl detect_rtnl = {
+       .name           = "detect",
+       .priority       = CONNMAN_RTNL_PRIORITY_LOW,
+       .newlink        = detect_newlink,
+       .dellink        = detect_dellink,
+};
+
 char *__connman_udev_get_devtype(const char *ifname)
 {
        return NULL;
@@ -32,9 +97,34 @@ char *__connman_udev_get_devtype(const char *ifname)
 
 int __connman_udev_init(void)
 {
+       int err;
+
+       DBG("");
+
+       err = connman_rtnl_register(&detect_rtnl);
+       if (err < 0)
+               return err;
+
+       connman_rtnl_send_getlink();
+
        return 0;
 }
 
 void __connman_udev_cleanup(void)
 {
+       GSList *list;
+
+       DBG("");
+
+       connman_rtnl_unregister(&detect_rtnl);
+
+       for (list = device_list; list; list = list->next) {
+               struct connman_device *device = list->data;
+
+               connman_device_unregister(device);
+               connman_device_unref(device);
+       }
+
+       g_slist_free(device_list);
+       device_list = NULL;
 }