From: Daniel Wagner <[email protected]>
---
plugins/openvpn.c | 25 +++++++++++++++++++------
1 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/plugins/openvpn.c b/plugins/openvpn.c
index 0da6c74..ed06b5d 100644
--- a/plugins/openvpn.c
+++ b/plugins/openvpn.c
@@ -130,6 +130,7 @@ static int ov_connect(struct connman_provider *provider,
struct connman_task *task, const char *if_name)
{
const char *vpnhost, *cafile, *mtu, *certfile, *keyfile;
+ const char *static_key, *ifconfig;
int err, fd;
vpnhost = connman_provider_get_string(provider, "Host");
@@ -141,6 +142,10 @@ static int ov_connect(struct connman_provider *provider,
cafile = connman_provider_get_string(provider, "OpenVPN.CACert");
certfile = connman_provider_get_string(provider, "OpenVPN.Cert");
keyfile = connman_provider_get_string(provider, "OpenVPN.Key");
+
+ static_key = connman_provider_get_string(provider, "OpenVPN.StaticKey");
+ ifconfig = connman_provider_get_string(provider, "OpenVPN.Ifconfig");
+
mtu = connman_provider_get_string(provider, "VPN.MTU");
if (mtu)
@@ -188,21 +193,29 @@ static int ov_connect(struct connman_provider *provider,
*/
connman_task_add_argument(task, "--ping-restart", "0");
- connman_task_add_argument(task, "--client", NULL);
+ if (cafile != NULL && certfile != NULL && keyfile != NULL) {
+ /* connection type: TLS */
+ connman_task_add_argument(task, "--client", NULL);
- if (cafile) {
connman_task_add_argument(task, "--ca",
(char *)cafile);
- }
- if (certfile) {
connman_task_add_argument(task, "--cert",
(char *)certfile);
- }
- if (keyfile) {
connman_task_add_argument(task, "--key",
(char *)keyfile);
+ } else if (static_key != NULL && ifconfig != NULL) {
+ /* connection type: static key */
+ connman_task_add_argument(task, "--secret",
+ (char *)static_key);
+
+ connman_task_add_argument(task, "--ifconfig",
+ (char *)ifconfig);
+ } else {
+ connman_error("Unknown connection type configuration "
+ "(either tls or static key needed)");
+ return -EINVAL;
}
fd = fileno(stderr);
--
1.7.3.2
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman