summaryrefslogtreecommitdiff
path: root/src/service.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/service.c')
-rw-r--r--src/service.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/service.c b/src/service.c
index 21aaba44..dec86224 100644
--- a/src/service.c
+++ b/src/service.c
@@ -423,6 +423,14 @@ static void append_ipv4(DBusMessageIter *iter, void *user_data)
__connman_ipconfig_append_ipv4(service->ipconfig, iter);
}
+static void append_ipv4config(DBusMessageIter *iter, void *user_data)
+{
+ struct connman_service *service = user_data;
+
+ if (service->ipconfig != NULL)
+ __connman_ipconfig_append_ipv4config(service->ipconfig, iter);
+}
+
static void settings_changed(struct connman_service *service)
{
connman_dbus_property_changed_dict(service->path,
@@ -565,6 +573,9 @@ static DBusMessage *get_properties(DBusConnection *conn,
connman_dbus_dict_append_dict(&dict, "IPv4", append_ipv4, service);
+ connman_dbus_dict_append_dict(&dict, "IPv4.Configuration",
+ append_ipv4config, service);
+
connman_dbus_dict_close(&array, &dict);
return reply;
@@ -693,6 +704,18 @@ static DBusMessage *set_property(DBusConnection *conn,
"Cellular.Password", service->password);
__connman_storage_save_service(service);
+ } else if (g_str_equal(name, "IPv4.Configuration") == TRUE) {
+ int err;
+
+ if (service->ipconfig == NULL)
+ return __connman_error_invalid_property(msg);
+
+ err = __connman_ipconfig_set_ipv4config(service->ipconfig,
+ &value);
+ if (err < 0)
+ return __connman_error_failed(msg, -err);
+
+ __connman_storage_save_service(service);
} else
return __connman_error_invalid_property(msg);