From e204b1b0150df1d5904e509a1fbf5c12a66ed6f8 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 19 Nov 2008 07:40:37 +0100 Subject: [PATCH] Add support for resolver modules --- include/Makefile.am | 3 ++- include/resolver.h | 46 ++++++++++++++++++++++++++++++++++++ src/Makefile.am | 4 ++-- src/connman.h | 2 ++ src/resolver.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 include/resolver.h create mode 100644 src/resolver.c diff --git a/include/Makefile.am b/include/Makefile.am index 7097870..c44bd1b 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -1,7 +1,8 @@ includedir = @includedir@/connman -include_HEADERS = log.h plugin.h security.h driver.h element.h property.h \ +include_HEADERS = log.h plugin.h security.h resolver.h \ + driver.h element.h property.h \ device.h network.h rtnl.h dbus.h MAINTAINERCLEANFILES = Makefile.in diff --git a/include/resolver.h b/include/resolver.h new file mode 100644 index 0000000..77a95cf --- /dev/null +++ b/include/resolver.h @@ -0,0 +1,46 @@ +/* + * + * 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 + * + */ + +#ifndef __CONNMAN_RESOLVER_H +#define __CONNMAN_RESOLVER_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * SECTION:resolver + * @title: Resolver premitives + * @short_description: Functions for registering resolver modules + */ + +struct connman_resolver { + const char *name; +}; + +extern int connman_resolver_register(struct connman_resolver *resolver); +extern void connman_resolver_unregister(struct connman_resolver *resolver); + +#ifdef __cplusplus +} +#endif + +#endif /* __CONNMAN_RESOLVER_H */ diff --git a/src/Makefile.am b/src/Makefile.am index f29f37e..6c3d603 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -12,8 +12,8 @@ DISTCLEANFILES = $(service_DATA) sbin_PROGRAMS = connmand connmand_SOURCES = main.c connman.h log.c error.c plugin.c profile.c \ - element.c device.c network.c security.c storage.c \ - manager.c agent.c rtnl.c dbus.c + element.c device.c network.c security.c resolver.c \ + storage.c manager.c agent.c rtnl.c dbus.c connmand_LDADD = @GDBUS_LIBS@ @GLIB_LIBS@ @GTHREAD_LIBS@ -ldl diff --git a/src/connman.h b/src/connman.h index 57f97bf..8bacda6 100644 --- a/src/connman.h +++ b/src/connman.h @@ -61,6 +61,8 @@ void __connman_plugin_cleanup(void); int __connman_security_check_privileges(DBusMessage *message); +#include + #include void __connman_driver_rescan(struct connman_driver *driver); diff --git a/src/resolver.c b/src/resolver.c new file mode 100644 index 0000000..404bc3d --- /dev/null +++ b/src/resolver.c @@ -0,0 +1,67 @@ +/* + * + * 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 "connman.h" + +static GStaticRWLock resolver_lock = G_STATIC_RW_LOCK_INIT; +static GSList *resolver_list = NULL; + +/** + * connman_resolver_register: + * @resolver: resolver module + * + * Register a new resolver module + * + * Returns: %0 on success + */ +int connman_resolver_register(struct connman_resolver *resolver) +{ + DBG("resolver %p name %s", resolver, resolver->name); + + g_static_rw_lock_writer_lock(&resolver_lock); + + resolver_list = g_slist_append(resolver_list, resolver); + + g_static_rw_lock_writer_unlock(&resolver_lock); + + return 0; +} + +/** + * connman_resolver_unregister: + * @resolver: resolver module + * + * Remove a previously registered resolver module + */ +void connman_resolver_unregister(struct connman_resolver *resolver) +{ + DBG("resolver %p name %s", resolver, resolver->name); + + g_static_rw_lock_writer_lock(&resolver_lock); + + resolver_list = g_slist_remove(resolver_list, resolver); + + g_static_rw_lock_writer_unlock(&resolver_lock); +} -- 2.7.4