diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-06-29 21:27:09 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-06-29 21:27:09 +0200 |
commit | 04e0a4abe1df6ab7773c6347f91a19babc6e381a (patch) | |
tree | 3374adfb8925a7a130b3b3998ff332b0ee9a51d7 | |
parent | 0855c6c2ff2987ae3ec8605751cf0564edf33d8d (diff) | |
download | connman-04e0a4abe1df6ab7773c6347f91a19babc6e381a.tar.gz connman-04e0a4abe1df6ab7773c6347f91a19babc6e381a.tar.bz2 connman-04e0a4abe1df6ab7773c6347f91a19babc6e381a.zip |
Add suppport for setting IPv4 configuration method
-rw-r--r-- | src/element.c | 28 | ||||
-rw-r--r-- | src/ipconfig.c | 46 |
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; |