[network-manager-openvpn] better support comp-lzo setting
- From: Thomas Haller <thaller src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [network-manager-openvpn] better support comp-lzo setting
- Date: Fri, 13 May 2016 15:45:40 +0000 (UTC)
commit 2ecf18c25a7bee7f0122d9d666a7e11cd8b55ea3
Author: Thomas Haller <thaller redhat com>
Date: Fri May 13 16:20:04 2016 +0200
better support comp-lzo setting
Openvpn understands more options with --comp-lzo:
1a) --comp-lzo
1b) --comp-lzo adaptive
2) --comp-lzo yes
3) --comp-lzo no
4) (unspecified)
This already works for a long time, so it's safe to assume
that the openvpn version at hand understands these options
(https://github.com/OpenVPN/openvpn/commit/537073fd55b3e35720e759c5c13e9da128a2b0bb).
Add support for all combinations for import/export and running the
service.
But don't extend the GUI plugin which only shows a checkbox.
When configuring via gnome plugin, only 2) and 4) can be expressed.
https://bugzilla.gnome.org/show_bug.cgi?id=739519
properties/auth-helpers.c | 13 +++++++++++--
properties/import-export.c | 17 +++++++----------
properties/tests/test-import-export.c | 6 +++---
src/nm-openvpn-service.c | 6 ++++--
4 files changed, 25 insertions(+), 17 deletions(-)
---
diff --git a/properties/auth-helpers.c b/properties/auth-helpers.c
index 0bf4a45..d75c476 100644
--- a/properties/auth-helpers.c
+++ b/properties/auth-helpers.c
@@ -1639,7 +1639,12 @@ advanced_dialog_new (GHashTable *hash, const char *contype)
}
value = g_hash_table_lookup (hash, NM_OPENVPN_KEY_COMP_LZO);
- if (value && !strcmp (value, "yes")) {
+ if (NM_IN_STRSET (value, "yes", "adaptive")) {
+ /* the UI currently only supports "--comp-lzo yes" or omitting the "--comp-lzo"
+ * flag.
+ *
+ * Internally, we also support "--comp-lzo [adaptive]" and "--comp-lzo no"
+ * which have different meaning for openvpn. */
widget = GTK_WIDGET (gtk_builder_get_object (builder, "lzo_checkbutton"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
}
@@ -2007,8 +2012,12 @@ advanced_dialog_new_hash_from_dialog (GtkWidget *dialog, GError **error)
}
widget = GTK_WIDGET (gtk_builder_get_object (builder, "lzo_checkbutton"));
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) {
+ /* we only have a checkbox, which we either map to "--comp-lzo yes" or
+ * no "--comp-lzo" flag. In the UI, we cannot express "--comp-lzo [adaptive]"
+ * or "--comp-lzo no". */
g_hash_table_insert (hash, g_strdup (NM_OPENVPN_KEY_COMP_LZO), g_strdup ("yes"));
+ }
widget = GTK_WIDGET (gtk_builder_get_object (builder, "mssfix_checkbutton"));
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
diff --git a/properties/import-export.c b/properties/import-export.c
index 93d7b46..59d4b51 100644
--- a/properties/import-export.c
+++ b/properties/import-export.c
@@ -906,15 +906,11 @@ do_import (const char *path, const char *contents, gsize contents_len, GError **
if (NM_IN_STRSET (params[0], NMV_OVPN_TAG_COMP_LZO)) {
if (!args_params_check_nargs_minmax (params, 0, 1, &line_error))
goto handle_line_error;
- if (params[1]) {
- if (nm_streq (params[1], "no"))
- continue;
- if (!nm_streq (params[1], "yes")) {
- line_error = g_strdup_printf (_("unsupported comp-lzo argument"));
- goto handle_line_error;
- }
+ if (!NM_IN_STRSET (params[1], NULL, "no", "yes", "adaptive")) {
+ line_error = g_strdup_printf (_("unsupported comp-lzo argument"));
+ goto handle_line_error;
}
- setting_vpn_add_data_item (s_vpn, NM_OPENVPN_KEY_COMP_LZO, "yes");
+ setting_vpn_add_data_item (s_vpn, NM_OPENVPN_KEY_COMP_LZO, params[1] ?: "adaptive");
continue;
}
@@ -1751,8 +1747,9 @@ do_export_create (NMConnection *connection, const char *path, GError **error)
args_write_line_setting_value_int (f, NMV_OVPN_TAG_KEYSIZE, s_vpn, NM_OPENVPN_KEY_KEYSIZE);
- if (nm_streq0 (nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_COMP_LZO), "yes"))
- args_write_line (f, NMV_OVPN_TAG_COMP_LZO, "yes");
+ value = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_COMP_LZO);
+ if (value)
+ args_write_line (f, NMV_OVPN_TAG_COMP_LZO, value);
if (nm_streq0 (nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_FLOAT), "yes"))
args_write_line (f, NMV_OVPN_TAG_FLOAT);
diff --git a/properties/tests/test-import-export.c b/properties/tests/test-import-export.c
index 99657e3..c5d515e 100644
--- a/properties/tests/test-import-export.c
+++ b/properties/tests/test-import-export.c
@@ -232,7 +232,7 @@ test_tls_import (void)
_check_item (s_vpn, NM_OPENVPN_KEY_CONNECTION_TYPE, NM_OPENVPN_CONTYPE_TLS);
_check_item (s_vpn, NM_OPENVPN_KEY_DEV, "tun");
_check_item (s_vpn, NM_OPENVPN_KEY_PROTO_TCP, NULL);
- _check_item (s_vpn, NM_OPENVPN_KEY_COMP_LZO, "yes");
+ _check_item (s_vpn, NM_OPENVPN_KEY_COMP_LZO, "adaptive");
_check_item (s_vpn, NM_OPENVPN_KEY_FLOAT, "yes");
_check_item (s_vpn, NM_OPENVPN_KEY_RENEG_SECONDS, NULL);
_check_item (s_vpn, NM_OPENVPN_KEY_REMOTE, "173.8.149.245:1194");
@@ -325,7 +325,7 @@ test_tls_inline_import (void)
_check_item (s_vpn, NM_OPENVPN_KEY_CONNECTION_TYPE, NM_OPENVPN_CONTYPE_TLS);
_check_item (s_vpn, NM_OPENVPN_KEY_DEV, "tun");
_check_item (s_vpn, NM_OPENVPN_KEY_PROTO_TCP, NULL);
- _check_item (s_vpn, NM_OPENVPN_KEY_COMP_LZO, "yes");
+ _check_item (s_vpn, NM_OPENVPN_KEY_COMP_LZO, "adaptive");
_check_item (s_vpn, NM_OPENVPN_KEY_FLOAT, "yes");
_check_item (s_vpn, NM_OPENVPN_KEY_RENEG_SECONDS, NULL);
_check_item (s_vpn, NM_OPENVPN_KEY_REMOTE, "173.8.149.245:1194");
@@ -419,7 +419,7 @@ test_pkcs12_import (void)
_check_item (s_vpn, NM_OPENVPN_KEY_CONNECTION_TYPE, NM_OPENVPN_CONTYPE_TLS);
_check_item (s_vpn, NM_OPENVPN_KEY_DEV, "tun");
_check_item (s_vpn, NM_OPENVPN_KEY_PROTO_TCP, NULL);
- _check_item (s_vpn, NM_OPENVPN_KEY_COMP_LZO, "yes");
+ _check_item (s_vpn, NM_OPENVPN_KEY_COMP_LZO, "adaptive");
_check_item (s_vpn, NM_OPENVPN_KEY_FLOAT, NULL);
_check_item (s_vpn, NM_OPENVPN_KEY_RENEG_SECONDS, NULL);
_check_item (s_vpn, NM_OPENVPN_KEY_REMOTE, "173.8.149.245:1194");
diff --git a/src/nm-openvpn-service.c b/src/nm-openvpn-service.c
index 84e10b9..d4d660d 100644
--- a/src/nm-openvpn-service.c
+++ b/src/nm-openvpn-service.c
@@ -105,7 +105,7 @@ static ValidProperty valid_properties[] = {
{ NM_OPENVPN_KEY_CERT, G_TYPE_STRING, 0, 0, FALSE },
{ NM_OPENVPN_KEY_CIPHER, G_TYPE_STRING, 0, 0, FALSE },
{ NM_OPENVPN_KEY_KEYSIZE, G_TYPE_INT, 1, 65535, FALSE },
- { NM_OPENVPN_KEY_COMP_LZO, G_TYPE_BOOLEAN, 0, 0, FALSE },
+ { NM_OPENVPN_KEY_COMP_LZO, G_TYPE_STRING, 0, 0, FALSE },
{ NM_OPENVPN_KEY_CONNECTION_TYPE, G_TYPE_STRING, 0, 0, FALSE },
{ NM_OPENVPN_KEY_FLOAT, G_TYPE_BOOLEAN, 0, 0, FALSE },
{ NM_OPENVPN_KEY_FRAGMENT_SIZE, G_TYPE_INT, 0, G_MAXINT, FALSE },
@@ -1242,8 +1242,10 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
}
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_COMP_LZO);
- if (tmp && !strcmp (tmp, "yes"))
+ if (NM_IN_STRSET (tmp, "yes", "no", "adaptive")) {
add_openvpn_arg (args, "--comp-lzo");
+ add_openvpn_arg (args, tmp);
+ }
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_FLOAT);
if (tmp && !strcmp (tmp, "yes"))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]