This is used by the config provision file support. It needs some
initial values from settings file, like AutoConnect flag value.
---
 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..9683451 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_minimal(struct connman_service *service);
 
 void __connman_service_list_struct(DBusMessageIter *iter);
 
diff --git a/src/service.c b/src/service.c
index a40ac3e..48b0609 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_minimal(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
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman

Reply via email to