Hook up setting of IPv4 properties
authorMarcel Holtmann <marcel@holtmann.org>
Mon, 29 Jun 2009 19:19:40 +0000 (21:19 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Mon, 29 Jun 2009 19:19:40 +0000 (21:19 +0200)
src/connman.h
src/device.c
src/ipconfig.c
src/network.c
src/service.c

index b558638..753c43f 100644 (file)
@@ -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 <connman/inet.h>
 
 #include <connman/rfkill.h>
index 2ff7d71..347f651 100644 (file)
@@ -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);
 
index 7368be0..8394988 100644 (file)
@@ -23,6 +23,8 @@
 #include <config.h>
 #endif
 
+#include <gdbus.h>
+
 #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)
index f5c9033..c9e9dc3 100644 (file)
@@ -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);
 
index d0e8d28..0e2ee6d 100644 (file)
@@ -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);