X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=plugins%2Fresolvconf.c;h=df3a834bf6b6ae152d874133f43d6fc249cd1e20;hb=6e84765a8dda6c0cb5f13fbaf7bdecf9016c8de4;hp=f81d1062078608ebbf92f2074798cdfed5837699;hpb=e1530b2ba9dba6e2231dd5de39d73150266121f6;p=connman diff --git a/plugins/resolvconf.c b/plugins/resolvconf.c index f81d106..df3a834 100644 --- a/plugins/resolvconf.c +++ b/plugins/resolvconf.c @@ -2,7 +2,7 @@ * * Connection Manager * - * Copyright (C) 2007-2008 Intel Corporation. All rights reserved. + * 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 @@ -23,96 +23,75 @@ #include #endif +#include #include #include +#define CONNMAN_API_SUBJECT_TO_CHANGE #include -#include +#include #include -#include "inet.h" +#include -#define RESOLVCONF "/sbin/resolvconf" - -static int resolvconf_probe(struct connman_element *element) +static int resolvconf_append(const char *interface, const char *domain, + const char *server) { - const char *nameserver = NULL; - struct connman_element *internet; - gchar *cmd, *name; + char *cmd; int err; - DBG("element %p name %s", element, element->name); + DBG("interface %s server %s", interface, server); if (access(RESOLVCONF, X_OK) < 0) return -errno; - connman_element_get_value(element, - CONNMAN_PROPERTY_ID_IPV4_NAMESERVER, &nameserver); - - if (nameserver == NULL) - return -EINVAL; - - name = inet_index2name(element->index); - cmd = g_strdup_printf("echo \"nameserver %s\" | %s -a %s", - nameserver, RESOLVCONF, name); - - g_free(name); + server, RESOLVCONF, interface); DBG("%s", cmd); - //err = system(cmd); - err = 0; + err = system(cmd); g_free(cmd); - internet = connman_element_create(NULL); - - internet->type = CONNMAN_ELEMENT_TYPE_CONNECTION; - - connman_element_register(internet, element); - - return 0; + return err; } -static void resolvconf_remove(struct connman_element *element) +static int resolvconf_remove(const char *interface, const char *domain, + const char *server) { - gchar *cmd, *name; + char *cmd; int err; - DBG("element %p name %s", element, element->name); - - name = inet_index2name(element->index); + DBG("interface %s server %s", interface, server); - cmd = g_strdup_printf("%s -d %s", RESOLVCONF, name); - - g_free(name); + cmd = g_strdup_printf("%s -d %s", RESOLVCONF, interface); DBG("%s", cmd); - //err = system(cmd); - err = 0; + err = system(cmd); g_free(cmd); + + return err; } -static struct connman_driver resolvconf_driver = { +static struct connman_resolver resolvconf_resolver = { .name = "resolvconf", - .type = CONNMAN_ELEMENT_TYPE_RESOLVER, - .priority = CONNMAN_DRIVER_PRIORITY_HIGH, - .probe = resolvconf_probe, + .priority = CONNMAN_RESOLVER_PRIORITY_DEFAULT, + .append = resolvconf_append, .remove = resolvconf_remove, }; static int resolvconf_init(void) { - return connman_driver_register(&resolvconf_driver); + return connman_resolver_register(&resolvconf_resolver); } static void resolvconf_exit(void) { - connman_driver_unregister(&resolvconf_driver); + connman_resolver_unregister(&resolvconf_resolver); } -CONNMAN_PLUGIN_DEFINE("resolvconf", "Name resolver plugin", VERSION, - resolvconf_init, resolvconf_exit) +CONNMAN_PLUGIN_DEFINE(resolvconf, "Name resolver plugin", VERSION, + CONNMAN_PLUGIN_PRIORITY_DEFAULT, resolvconf_init, resolvconf_exit)