vpn-provider: Do not save or load provisioned VPN connections
authorJukka Rissanen <jukka.rissanen@linux.intel.com>
Tue, 5 Mar 2013 14:06:23 +0000 (16:06 +0200)
committerPatrik Flykt <patrik.flykt@linux.intel.com>
Fri, 8 Mar 2013 11:09:37 +0000 (13:09 +0200)
The vpnd will not read or save provider data from disk. Only
way to provision VPN is by setting necessary data in VPN .config
file.

vpn/vpn-provider.c

index 5dd18d6..bb89ccf 100644 (file)
@@ -834,7 +834,16 @@ static int vpn_provider_save(struct vpn_provider *provider)
 {
        GKeyFile *keyfile;
 
-       DBG("provider %p", provider);
+       DBG("provider %p immutable %s", provider,
+                                       provider->immutable ? "yes" : "no");
+
+       if (provider->immutable == TRUE) {
+               /*
+                * Do not save providers that are provisioned via .config
+                * file.
+                */
+               return -EPERM;
+       }
 
        keyfile = g_key_file_new();
        if (keyfile == NULL)
@@ -2004,8 +2013,7 @@ int __vpn_provider_create_from_config(GHashTable *settings,
                provider->config_file = g_strdup(config_ident);
                provider->config_entry = g_strdup(config_entry);
 
-               if (provider_register(provider) == 0)
-                       vpn_provider_load(provider);
+               provider_register(provider);
 
                provider_resolv_host_addr(provider);
        }
@@ -2021,6 +2029,8 @@ int __vpn_provider_create_from_config(GHashTable *settings,
        while (g_hash_table_iter_next(&hash, &key, &value) == TRUE)
                __vpn_provider_set_string_immutable(provider, key, value);
 
+       provider->immutable = TRUE;
+
        vpn_provider_save(provider);
 
        err = provider_register(provider);