From: Patrik Flykt <[email protected]>

Register vpn (provider) save functionality and define save
functionality for struct vpn_driver. Thus each vpn driver can
choose itself which settings need to be saved.
---
 plugins/vpn.c |   15 +++++++++++++++
 plugins/vpn.h |    1 +
 2 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/plugins/vpn.c b/plugins/vpn.c
index e028b63..50dfd80 100644
--- a/plugins/vpn.c
+++ b/plugins/vpn.c
@@ -369,6 +369,20 @@ static int vpn_remove(struct connman_provider *provider)
        return 0;
 }
 
+static int vpn_save (struct connman_provider *provider, GKeyFile *keyfile)
+{
+       struct vpn_driver_data *vpn_driver_data;
+       const char *name;
+
+       name = connman_provider_get_driver_name(provider);
+       vpn_driver_data = g_hash_table_lookup(driver_hash, name);
+       if (vpn_driver_data != NULL &&
+               vpn_driver_data->vpn_driver->save != NULL)
+               return vpn_driver_data->vpn_driver->save(provider, keyfile);
+
+       return 0;
+}
+
 int vpn_register(const char *name, struct vpn_driver *vpn_driver,
                        const char *program)
 {
@@ -388,6 +402,7 @@ int vpn_register(const char *name, struct vpn_driver 
*vpn_driver,
        data->provider_driver.connect = vpn_connect;
        data->provider_driver.probe = vpn_probe;
        data->provider_driver.remove = vpn_remove;
+       data->provider_driver.save = vpn_save;
 
        if (driver_hash == NULL) {
                driver_hash = g_hash_table_new_full(g_str_hash,
diff --git a/plugins/vpn.h b/plugins/vpn.h
index a45c718..0252845 100644
--- a/plugins/vpn.h
+++ b/plugins/vpn.h
@@ -34,6 +34,7 @@ struct vpn_driver {
                        struct connman_task *task, const char *if_name);
        void (*disconnect) (void);
        int (*error_code) (int exit_code);
+       int (*save) (struct connman_provider *provider, GKeyFile *keyfile);
 };
 
 int vpn_register(const char *name, struct vpn_driver *driver,
-- 
1.7.2.5

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

Reply via email to