openvpn: Set default options if user has not supplied a config file
authorJukka Rissanen <jukka.rissanen@linux.intel.com>
Thu, 22 Nov 2012 12:05:19 +0000 (14:05 +0200)
committerDaniel Wagner <daniel.wagner@bmw-carit.de>
Fri, 23 Nov 2012 12:25:37 +0000 (13:25 +0100)
If the user is using config file option, then do not set the optional
default options. All the mandatory options needed for connman and
openvpn interaction are still set in command line.

vpn/plugins/openvpn.c

index 07c794b..84583cd 100644 (file)
@@ -242,13 +242,23 @@ static int ov_connect(struct vpn_provider *provider,
 
        task_append_config_data(provider, task);
 
-       option = vpn_provider_get_string(provider, "OpenVPN.TLSAuth");
-       if (option != NULL) {
-               connman_task_add_argument(task, "--tls-auth", option);
-               option = vpn_provider_get_string(provider,
-                               "OpenVPN.TLSAuthDir");
-               if (option != NULL)
-                       connman_task_add_argument(task, option, NULL);
+       option = vpn_provider_get_string(provider, "OpenVPN.ConfigFile");
+       if (option == NULL) {
+               /*
+                * Set some default options if user has no config file.
+                */
+               option = vpn_provider_get_string(provider, "OpenVPN.TLSAuth");
+               if (option != NULL) {
+                       connman_task_add_argument(task, "--tls-auth", option);
+                       option = vpn_provider_get_string(provider,
+                                                       "OpenVPN.TLSAuthDir");
+                       if (option != NULL)
+                               connman_task_add_argument(task, option, NULL);
+               }
+
+               connman_task_add_argument(task, "--nobind", NULL);
+               connman_task_add_argument(task, "--persist-key", NULL);
+               connman_task_add_argument(task, "--client", NULL);
        }
 
        connman_task_add_argument(task, "--syslog", NULL);
@@ -274,8 +284,6 @@ static int ov_connect(struct vpn_provider *provider,
        connman_task_add_argument(task, "--dev", if_name);
        connman_task_add_argument(task, "--dev-type", "tun");
 
-       connman_task_add_argument(task, "--nobind", NULL);
-       connman_task_add_argument(task, "--persist-key", NULL);
        connman_task_add_argument(task, "--persist-tun", NULL);
 
        connman_task_add_argument(task, "--route-noexec", NULL);
@@ -291,8 +299,6 @@ static int ov_connect(struct vpn_provider *provider,
         */
        connman_task_add_argument(task, "--ping-restart", "0");
 
-       connman_task_add_argument(task, "--client", NULL);
-
        fd = fileno(stderr);
        err = connman_task_run(task, vpn_died, provider,
                        NULL, &fd, &fd);