#define CONNMAN_API_SUBJECT_TO_CHANGE
#include <connman/plugin.h>
#include <connman/driver.h>
+#include <connman/inet.h>
#include <connman/dbus.h>
#include <connman/log.h>
-#include "inet.h"
-
#define DHCLIENT_INTF "org.isc.dhclient"
#define DHCLIENT_PATH "/org/isc/dhclient"
return -ENOMEM;
task->ifindex = element->index;
- task->ifname = inet_index2name(element->index);
+ task->ifname = connman_inet_ifname(element->index);
task->element = element;
if (task->ifname == NULL) {
argv[0] = DHCLIENT;
argv[1] = "-d";
argv[2] = "-q";
- argv[3] = "-n";
- argv[4] = "-e";
- argv[5] = address;
- argv[6] = "-pf";
- argv[7] = pidfile;
- argv[8] = "-lf";
- argv[9] = leases;
- argv[10] = "-cf";
- argv[11] = config;
- argv[12] = "-sf";
- argv[13] = script;
- argv[14] = task->ifname;
+ argv[3] = "-e";
+ argv[4] = address;
+ argv[5] = "-pf";
+ argv[6] = pidfile;
+ argv[7] = "-lf";
+ argv[8] = leases;
+ argv[9] = "-cf";
+ argv[10] = config;
+ argv[11] = "-sf";
+ argv[12] = script;
+ argv[13] = task->ifname;
+ argv[14] = "-n";
argv[15] = NULL;
envp[0] = NULL;
kill_task(task);
}
+static void dhclient_change(struct connman_element *element)
+{
+ DBG("element %p name %s", element, element->name);
+
+ if (element->state == CONNMAN_ELEMENT_STATE_ERROR)
+ connman_element_set_error(element->parent,
+ CONNMAN_ELEMENT_ERROR_DHCP_FAILED);
+}
+
static struct connman_driver dhclient_driver = {
.name = "dhclient",
.type = CONNMAN_ELEMENT_TYPE_DHCP,
.probe = dhclient_probe,
.remove = dhclient_remove,
+ .change = dhclient_change,
};
static DBusHandlerResult dhclient_filter(DBusConnection *conn,
task->element->ipv4.nameserver = g_strdup(value);
}
+ if (g_ascii_strcasecmp(key, "new_domain_name") == 0) {
+ }
+
+ if (g_ascii_strcasecmp(key, "new_domain_search") == 0) {
+ }
+
+ if (g_ascii_strcasecmp(key, "new_host_name") == 0) {
+ }
+
dbus_message_iter_next(&dict);
}
} else if (g_ascii_strcasecmp(text, "RENEW") == 0 ||
g_ascii_strcasecmp(text, "REBIND") == 0) {
connman_element_update(task->element);
+ } else if (g_ascii_strcasecmp(text, "FAIL") == 0) {
+ connman_element_set_error(task->element,
+ CONNMAN_ELEMENT_ERROR_FAILED);
} else {
}
}
CONNMAN_PLUGIN_DEFINE(dhclient, "ISC DHCP client plugin", VERSION,
- dhclient_init, dhclient_exit)
+ CONNMAN_PLUGIN_PRIORITY_DEFAULT, dhclient_init, dhclient_exit)