summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-06-29 21:27:09 +0200
committerMarcel Holtmann <marcel@holtmann.org>2009-06-29 21:27:09 +0200
commit04e0a4abe1df6ab7773c6347f91a19babc6e381a (patch)
tree3374adfb8925a7a130b3b3998ff332b0ee9a51d7
parent0855c6c2ff2987ae3ec8605751cf0564edf33d8d (diff)
downloadconnman-04e0a4abe1df6ab7773c6347f91a19babc6e381a.tar.gz
connman-04e0a4abe1df6ab7773c6347f91a19babc6e381a.tar.bz2
connman-04e0a4abe1df6ab7773c6347f91a19babc6e381a.zip
Add suppport for setting IPv4 configuration method
-rw-r--r--src/element.c28
-rw-r--r--src/ipconfig.c46
2 files changed, 44 insertions, 30 deletions
diff --git a/src/element.c b/src/element.c
index 33f84f59..62f797e6 100644
--- a/src/element.c
+++ b/src/element.c
@@ -76,34 +76,6 @@ static const char *type2string(enum connman_element_type type)
return NULL;
}
-const char *__connman_ipconfig_method2string(enum connman_ipconfig_method method)
-{
- switch (method) {
- case CONNMAN_IPCONFIG_METHOD_UNKNOWN:
- return "unknown";
- case CONNMAN_IPCONFIG_METHOD_OFF:
- return "off";
- case CONNMAN_IPCONFIG_METHOD_STATIC:
- return "static";
- case CONNMAN_IPCONFIG_METHOD_DHCP:
- return "dhcp";
- }
-
- return "unknown";
-}
-
-enum connman_ipconfig_method __connman_ipconfig_string2method(const char *method)
-{
- if (strcasecmp(method, "off") == 0)
- return CONNMAN_IPCONFIG_METHOD_OFF;
- else if (strcasecmp(method, "static") == 0)
- return CONNMAN_IPCONFIG_METHOD_STATIC;
- else if (strcasecmp(method, "dhcp") == 0)
- return CONNMAN_IPCONFIG_METHOD_DHCP;
- else
- return CONNMAN_IPCONFIG_METHOD_UNKNOWN;
-}
-
static void emit_element_signal(DBusConnection *conn, const char *member,
struct connman_element *element)
{
diff --git a/src/ipconfig.c b/src/ipconfig.c
index 83949880..79bed290 100644
--- a/src/ipconfig.c
+++ b/src/ipconfig.c
@@ -80,12 +80,54 @@ void connman_ipconfig_unref(struct connman_ipconfig *ipconfig)
}
}
+const char *__connman_ipconfig_method2string(enum connman_ipconfig_method method)
+{
+ switch (method) {
+ case CONNMAN_IPCONFIG_METHOD_UNKNOWN:
+ return "unknown";
+ case CONNMAN_IPCONFIG_METHOD_OFF:
+ return "off";
+ case CONNMAN_IPCONFIG_METHOD_STATIC:
+ return "static";
+ case CONNMAN_IPCONFIG_METHOD_DHCP:
+ return "dhcp";
+ }
+
+ return "unknown";
+}
+
+enum connman_ipconfig_method __connman_ipconfig_string2method(const char *method)
+{
+ if (g_strcmp0(method, "off") == 0)
+ return CONNMAN_IPCONFIG_METHOD_OFF;
+ else if (g_strcmp0(method, "static") == 0)
+ return CONNMAN_IPCONFIG_METHOD_STATIC;
+ else if (g_strcmp0(method, "dhcp") == 0)
+ return CONNMAN_IPCONFIG_METHOD_DHCP;
+ else
+ return CONNMAN_IPCONFIG_METHOD_UNKNOWN;
+}
+
int __connman_ipconfig_set_ipv4(struct connman_ipconfig *ipconfig,
const char *key, DBusMessageIter *value)
{
- DBG("ipconfig %p key %s", ipconfig, key);
+ int type = dbus_message_iter_get_arg_type(value);
+
+ DBG("ipconfig %p key %s type %d", ipconfig, key, type);
+
+ if (g_strcmp0(key, "Method") == 0) {
+ const char *method;
+
+ if (type != DBUS_TYPE_STRING)
+ return -EINVAL;
- return -EIO;
+ dbus_message_iter_get_basic(value, &method);
+
+ ipconfig->method = __connman_ipconfig_string2method(method);
+ } else
+ return -EINVAL;
+
+ return 0;
}
static GSList *driver_list = NULL;