From 8393bbf9b8c2704b68df7db9b326d7230b663476 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 16 Sep 2008 14:53:52 +0200 Subject: [PATCH] Add simple network device plugin --- plugins/Makefile.am | 11 +++++--- plugins/netdev.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 plugins/netdev.c diff --git a/plugins/Makefile.am b/plugins/Makefile.am index b4e9805..e91bf05 100644 --- a/plugins/Makefile.am +++ b/plugins/Makefile.am @@ -1,10 +1,9 @@ plugindir = $(libdir)/connman/plugins -plugin_LTLIBRARIES = rtnllink.la ethernet.la wifi.la bluetooth.la \ - dhclient.la ipv4.la resolvconf.la resolvfile.la - -rtnllink_la_SOURCES = rtnllink.c +plugin_LTLIBRARIES = ethernet.la wifi.la bluetooth.la \ + netdev.la dhclient.la ipv4.la \ + resolvconf.la resolvfile.la rtnllink.la ethernet_la_SOURCES = ethernet.c @@ -13,6 +12,8 @@ wifi_la_SOURCES = wifi.c inet.h inet.c supplicant.h supplicant.c bluetooth_la_SOURCES = bluetooth.c bluetooth_la_LIBADD = @GDBUS_LIBS@ +netdev_la_SOURCES = netdev.c + dhclient_la_SOURCES = dhclient.c dhclient_la_CFLAGS = @GLIB_CFLAGS@ @GDBUS_CFLAGS@ -DDHCLIENT=\"@DHCLIENT@\" \ -DSTATEDIR=\""$(statedir)"\" -DSCRIPTDIR=\""$(scriptdir)"\" @@ -23,6 +24,8 @@ resolvconf_la_SOURCES = resolvconf.c inet.h inet.c resolvfile_la_SOURCES = resolvfile.c +rtnllink_la_SOURCES = rtnllink.c + if HAL plugin_LTLIBRARIES += hal.la diff --git a/plugins/netdev.c b/plugins/netdev.c new file mode 100644 index 0000000..d8733b7 --- /dev/null +++ b/plugins/netdev.c @@ -0,0 +1,81 @@ +/* + * + * Connection Manager + * + * Copyright (C) 2007-2008 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 +#endif + +#include +#include +#include + +static void create_element(struct connman_element *parent, + enum connman_element_type type) +{ + struct connman_element *element; + + DBG("parent %p name %s", parent, parent->name); + + element = connman_element_create(NULL); + if (element == NULL) + return; + + element->type = type; + element->index = parent->index; + + connman_element_register(element, parent); +} + +static int netdev_probe(struct connman_element *element) +{ + DBG("element %p name %s", element, element->name); + + create_element(element, CONNMAN_ELEMENT_TYPE_DHCP); + create_element(element, CONNMAN_ELEMENT_TYPE_ZEROCONF); + + return 0; +} + +static void netdev_remove(struct connman_element *element) +{ + DBG("element %p name %s", element, element->name); +} + +static struct connman_driver netdev_driver = { + .name = "netdev", + .type = CONNMAN_ELEMENT_TYPE_DEVICE, + .subtype = CONNMAN_ELEMENT_SUBTYPE_NETWORK, + .probe = netdev_probe, + .remove = netdev_remove, +}; + +static int netdev_init(void) +{ + return connman_driver_register(&netdev_driver); +} + +static void netdev_exit(void) +{ + connman_driver_unregister(&netdev_driver); +} + +CONNMAN_PLUGIN_DEFINE("netdev", "Network device plugin", VERSION, + netdev_init, netdev_exit) -- 2.7.4