Index: network-manager-0.8/include/NetworkManagerVPN.h
===================================================================
--- network-manager-0.8.orig/include/NetworkManagerVPN.h	2010-06-16 16:30:03.000000000 -0500
+++ network-manager-0.8/include/NetworkManagerVPN.h	2010-06-16 16:30:23.000000000 -0500
@@ -166,6 +166,8 @@
  */
 #define NM_VPN_PLUGIN_IP4_CONFIG_ROUTES      "routes"
 
+#define NM_VPN_PLUGIN_IP4_CONFIG_NO_DEFAULT_ROUTE "no-default-route"
+
 /* Deprecated */
 #define NM_VPN_PLUGIN_IP4_CONFIG_GATEWAY   NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY
 
Index: network-manager-0.8/src/vpn-manager/nm-vpn-connection.c
===================================================================
--- network-manager-0.8.orig/src/vpn-manager/nm-vpn-connection.c	2010-06-16 16:30:03.000000000 -0500
+++ network-manager-0.8/src/vpn-manager/nm-vpn-connection.c	2010-06-16 17:06:40.000000000 -0500
@@ -371,6 +371,7 @@
 			    nm_ip4_route_get_prefix (route),
 			    ip_address_to_string (nm_ip4_route_get_next_hop (route)));
 	}
+	nm_info ("Forbid Default Route: %d", nm_ip4_config_get_never_default (config));
 
 	num = nm_ip4_config_get_num_nameservers (config);
 	for (i = 0; i < num; i++)
@@ -511,12 +512,23 @@
 		g_slist_free (routes);
 	}
 
-	print_vpn_config (config, priv->ip4_internal_gw, priv->tundev, priv->banner);
+	val = (GValue *) g_hash_table_lookup (config_hash, NM_VPN_PLUGIN_IP4_CONFIG_NO_DEFAULT_ROUTE);
+	if (val) {
+		if (g_value_get_int(val)) {
+			nm_ip4_config_set_never_default (config, TRUE);
+			nm_info ("Set never default to TRUE.");
+		} else {
+			nm_ip4_config_set_never_default (config, FALSE);
+			nm_info ("Set never default to FALSE.");
+		}
+	}
 
 	/* Merge in user overrides from the NMConnection's IPv4 setting */
 	s_ip4 = NM_SETTING_IP4_CONFIG (nm_connection_get_setting (priv->connection, NM_TYPE_SETTING_IP4_CONFIG));
 	nm_utils_merge_ip4_config (config, s_ip4);
 
+	print_vpn_config (config, priv->ip4_internal_gw, priv->tundev, priv->banner);
+
 	nm_system_device_set_up_down_with_iface (priv->tundev, TRUE, NULL);
 
 	if (nm_system_apply_ip4_config (priv->tundev, config, 0, NM_IP4_COMPARE_FLAG_ALL)) {
Index: network-manager-0.8/src/NetworkManagerPolicy.c
===================================================================
--- network-manager-0.8.orig/src/NetworkManagerPolicy.c	2010-06-16 16:32:39.000000000 -0500
+++ network-manager-0.8/src/NetworkManagerPolicy.c	2010-06-16 16:32:41.000000000 -0500
@@ -238,7 +238,7 @@
 			continue;
 
 		/* 'never-default' devices can't ever be the default */
-		if (s_ip4 && nm_setting_ip4_config_get_never_default (s_ip4))
+		if ((s_ip4 && nm_setting_ip4_config_get_never_default (s_ip4)) || nm_ip4_config_get_never_default (ip4_config))
 			continue;
 
 		prio = nm_device_get_priority (dev);
@@ -636,8 +636,12 @@
 		NMVPNConnectionState vpn_state;
 
 		/* If it's marked 'never-default', don't make it default */
+		ip4_config = nm_vpn_connection_get_ip4_config (candidate);
 		vpn_connection = nm_vpn_connection_get_connection (candidate);
 		g_assert (vpn_connection);
+		if (ip4_config && nm_ip4_config_get_never_default (ip4_config))
+			can_default = FALSE;
+
 		s_ip4 = (NMSettingIP4Config *) nm_connection_get_setting (vpn_connection, NM_TYPE_SETTING_IP4_CONFIG);
 		if (s_ip4 && nm_setting_ip4_config_get_never_default (s_ip4))
 			can_default = FALSE;
@@ -649,7 +653,6 @@
 
 			ip_iface = nm_vpn_connection_get_ip_iface (candidate);
 			connection = nm_vpn_connection_get_connection (candidate);
-			ip4_config = nm_vpn_connection_get_ip4_config (candidate);
 			addr = nm_ip4_config_get_address (ip4_config, 0);
 
 			parent = nm_vpn_connection_get_parent_device (candidate);
