From: Patrik Flykt <[email protected]>

---
 include/storage.h |    3 +++
 src/connman.h     |    2 ++
 src/storage.c     |   36 ++++++++++++++++++++++++++++++++++++
 3 files changed, 41 insertions(+), 0 deletions(-)

diff --git a/include/storage.h b/include/storage.h
index 6b733f8..033efc8 100644
--- a/include/storage.h
+++ b/include/storage.h
@@ -25,6 +25,7 @@
 #include <connman/profile.h>
 #include <connman/service.h>
 #include <connman/device.h>
+#include <connman/provider.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -52,6 +53,8 @@ struct connman_storage {
        enum connman_device_type device_type;
        int (*device_load) (struct connman_device *device);
        int (*device_save) (struct connman_device *device);
+       int (*provider_load) (struct connman_provider *provider);
+       int (*provider_save) (struct connman_provider *provider);
 };
 
 int connman_storage_register(struct connman_storage *storage);
diff --git a/src/connman.h b/src/connman.h
index 2faeb1b..b79e190 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -174,6 +174,8 @@ int __connman_storage_load_service(struct connman_service 
*service);
 int __connman_storage_save_service(struct connman_service *service);
 int __connman_storage_load_device(struct connman_device *device);
 int __connman_storage_save_device(struct connman_device *device);
+int __connman_storage_load_provider (struct connman_provider *provider);
+int __connman_storage_save_provider (struct connman_provider *provider);
 
 int __connman_detect_init(void);
 void __connman_detect_cleanup(void);
diff --git a/src/storage.c b/src/storage.c
index 81f9ecd..b5b575d 100644
--- a/src/storage.c
+++ b/src/storage.c
@@ -307,6 +307,42 @@ int __connman_storage_save_device(struct connman_device 
*device)
        return -ENOENT;
 }
 
+int __connman_storage_load_provider(struct connman_provider *provider)
+{
+       GSList *list;
+
+       DBG("provider %p", provider);
+
+       for (list = storage_list; list; list = list->next) {
+               struct connman_storage *storage = list->data;
+
+               if (storage->provider_load) {
+                       if (storage->provider_load(provider) == 0)
+                               return 0;
+               }
+       }
+
+       return -ENOENT;
+}
+
+int __connman_storage_save_provider(struct connman_provider *provider)
+{
+       GSList *list;
+
+       DBG("provider %p", provider);
+
+       for (list = storage_list; list; list = list->next) {
+               struct connman_storage *storage = list->data;
+
+               if (storage->provider_save) {
+                       if (storage->provider_save(provider) == 0)
+                               return 0;
+               }
+       }
+
+       return -ENOENT;
+}
+
 int __connman_storage_init(void)
 {
        DBG("");
-- 
1.7.2.5

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to