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