This is used by the config provision file support. It needs some
initial values from settings file, so this function variant only
reads AutoConnect, SplitRouting and Modified values from the
settings file because the other values come from .config file.
---
src/connman.h | 1 +
src/service.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 49 insertions(+)
diff --git a/src/connman.h b/src/connman.h
index cc5b445..24db5f8 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -634,6 +634,7 @@ int __connman_provider_init(void);
int __connman_service_init(void);
void __connman_service_cleanup(void);
+int __connman_service_load_modifiable(struct connman_service *service);
void __connman_service_list_struct(DBusMessageIter *iter);
diff --git a/src/service.c b/src/service.c
index a40ac3e..1a65efd 100644
--- a/src/service.c
+++ b/src/service.c
@@ -342,6 +342,54 @@ static enum connman_service_proxy_method
string2proxymethod(const char *method)
return CONNMAN_SERVICE_PROXY_METHOD_UNKNOWN;
}
+int __connman_service_load_modifiable(struct connman_service *service)
+{
+ GKeyFile *keyfile;
+ GError *error = NULL;
+ gchar *str;
+ bool autoconnect;
+
+ DBG("service %p", service);
+
+ keyfile = connman_storage_load_service(service->identifier);
+ if (!keyfile)
+ return -EIO;
+
+ switch (service->type) {
+ case CONNMAN_SERVICE_TYPE_UNKNOWN:
+ case CONNMAN_SERVICE_TYPE_SYSTEM:
+ case CONNMAN_SERVICE_TYPE_GPS:
+ case CONNMAN_SERVICE_TYPE_P2P:
+ break;
+ case CONNMAN_SERVICE_TYPE_VPN:
+ service->do_split_routing = g_key_file_get_boolean(keyfile,
+ service->identifier, "SplitRouting", NULL);
+ /* fall through */
+ case CONNMAN_SERVICE_TYPE_WIFI:
+ case CONNMAN_SERVICE_TYPE_GADGET:
+ case CONNMAN_SERVICE_TYPE_BLUETOOTH:
+ case CONNMAN_SERVICE_TYPE_CELLULAR:
+ case CONNMAN_SERVICE_TYPE_ETHERNET:
+ autoconnect = g_key_file_get_boolean(keyfile,
+ service->identifier, "AutoConnect", &error);
+ if (!error)
+ service->autoconnect = autoconnect;
+ g_clear_error(&error);
+ break;
+ }
+
+ str = g_key_file_get_string(keyfile,
+ service->identifier, "Modified", NULL);
+ if (str) {
+ g_time_val_from_iso8601(str, &service->modified);
+ g_free(str);
+ }
+
+ g_key_file_free(keyfile);
+
+ return 0;
+}
+
static int service_load(struct connman_service *service)
{
GKeyFile *keyfile;
--
1.8.3.1
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman