diff -Naur network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/debian/changelog network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/debian/changelog
--- network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/debian/changelog	2010-01-29 18:08:06.000000000 +0100
+++ network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/debian/changelog	2010-01-29 18:07:22.000000000 +0100
@@ -1,3 +1,9 @@
+network-manager-openvpn (0.8~a~git.20091008t123607.7c184a9-0mkulke1) karmic; urgency=low
+
+  * added options for fragmentation.
+
+ -- Magnus Kulke <magnus.kulke@radicalapproach.de>  Fri, 29 Jan 2010 10:00:00 +0200
+
 network-manager-openvpn (0.8~a~git.20091008t123607.7c184a9-0ubuntu1) karmic; urgency=low
 
   * new upstream snapshot 2009-10-08 12:36:07 (GMT)
diff -Naur network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/debian/changelog~ network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/debian/changelog~
--- network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/debian/changelog~	1970-01-01 01:00:00.000000000 +0100
+++ network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/debian/changelog~	2010-01-29 18:06:41.000000000 +0100
@@ -0,0 +1,251 @@
+network-manager-openvpn (0.8~a~git.20091008t123607.7c184a9-0ubuntu1) karmic; urgency=low
+
+  * new upstream snapshot 2009-10-08 12:36:07 (GMT)
+    + 7c184a9866daa5edd5015e0b675ca8d694b178ec 
+    - core: ensure clear error argument during validation (bgo #597593)
+
+ -- Alexander Sack <asac@ubuntu.com>  Wed, 14 Oct 2009 23:58:06 +0200
+
+network-manager-openvpn (0.8~a~git.20090928t200041.5576f56-0ubuntu1) karmic; urgency=low
+
+  * upstream snapshot 2009-09-28 20:00:41 (GMT)
+    + 5576f5634ed89f7a07dc6c633cde2a2eaf0376b4
+    - fix LP: #436899 - OpenVPN connection cannot be established
+    - fix LP: #436841 - IPv4 Advanced route options don't get to gconf
+  * rebuild vpn packages after landing of ABI padding in NM
+    - update debian/control
+
+ -- Alexander Sack <asac@ubuntu.com>  Fri, 02 Oct 2009 13:32:44 +0200
+
+network-manager-openvpn (0.8~a~git.20090831t215704.5dd87bd-0ubuntu2) karmic; urgency=low
+
+  [ Alexander Sack <asac@ubuntu.com> ]
+  * libnm-glib soname transition rebuild for NM 0.8 - LP: #427400
+
+  [ Mathieu Trudel <mathieu.tl@gmail.com> ]
+  * update GET_SOURCE code: exit on any error
+    - update debian/rules
+  * make GET_SOURCE not go mad for git versions that use a different abbrev-id syntax
+    - update debian/rules 
+  * fix noisy output: use grep -q -c rather than just -c in GET_SOURCE etc.
+    - update debian/rules
+  * add rule for get-snapshot-info
+    - update debian/rules
+
+ -- Mathieu Trudel <mathieu.tl@gmail.com>  Thu, 24 Sep 2009 16:38:13 +0200
+
+network-manager-openvpn (0.8~a~git.20090831t215704.5dd87bd-0ubuntu1) karmic; urgency=low
+
+   * upstream snapshot 2009-08-31 21:57:04 (GMT)
+     + 5dd87bdf08e4169b7388fe27bdd498ecc6962d61
+       - changes to support NM 0.8
+   * now tracking the trunk
+     + commit id: 0.8~a~git.
+   * updated tarball generation code.  Replaced get-orig-source,
+     added get-current-source; also added support for LOCAL_BRANCH
+     to support fta's build bot ( for daily builds )
+     - update debian/rules
+   * fixed tarball code; adding missing var DEB_MAJOR_VERSION;
+     deleted unused var DEB_TAG_VERSION
+     - update debian/rules
+   * fixed problem with automake
+     - update debian/rules
+   * update build-depends to NM 0.8 bits
+     - update debian/control
+   * update build-depends due to internal NM version check
+     in configure.ac; also updated Vcs-Bzr branch
+     - update debian/control
+
+ -- Tony Espy <espy@ubuntu.com>  Tue, 01 Sep 2009 16:24:41 -0400
+
+network-manager-openvpn (0.7.1-0ubuntu2) karmic; urgency=low
+
+  * debian/rules: 
+    - Update DEB_DESTDIR to $(CURDIR)/debian/network-manager-openvpn instead of
+      $(CURDIR)/debian/tmp/ so that the files we build actually get installed.
+    - Fixes LP: #395541
+  * debian/control:
+    - Add missing dependency on ${misc:Depends} for network-manager-openvpn.
+    - Bump standards version to 3.8.2.
+
+ -- Cody A.W. Somerville <cody-somerville@ubuntu.com>  Mon, 06 Jul 2009 23:36:29 -0300
+
+network-manager-openvpn (0.7.1-0ubuntu1) karmic; urgency=low
+
+  * New upstream release 0.7.1 final  
+  * updated build-depends to 0.7.1 final; add Vcs-Bzr line
+    - update debian/control
+  * added get-orig-source to generate .orig.tar.gz
+    - update debian/rules
+  * removed unused export-upstream-revision statement
+    - update .bzr-builddeb/default.conf
+
+  [ Alexander Sack <asac@ubuntu.com> ]
+  * run make distclean after autogen.sh in get-orig-source to get a clean tarball
+    - update rules
+
+ -- Tony Espy <espy@ubuntu.com>  Thu, 25 Jun 2009 14:29:37 -0400
+
+network-manager-openvpn (0.7.1~rc4.1.20090323+bzr27-0ubuntu2) jaunty; urgency=low
+
+  * fix build failure by adding libglade2-dev to build-depends
+    - update debian/control
+
+ -- Alexander Sack <asac@ubuntu.com>  Thu, 09 Apr 2009 01:58:25 +0200
+
+network-manager-openvpn (0.7.1~rc4.1.20090323+bzr27-0ubuntu1) jaunty; urgency=low
+
+  * new upstream snapshot Mar 23, 2009 aka rev 27 from
+    http://bzr-playground.gnome.org/network-manager-openvpn/branches/NETWORKMANAGER_0_7/ 
+    - update .bzr-builddeb/default.conf
+
+ -- Alexander Sack <asac@ubuntu.com>  Thu, 09 Apr 2009 01:42:50 +0200
+
+network-manager-openvpn (0.7.1~20090213+bzr14-0ubuntu1) jaunty; urgency=low
+
+  * new upstream snapshot Feb 13, 2009 aka rev 14 from
+    http://bzr-playground.gnome.org/network-manager-openvpn/branches/NETWORKMANAGER_0_7/ 
+    - update .bzr-builddeb/default.conf
+  * bump lower bound for network-manager build-depends to >= 0.7.1~
+    - update control
+
+ -- Alexander Sack <asac@ubuntu.com>  Tue, 17 Feb 2009 11:02:28 +0100
+
+network-manager-openvpn (0.7-0ubuntu1) jaunty; urgency=low
+
+  * New upstream release 0.7 final
+  * adjust network manager build-depends to >= 0.7~
+    - update debian/control
+  * remove all previously disabled patches from debian/patches/
+    - 01_fix_dbus_signal_name.diff        05_fix_nm-vpn-properties_path.diff
+      02_fix_wrong_awk_path.diff          06_pull_dns_domain.diff
+      03_allow_servercert_override.diff   04_increase_timeout.diff
+    - update debian/patches/series
+
+ -- Alexander Sack <asac@ubuntu.com>  Mon, 12 Jan 2009 13:38:15 +0100
+
+network-manager-openvpn (0.7~~svn20081015t024626-0ubuntu1) intrepid; urgency=low
+
+  * New upstream snapshot
+  * adjust network manager build-depends to >= 0.7~~svn20081015
+    - update debian/control
+
+ -- Alexander Sack <asac@ubuntu.com>  Thu, 16 Oct 2008 00:20:36 +0200
+
+network-manager-openvpn (0.7~~svn20081008t224042-0ubuntu1) intrepid; urgency=low
+
+  * New upstream snapshot, fixes
+    - LP: #275608 - nm-openvpn "Passwords with Certificate (TLS)" panel has
+      wrong labels and inverts passwords  
+  * debian/control: adjust network manager build-depends to >= 0.7~~svn20081008
+
+ -- Thierry Carrez <thierry.carrez@ubuntu.com>  Fri, 10 Oct 2008 16:08:23 +0200
+
+network-manager-openvpn (0.7~~svn20080928t225540-0ubuntu1) intrepid; urgency=low
+
+  * New upstream snapshot
+  * adjust network manager build-depends to >= 0.7~~svn20080928
+    - update debian/control
+
+ -- Alexander Sack <asac@ubuntu.com>  Mon, 29 Sep 2008 23:28:41 +0200
+
+network-manager-openvpn (0.7~~svn20080908t183521a-0ubuntu2) intrepid; urgency=low
+
+  * New upstream snapshot
+  * adjust network manager build-depends to >= 0.7~~svn20080908
+    - update debian/control
+
+ -- Alexander Sack <asac@ubuntu.com>  Wed, 10 Sep 2008 11:18:50 +0200
+
+network-manager-openvpn (0.7~~svn20080818t061112-0ubuntu1) intrepid; urgency=low
+
+  Snapshot of openvpn plugin for network manager 0.7
+  * disable all patches
+    - update debian/patches/series
+  * disable DEB_DH_MAKESHLIBS_ARGS_network-manager-openvpn in rules
+    - update debian/rules
+  * bump versioned depends on network-manager-dev and friends to >=
+    0.7~~svn20080818
+    - update debian/control
+  * add build depends on libnm-glib-dev (>= 0.7~~svn20080818)
+    - update debian/control
+  * drop DEB_CONFIGURE_EXTRA_FLAGS from rules
+    - update debian/rules
+  * use absolute path for auth-dialog in VPN .name file
+    - update nm-openvpn-service.name.in
+
+ -- Alexander Sack <asac@ubuntu.com>  Mon, 11 Aug 2008 01:40:13 +0200
+
+network-manager-openvpn (0.3.2svn2342-1ubuntu4) gutsy; urgency=low
+
+  * Fixed a null pointer dereference (LP: #147941) and fixed a leak
+    on the way.
+
+ -- Philipp Kern <pkern@debian.org>  Tue, 02 Oct 2007 15:37:32 +0200
+
+network-manager-openvpn (0.3.2svn2342-1ubuntu3) gutsy; urgency=low
+
+  [ Cleanup ]
+  * Switched to quilt for patch management.
+  * Properly activated the awk patch.
+
+  [ Bug fixes ]
+  * Increased the timeout by 5s to 15s before openvpn gets killed
+    forcefully. (LP: #117992)
+  * Corrected the path to `nm-vpn-properties' in the desktop file.
+    (LP: #123772)
+  * Pull DNS domain setting from remote OpenVPN server.
+    (LP: #138181)
+  * Introduced a new configuration option enabling users to turn off the
+    check for a proper `nsCertType=server' extension bit set in the
+    server's certificate. (LP: #94788)
+
+ -- Philipp Kern <pkern@debian.org>  Mon, 24 Sep 2007 23:20:44 +0200
+
+network-manager-openvpn (0.3.2svn2342-1ubuntu2) gutsy; urgency=low
+
+  * Rebuilt against new Network-Manager
+  * Added missing build-dep libnm-util-dev according to new
+    Network-Manager
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Fri, 15 Jun 2007 18:20:22 +0200
+
+network-manager-openvpn (0.3.2svn2342-1ubuntu1) gutsy; urgency=low
+
+  * Merge from Debian Unstable. Ubuntu changes:
+    - Fix wrong path to awk (#90838)
+    - Adjust Maintainer
+
+ -- Arthur Loiret <freacky22527@free.fr>  Tue,  5 Jun 2007 00:02:22 +0200
+
+network-manager-openvpn (0.3.2svn2342-1) unstable; urgency=low
+
+  * Initial upload to Debian (Closes: #368748)
+
+ -- Soren Hansen <sh@linux2go.dk>  Tue, 6 Mar 2007 15:50:48 +0100
+
+network-manager-openvpn (0.3.2svn2342-0ubuntu3) feisty; urgency=low
+
+  * Fix wrong path to awk. (LP: #90838)
+
+ -- Soren Hansen <sh@linux2go.dk>  Sun, 11 Mar 2007 03:12:02 +0100
+
+network-manager-openvpn (0.3.2svn2342-0ubuntu2) feisty; urgency=low
+
+  * Only run autogen.sh once during build.
+  * Reload network-manager in postinst. 
+
+ -- Soren Hansen <sh@linux2go.dk>  Tue, 6 Mar 2007 14:48:43 +0100
+
+network-manager-openvpn (0.3.2svn2342-0ubuntu1) feisty; urgency=low
+
+  * New SVN checkout (Closes: LP#88068)
+
+ -- Soren Hansen <sh@linux2go.dk>  Wed, 28 Feb 2007 11:55:22 +0100
+
+network-manager-openvpn (0.3.2svn2315-0ubuntu1) feisty; urgency=low
+
+  * Initial upload to Ubuntu
+
+ -- Soren Hansen <sh@linux2go.dk>  Sun, 18 Feb 2007 01:20:06 +0100
+
diff -Naur network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/.gitignore network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/.gitignore
--- network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/.gitignore	2009-10-14 23:55:23.000000000 +0200
+++ network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/.gitignore	1970-01-01 01:00:00.000000000 +0100
@@ -1,34 +0,0 @@
-*~
-*.o
-*.lo
-*.la
-Makefile
-Makefile.in*
-configure
-compile
-config.*
-aclocal.m4
-depcomp
-install-sh
-libtool
-ltmain.sh
-missing
-mkinstalldirs
-POTFILES
-stamp-*
-.deps
-.libs
-autom4te.cache
-intltool-*
-po/*.gmo
-po/.intltool-merge-cache
-m4/gtk-doc.m4
-m4/intltool.m4
-m4/libtool.m4
-m4/lt*.m4
-
-auth-dialog/nm-openvpn-auth-dialog
-nm-openvpn-service.name
-nm-openvpn.desktop
-src/nm-openvpn-service
-src/nm-openvpn-service-openvpn-helper
diff -Naur network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/properties/auth-helpers.c network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/properties/auth-helpers.c
--- network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/properties/auth-helpers.c	2009-10-14 23:55:23.000000000 +0200
+++ network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/properties/auth-helpers.c	2010-01-29 18:07:04.000000000 +0100
@@ -755,6 +755,15 @@
 static const char *advanced_keys[] = {
 	NM_OPENVPN_KEY_PORT,
 	NM_OPENVPN_KEY_COMP_LZO,
+
+	/* bes customization begin */
+
+	NM_OPENVPN_KEY_MSSFIX,
+	NM_OPENVPN_KEY_TUNMTU_SIZE,
+	NM_OPENVPN_KEY_FRAGMENT_SIZE,
+
+	/* bes customization end */
+
 	NM_OPENVPN_KEY_TAP_DEV,
 	NM_OPENVPN_KEY_PROTO_TCP,
 	NM_OPENVPN_KEY_CIPHER,
@@ -803,6 +812,30 @@
 	gtk_widget_set_sensitive (widget, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check)));
 }
 
+/* bes customization start */
+
+static void
+tunmtu_toggled_cb (GtkWidget *check, gpointer user_data)
+{
+	GladeXML *xml = (GladeXML *) user_data;
+	GtkWidget *widget;
+
+	widget = glade_xml_get_widget (xml, "tunmtu_spinbutton");
+	gtk_widget_set_sensitive (widget, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check)));
+}
+
+static void
+fragment_toggled_cb (GtkWidget *check, gpointer user_data)
+{
+	GladeXML *xml = (GladeXML *) user_data;
+	GtkWidget *widget;
+
+	widget = glade_xml_get_widget (xml, "fragment_spinbutton");
+	gtk_widget_set_sensitive (widget, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check)));
+}
+
+/* bes customization end */
+
 static void
 reneg_toggled_cb (GtkWidget *check, gpointer user_data)
 {
@@ -1071,12 +1104,88 @@
 		gtk_widget_set_sensitive (widget, FALSE);
 	}
 
+	/* bes customization start */
+
+	widget = glade_xml_get_widget (xml, "tunmtu_checkbutton");
+	g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (tunmtu_toggled_cb), xml);
+
+	value = g_hash_table_lookup (hash, NM_OPENVPN_KEY_TUNMTU_SIZE);
+	if (value && strlen (value)) {
+		long int tmp;
+
+		errno = 0;
+		tmp = strtol (value, NULL, 10);
+		if (errno == 0 && tmp > 0 && tmp < 65536) {
+			gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
+
+			widget = glade_xml_get_widget (xml, "tunmtu_spinbutton");
+			gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget),
+			                           (gdouble) tmp);
+		}
+		gtk_widget_set_sensitive (widget, TRUE);
+	} else {
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE);
+
+		widget = glade_xml_get_widget (xml, "tunmtu_spinbutton");
+		gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), 1500.0);
+		gtk_widget_set_sensitive (widget, FALSE);
+	}
+
+	widget = glade_xml_get_widget (xml, "fragment_checkbutton");
+	g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (fragment_toggled_cb), xml);
+
+	value = g_hash_table_lookup (hash, NM_OPENVPN_KEY_FRAGMENT_SIZE);
+	if (value && strlen (value)) {
+		long int tmp;
+
+		errno = 0;
+		tmp = strtol (value, NULL, 10);
+		if (errno == 0 && tmp > 0 && tmp < 65536) {
+			gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
+
+			widget = glade_xml_get_widget (xml, "fragment_spinbutton");
+			gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget),
+			                           (gdouble) tmp);
+		}
+		gtk_widget_set_sensitive (widget, TRUE);
+	} else {
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE);
+
+		widget = glade_xml_get_widget (xml, "fragment_spinbutton");
+		gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), 1300.0);
+		gtk_widget_set_sensitive (widget, FALSE);
+	}
+
+	value = g_hash_table_lookup (hash, NM_OPENVPN_KEY_MSSFIX);
+	if (value && !strcmp (value, "yes")) {
+		widget = glade_xml_get_widget (xml, "mssfix_checkbutton");
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
+	}
+
+	/* bes customization end */
+
 	value = g_hash_table_lookup (hash, NM_OPENVPN_KEY_COMP_LZO);
 	if (value && !strcmp (value, "yes")) {
 		widget = glade_xml_get_widget (xml, "lzo_checkbutton");
 		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
 	}
 
+	value = g_hash_table_lookup (hash, NM_OPENVPN_KEY_COMP_LZO);
+	if (value && !strcmp (value, "yes")) {
+		widget = glade_xml_get_widget (xml, "lzo_checkbutton");
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
+	}
+
+	/* bes customization start */
+
+	value = g_hash_table_lookup (hash, NM_OPENVPN_KEY_MSSFIX);
+	if (value && !strcmp (value, "yes")) {
+		widget = glade_xml_get_widget (xml, "mssfix_checkbutton");
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
+	}
+
+	/* bes customization end */
+
 	value = g_hash_table_lookup (hash, NM_OPENVPN_KEY_PROTO_TCP);
 	if (value && !strcmp (value, "yes")) {
 		widget = glade_xml_get_widget (xml, "tcp_checkbutton");
@@ -1180,6 +1289,28 @@
 		g_hash_table_insert (hash, g_strdup (NM_OPENVPN_KEY_RENEG_SECONDS), g_strdup_printf ("%d", reneg_seconds));
 	}
 
+	/* bes customization start */
+
+	widget = glade_xml_get_widget (xml, "tunmtu_checkbutton");
+	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) {
+		int tunmtu_size;
+
+		widget = glade_xml_get_widget (xml, "tunmtu_spinbutton");
+		tunmtu_size = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget));
+		g_hash_table_insert (hash, g_strdup (NM_OPENVPN_KEY_TUNMTU_SIZE), g_strdup_printf ("%d", tunmtu_size));
+	}
+
+	widget = glade_xml_get_widget (xml, "fragment_checkbutton");
+	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) {
+		int fragment_size;
+
+		widget = glade_xml_get_widget (xml, "fragment_spinbutton");
+		fragment_size = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget));
+		g_hash_table_insert (hash, g_strdup (NM_OPENVPN_KEY_FRAGMENT_SIZE), g_strdup_printf ("%d", fragment_size));
+	}
+
+	/* bes customization end */
+
 	widget = glade_xml_get_widget (xml, "port_checkbutton");
 	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) {
 		int port;
@@ -1193,6 +1324,14 @@
 	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
 		g_hash_table_insert (hash, g_strdup (NM_OPENVPN_KEY_COMP_LZO), g_strdup ("yes"));
 
+	/* bes customization start */
+
+	widget = glade_xml_get_widget (xml, "mssfix_checkbutton");
+	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
+		g_hash_table_insert (hash, g_strdup (NM_OPENVPN_KEY_MSSFIX), g_strdup ("yes"));
+
+	/* bes customization end */
+
 	widget = glade_xml_get_widget (xml, "tcp_checkbutton");
 	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
 		g_hash_table_insert (hash, g_strdup (NM_OPENVPN_KEY_PROTO_TCP), g_strdup ("yes"));
diff -Naur network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/properties/import-export.c network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/properties/import-export.c
--- network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/properties/import-export.c	2009-10-14 23:55:23.000000000 +0200
+++ network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/properties/import-export.c	2010-01-29 18:07:04.000000000 +0100
@@ -59,6 +59,14 @@
 #define AUTH_TAG "auth"
 #define RENEG_SEC_TAG "reneg-sec"
 
+/* bes customization start */
+
+#define MSSFIX_TAG "mssfix"
+#define TUNMTU_TAG "tun-mtu"
+#define FRAGMENT_TAG "fragment"
+
+/* bes customization end */
+
 static gboolean
 handle_path_item (const char *line,
                   const char *tag,
@@ -232,6 +240,57 @@
 			continue;
 		}
 
+		/* bes customization start */
+
+		if (!strncmp (*line, MSSFIX_TAG, strlen (MSSFIX_TAG))) {
+			nm_setting_vpn_add_data_item (s_vpn, NM_OPENVPN_KEY_MSSFIX, "yes");
+			continue;
+		}
+
+		if (!strncmp (*line, TUNMTU_TAG, strlen (TUNMTU_TAG))) {
+			items = get_args (*line + strlen (TUNMTU_TAG));
+			if (!items)
+				continue;
+
+			if (g_strv_length (items) >= 1) {
+				glong secs;
+
+				errno = 0;
+				secs = strtol (items[0], NULL, 10);
+				if ((errno == 0) && (secs >= 0) && (secs < 0xffff)) {
+					char *tmp = g_strdup_printf ("%d", (guint32) secs);
+					nm_setting_vpn_add_data_item (s_vpn, NM_OPENVPN_KEY_TUNMTU_SIZE, tmp);
+					g_free (tmp);
+				} else
+					g_warning ("%s: invalid size in option '%s'", __func__, *line);
+			}
+			g_strfreev (items);
+			continue;
+		}
+
+		if (!strncmp (*line, FRAGMENT_TAG, strlen (FRAGMENT_TAG))) {
+			items = get_args (*line + strlen (FRAGMENT_TAG));
+			if (!items)
+				continue;
+
+			if (g_strv_length (items) >= 1) {
+				glong secs;
+
+				errno = 0;
+				secs = strtol (items[0], NULL, 10);
+				if ((errno == 0) && (secs >= 0) && (secs < 0xffff)) {
+					char *tmp = g_strdup_printf ("%d", (guint32) secs);
+					nm_setting_vpn_add_data_item (s_vpn, NM_OPENVPN_KEY_FRAGMENT_SIZE, tmp);
+					g_free (tmp);
+				} else
+					g_warning ("%s: invalid size in option '%s'", __func__, *line);
+			}
+			g_strfreev (items);
+			continue;
+		}
+
+		/* bes customization end */
+
 		if (!strncmp (*line, COMP_TAG, strlen (COMP_TAG))) {
 			nm_setting_vpn_add_data_item (s_vpn, NM_OPENVPN_KEY_COMP_LZO, "yes");
 			continue;
diff -Naur network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/properties/nm-openvpn-dialog.glade network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/properties/nm-openvpn-dialog.glade
--- network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/properties/nm-openvpn-dialog.glade	2009-10-14 23:55:23.000000000 +0200
+++ network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/properties/nm-openvpn-dialog.glade	2010-01-29 18:07:04.000000000 +0100
@@ -835,7 +835,6 @@
                       <widget class="GtkImage" id="image1">
                         <property name="visible">True</property>
                         <property name="stock">gtk-preferences</property>
-                        <property name="icon-size">4</property>
                       </widget>
                       <packing>
                         <property name="expand">False</property>
@@ -1106,6 +1105,114 @@
               </packing>
             </child>
             <child>
+              <widget class="GtkVBox" id="vbox2">
+                <property name="visible">True</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <widget class="GtkHBox" id="hbox4">
+                    <property name="visible">True</property>
+                    <child>
+                      <widget class="GtkCheckButton" id="tunmtu_checkbutton">
+                        <property name="label" translatable="yes">Use custom _TUN MTU size:</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="draw_indicator">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkSpinButton" id="tunmtu_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">&#x2022;</property>
+                        <property name="adjustment">1500 1 65535 1 10 10</property>
+                        <property name="climb_rate">1</property>
+                        <property name="numeric">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkHBox" id="hbox5">
+                    <property name="visible">True</property>
+                    <child>
+                      <widget class="GtkCheckButton" id="fragment_checkbutton">
+                        <property name="label" translatable="yes">Use custom _fragment size:</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="draw_indicator">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkSpinButton" id="fragment_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">&#x2022;</property>
+                        <property name="adjustment">1300 1 65535 1 10 10</property>
+                        <property name="climb_rate">1</property>
+                        <property name="numeric">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkCheckButton" id="mssfix_checkbutton">
+                    <property name="label" translatable="yes">Enable _mssfix</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="draw_indicator">True</property>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">Fragmentation</property>
+              </widget>
+              <packing>
+                <property name="position">3</property>
+                <property name="tab_fill">False</property>
+                <property name="type">tab</property>
+              </packing>
+            </child>
+            <child>
               <widget class="GtkTable" id="table7">
                 <property name="visible">True</property>
                 <property name="border_width">12</property>
@@ -1211,7 +1318,7 @@
                 </child>
               </widget>
               <packing>
-                <property name="position">2</property>
+                <property name="position">3</property>
               </packing>
             </child>
             <child>
@@ -1220,7 +1327,7 @@
                 <property name="label" translatable="yes">TLS Authentication</property>
               </widget>
               <packing>
-                <property name="position">2</property>
+                <property name="position">3</property>
                 <property name="tab_fill">False</property>
                 <property name="type">tab</property>
               </packing>
diff -Naur network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/src/nm-openvpn-service.c network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/src/nm-openvpn-service.c
--- network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/src/nm-openvpn-service.c	2009-10-14 23:55:23.000000000 +0200
+++ network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/src/nm-openvpn-service.c	2010-01-29 18:07:04.000000000 +0100
@@ -88,6 +88,15 @@
 	{ NM_OPENVPN_KEY_CERT,                 G_TYPE_STRING, 0, 0, FALSE },
 	{ NM_OPENVPN_KEY_CIPHER,               G_TYPE_STRING, 0, 0, FALSE },
 	{ NM_OPENVPN_KEY_COMP_LZO,             G_TYPE_BOOLEAN, 0, 0, FALSE },
+
+/* bes customization start */
+
+	{ NM_OPENVPN_KEY_MSSFIX,               G_TYPE_BOOLEAN, 0, 0, FALSE },
+	{ NM_OPENVPN_KEY_TUNMTU_SIZE,          G_TYPE_INT, 0, G_MAXINT, FALSE },
+	{ NM_OPENVPN_KEY_FRAGMENT_SIZE,        G_TYPE_INT, 0, G_MAXINT, FALSE },
+
+/* bes customization end */
+
 	{ NM_OPENVPN_KEY_CONNECTION_TYPE,      G_TYPE_STRING, 0, 0, FALSE },
 	{ NM_OPENVPN_KEY_TAP_DEV,              G_TYPE_BOOLEAN, 0, 0, FALSE },
 	{ NM_OPENVPN_KEY_KEY,                  G_TYPE_STRING, 0, 0, FALSE },
@@ -770,6 +779,46 @@
 		add_openvpn_arg (args, "nm-openvpn");
 	}
 
+ 	/* bes customizations begin */
+
+	/* TUN MTU size */
+	tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_TUNMTU_SIZE);
+	if (tmp && strlen (tmp)) {
+		add_openvpn_arg (args, "--tun-mtu");
+		if (!add_openvpn_arg_int (args, tmp)) {
+			g_set_error (error,
+			             NM_VPN_PLUGIN_ERROR,
+			             NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS,
+			             "Invalid TUN MTU size '%s'.",
+			             tmp);
+			free_openvpn_args (args);
+			return FALSE;
+		}
+	}
+
+	/* fragment size */
+	tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_FRAGMENT_SIZE);
+	if (tmp && strlen (tmp)) {
+		add_openvpn_arg (args, "--fragment");
+		if (!add_openvpn_arg_int (args, tmp)) {
+			g_set_error (error,
+			             NM_VPN_PLUGIN_ERROR,
+			             NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS,
+			             "Invalid fragment size '%s'.",
+			             tmp);
+			free_openvpn_args (args);
+			return FALSE;
+		}
+	}
+
+	/* mssfix */
+	tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_MSSFIX);
+	if (tmp && !strcmp (tmp, "yes")) {
+		add_openvpn_arg (args, "--mssfix");
+	}
+
+	/* bes customizations end */
+
 	/* Punch script security in the face; this option was added to OpenVPN 2.1-rc9
 	 * and defaults to disallowing any scripts, a behavior change from previous
 	 * versions.
diff -Naur network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/src/nm-openvpn-service.h network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/src/nm-openvpn-service.h
--- network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9.orig/src/nm-openvpn-service.h	2009-10-14 23:55:23.000000000 +0200
+++ network-manager-openvpn-0.8~a~git.20091008t123607.7c184a9/src/nm-openvpn-service.h	2010-01-29 18:07:04.000000000 +0100
@@ -43,6 +43,15 @@
 #define NM_OPENVPN_KEY_CERT "cert"
 #define NM_OPENVPN_KEY_CIPHER "cipher"
 #define NM_OPENVPN_KEY_COMP_LZO "comp-lzo"
+
+/* bes customization start */
+
+#define NM_OPENVPN_KEY_MSSFIX "mssfix"
+#define NM_OPENVPN_KEY_TUNMTU_SIZE "tunmtu-size"
+#define NM_OPENVPN_KEY_FRAGMENT_SIZE "fragment-size"
+
+/* bes customization end */
+
 #define NM_OPENVPN_KEY_CONNECTION_TYPE "connection-type"
 #define NM_OPENVPN_KEY_TAP_DEV "tap-dev"
 #define NM_OPENVPN_KEY_KEY "key"
