Mark access points with "linksys" SSID as unique
[connman] / plugins / resolvconf.c
index 6f30f8b..df3a834 100644 (file)
@@ -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
 #include <config.h>
 #endif
 
+#include <errno.h>
+#include <unistd.h>
 #include <stdlib.h>
 
+#define CONNMAN_API_SUBJECT_TO_CHANGE
 #include <connman/plugin.h>
-#include <connman/driver.h>
+#include <connman/resolver.h>
 #include <connman/log.h>
 
-static int resolvconf_probe(struct connman_element *element)
+#include <glib.h>
+
+static int resolvconf_append(const char *interface, const char *domain,
+                                                       const char *server)
 {
-       gchar *cmd;
-       //int err;
+       char *cmd;
+       int err;
+
+       DBG("interface %s server %s", interface, server);
 
-       DBG("element %p name %s", element, element->name);
+       if (access(RESOLVCONF, X_OK) < 0)
+               return -errno;
 
-       cmd = g_strdup_printf("echo \"nameserver %s\" | resolvconf -a %s",
-                                       "127.0.0.1", element->netdev.name);
+       cmd = g_strdup_printf("echo \"nameserver %s\" | %s -a %s",
+                                               server, RESOLVCONF, interface);
 
        DBG("%s", cmd);
 
-       //err = system(cmd);
+       err = system(cmd);
 
        g_free(cmd);
 
-       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;
-       //int err;
+       char *cmd;
+       int err;
 
-       DBG("element %p name %s", element, element->name);
+       DBG("interface %s server %s", interface, server);
 
-       cmd = g_strdup_printf("resolvconf -d %s", element->netdev.name);
+       cmd = g_strdup_printf("%s -d %s", RESOLVCONF, interface);
 
        DBG("%s", cmd);
 
-       //err = system(cmd);
+       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,
-       .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)