Merge changes I266f8403,Ia4dc4b23

* changes:
  VpnSettings: hook up the legacy VPN with IConnectivityManager.
  VpnSettings: IPSec Hybrid RSA does not need user certificate.
diff --git a/src/com/android/settings/vpn2/VpnDialog.java b/src/com/android/settings/vpn2/VpnDialog.java
index 2914b1b..b3609a6 100644
--- a/src/com/android/settings/vpn2/VpnDialog.java
+++ b/src/com/android/settings/vpn2/VpnDialog.java
@@ -218,10 +218,10 @@
                 mView.findViewById(R.id.l2tp).setVisibility(View.VISIBLE);
                 // fall through
             case VpnProfile.TYPE_IPSEC_XAUTH_RSA:
-                mView.findViewById(R.id.ipsec_ca).setVisibility(View.VISIBLE);
+                mView.findViewById(R.id.ipsec_user).setVisibility(View.VISIBLE);
                 // fall through
             case VpnProfile.TYPE_IPSEC_HYBRID_RSA:
-                mView.findViewById(R.id.ipsec_user).setVisibility(View.VISIBLE);
+                mView.findViewById(R.id.ipsec_ca).setVisibility(View.VISIBLE);
                 break;
         }
     }
@@ -243,7 +243,6 @@
 
             case VpnProfile.TYPE_L2TP_IPSEC_RSA:
             case VpnProfile.TYPE_IPSEC_XAUTH_RSA:
-            case VpnProfile.TYPE_IPSEC_HYBRID_RSA:
                 return mIpsecUserCert.getSelectedItemPosition() != 0;
         }
         return false;
@@ -308,13 +307,13 @@
                 profile.l2tpSecret = getSecret(mProfile.l2tpSecret, mL2tpSecret);
                 // fall through
             case VpnProfile.TYPE_IPSEC_XAUTH_RSA:
-                if (mIpsecCaCert.getSelectedItemPosition() != 0) {
-                    profile.ipsecCaCert = (String) mIpsecCaCert.getSelectedItem();
+                if (mIpsecUserCert.getSelectedItemPosition() != 0) {
+                    profile.ipsecUserCert = (String) mIpsecUserCert.getSelectedItem();
                 }
                 // fall through
             case VpnProfile.TYPE_IPSEC_HYBRID_RSA:
-                if (mIpsecUserCert.getSelectedItemPosition() != 0) {
-                    profile.ipsecUserCert = (String) mIpsecUserCert.getSelectedItem();
+                if (mIpsecCaCert.getSelectedItemPosition() != 0) {
+                    profile.ipsecCaCert = (String) mIpsecCaCert.getSelectedItem();
                 }
                 break;
         }
diff --git a/src/com/android/settings/vpn2/VpnSettings.java b/src/com/android/settings/vpn2/VpnSettings.java
index 56fb983..d3e8ac0 100644
--- a/src/com/android/settings/vpn2/VpnSettings.java
+++ b/src/com/android/settings/vpn2/VpnSettings.java
@@ -37,8 +37,10 @@
 import android.view.View;
 import android.widget.AdapterView.AdapterContextMenuInfo;
 
+import com.android.internal.net.VpnConfig;
 import com.android.settings.SettingsPreferenceFragment;
 
+import java.util.Arrays;
 import java.util.HashMap;
 
 public class VpnSettings extends SettingsPreferenceFragment implements
@@ -328,7 +330,7 @@
                     "name", profile.username, "password", profile.password,
                     "linkname", "vpn", "refuse-eap", "nodefaultroute",
                     "usepeerdns", "idle", "1800", "mtu", "1400", "mru", "1400",
-                    (profile.mppe ? "+mppe" : "nomppe"),
+                    "ipparam", profile.routes, (profile.mppe ? "+mppe" : "nomppe"),
                 };
                 break;
             case VpnProfile.TYPE_L2TP_IPSEC_PSK:
@@ -338,12 +340,20 @@
                     "name", profile.username, "password", profile.password,
                     "linkname", "vpn", "refuse-eap", "nodefaultroute",
                     "usepeerdns", "idle", "1800", "mtu", "1400", "mru", "1400",
+                    "ipparam", profile.routes,
                 };
                 break;
         }
 
+        VpnConfig config = new VpnConfig();
+        config.sessionName = profile.name;
+        config.routes = profile.routes;
+        if (!profile.searchDomains.isEmpty()) {
+            config.searchDomains = Arrays.asList(profile.searchDomains.split(" "));
+        }
+
         try {
-//            getService().doLegacyVpn(racoon, mtpd);
+            getService().doLegacyVpn(config, racoon, mtpd);
         } catch (Exception e) {
             Log.e(TAG, "connect", e);
         }