From: Marcel Holtmann Date: Mon, 29 Jun 2009 19:19:40 +0000 (+0200) Subject: Hook up setting of IPv4 properties X-Git-Tag: 2.0_alpha~3668 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0855c6c2ff2987ae3ec8605751cf0564edf33d8d;p=framework%2Fconnectivity%2Fconnman.git Hook up setting of IPv4 properties --- diff --git a/src/connman.h b/src/connman.h index b558638..753c43f 100644 --- a/src/connman.h +++ b/src/connman.h @@ -90,6 +90,9 @@ int __connman_security_check_privilege(DBusMessage *message, const char *__connman_ipconfig_method2string(enum connman_ipconfig_method method); enum connman_ipconfig_method __connman_ipconfig_string2method(const char *method); +int __connman_ipconfig_set_ipv4(struct connman_ipconfig *ipconfig, + const char *key, DBusMessageIter *value); + #include #include diff --git a/src/device.c b/src/device.c index 2ff7d71..347f651 100644 --- a/src/device.c +++ b/src/device.c @@ -410,18 +410,24 @@ static DBusMessage *set_property(DBusConnection *conn, device->scan_timeout = g_timeout_add_seconds(interval, device_scan_trigger, device); } - } else if (g_str_has_prefix(name, "IPv4") == TRUE) { + } else if (g_str_has_prefix(name, "IPv4.") == TRUE) { + int err; + switch (device->mode) { case CONNMAN_DEVICE_MODE_UNKNOWN: case CONNMAN_DEVICE_MODE_NETWORK_SINGLE: case CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE: return __connman_error_invalid_arguments(msg); case CONNMAN_DEVICE_MODE_TRANSPORT_IP: - __connman_element_set_ipv4(&device->element, - name, &value); break; } - } + + err = __connman_ipconfig_set_ipv4(device->ipconfig, + name + 5, &value); + if (err < 0) + return __connman_error_failed(msg, -err); + } else + return __connman_error_invalid_property(msg); __connman_storage_save_device(device); diff --git a/src/ipconfig.c b/src/ipconfig.c index 7368be0..8394988 100644 --- a/src/ipconfig.c +++ b/src/ipconfig.c @@ -23,6 +23,8 @@ #include #endif +#include + #include "connman.h" struct connman_ipconfig { @@ -78,6 +80,14 @@ void connman_ipconfig_unref(struct connman_ipconfig *ipconfig) } } +int __connman_ipconfig_set_ipv4(struct connman_ipconfig *ipconfig, + const char *key, DBusMessageIter *value) +{ + DBG("ipconfig %p key %s", ipconfig, key); + + return -EIO; +} + static GSList *driver_list = NULL; static gint compare_priority(gconstpointer a, gconstpointer b) diff --git a/src/network.c b/src/network.c index f5c9033..c9e9dc3 100644 --- a/src/network.c +++ b/src/network.c @@ -199,7 +199,15 @@ static DBusMessage *set_property(DBusConnection *conn, g_free(network->wifi.passphrase); network->wifi.passphrase = g_strdup(passphrase); - } + } else if (g_str_has_prefix(name, "IPv4.") == TRUE) { + int err; + + err = __connman_ipconfig_set_ipv4(network->ipconfig, + name + 5, &value); + if (err < 0) + return __connman_error_failed(msg, -err); + } else + return __connman_error_invalid_property(msg); __connman_storage_save_network(network); diff --git a/src/service.c b/src/service.c index d0e8d28..0e2ee6d 100644 --- a/src/service.c +++ b/src/service.c @@ -344,6 +344,13 @@ static DBusMessage *set_property(DBusConnection *conn, "WiFi.Passphrase", service->passphrase); __connman_storage_save_service(service); + } else if (g_str_has_prefix(name, "IPv4.") == TRUE) { + int err; + + err = __connman_ipconfig_set_ipv4(service->ipconfig, + name + 5, &value); + if (err < 0) + return __connman_error_failed(msg, -err); } else return __connman_error_invalid_property(msg);