Loading services/core/java/com/android/server/connectivity/Vpn.java +36 −9 Original line number Original line Diff line number Diff line Loading @@ -85,6 +85,7 @@ import android.net.NetworkScore; import android.net.NetworkSpecifier; import android.net.NetworkSpecifier; import android.net.RouteInfo; import android.net.RouteInfo; import android.net.TelephonyNetworkSpecifier; import android.net.TelephonyNetworkSpecifier; import android.net.TransportInfo; import android.net.UidRangeParcel; import android.net.UidRangeParcel; import android.net.UnderlyingNetworkInfo; import android.net.UnderlyingNetworkInfo; import android.net.Uri; import android.net.Uri; Loading @@ -107,6 +108,8 @@ import android.net.ipsec.ike.exceptions.IkeNetworkLostException; import android.net.ipsec.ike.exceptions.IkeNonProtocolException; import android.net.ipsec.ike.exceptions.IkeNonProtocolException; import android.net.ipsec.ike.exceptions.IkeProtocolException; import android.net.ipsec.ike.exceptions.IkeProtocolException; import android.net.ipsec.ike.exceptions.IkeTimeoutException; import android.net.ipsec.ike.exceptions.IkeTimeoutException; import android.net.vcn.VcnGatewayConnectionConfig; import android.net.vcn.VcnTransportInfo; import android.os.Binder; import android.os.Binder; import android.os.Build.VERSION_CODES; import android.os.Build.VERSION_CODES; import android.os.Bundle; import android.os.Bundle; Loading Loading @@ -3556,39 +3559,63 @@ public class Vpn { } } private int guessEspIpVersionForNetwork() { private int guessEspIpVersionForNetwork() { final CarrierConfigInfo carrierconfig = getCarrierConfig(); if (mUnderlyingNetworkCapabilities.getTransportInfo() instanceof VcnTransportInfo) { Log.d(TAG, "Running over VCN, esp IP version is auto"); return ESP_IP_VERSION_AUTO; } final CarrierConfigInfo carrierconfig = getCarrierConfigForUnderlyingNetwork(); final int ipVersion = (carrierconfig != null) final int ipVersion = (carrierconfig != null) ? carrierconfig.ipVersion : ESP_IP_VERSION_AUTO; ? carrierconfig.ipVersion : ESP_IP_VERSION_AUTO; if (carrierconfig != null) { if (carrierconfig != null) { Log.d(TAG, "Get customized IP version(" + ipVersion + ") on SIM(" Log.d(TAG, "Get customized IP version (" + ipVersion + ") on SIM (mccmnc=" + carrierconfig.mccMnc + ")"); + carrierconfig.mccMnc + ")"); } } return ipVersion; return ipVersion; } } private int guessEspEncapTypeForNetwork() { private int guessEspEncapTypeForNetwork() { final CarrierConfigInfo carrierconfig = getCarrierConfig(); if (mUnderlyingNetworkCapabilities.getTransportInfo() instanceof VcnTransportInfo) { Log.d(TAG, "Running over VCN, encap type is auto"); return ESP_ENCAP_TYPE_AUTO; } final CarrierConfigInfo carrierconfig = getCarrierConfigForUnderlyingNetwork(); final int encapType = (carrierconfig != null) final int encapType = (carrierconfig != null) ? carrierconfig.encapType : ESP_ENCAP_TYPE_AUTO; ? carrierconfig.encapType : ESP_ENCAP_TYPE_AUTO; if (carrierconfig != null) { if (carrierconfig != null) { Log.d(TAG, "Get customized encap type(" + encapType + ") on SIM(" Log.d(TAG, "Get customized encap type (" + encapType + ") on SIM (mccmnc=" + carrierconfig.mccMnc + ")"); + carrierconfig.mccMnc + ")"); } } return encapType; return encapType; } } private int guessNattKeepaliveTimerForNetwork() { private int guessNattKeepaliveTimerForNetwork() { final CarrierConfigInfo carrierconfig = getCarrierConfig(); final TransportInfo transportInfo = mUnderlyingNetworkCapabilities.getTransportInfo(); final int natKeepalive = (carrierconfig != null) if (transportInfo instanceof VcnTransportInfo) { final int nattKeepaliveSec = ((VcnTransportInfo) transportInfo).getMinUdpPort4500NatTimeoutSeconds(); Log.d(TAG, "Running over VCN, keepalive timer : " + nattKeepaliveSec + "s"); if (VcnGatewayConnectionConfig.MIN_UDP_PORT_4500_NAT_TIMEOUT_UNSET != nattKeepaliveSec) { return nattKeepaliveSec; } // else fall back to carrier config, if any } final CarrierConfigInfo carrierconfig = getCarrierConfigForUnderlyingNetwork(); final int nattKeepaliveSec = (carrierconfig != null) ? carrierconfig.keepaliveDelayMs : AUTOMATIC_KEEPALIVE_DELAY_SECONDS; ? carrierconfig.keepaliveDelayMs : AUTOMATIC_KEEPALIVE_DELAY_SECONDS; if (carrierconfig != null) { if (carrierconfig != null) { Log.d(TAG, "Get customized keepalive(" + natKeepalive + ") on SIM(" Log.d(TAG, "Get customized keepalive (" + nattKeepaliveSec + "s) on SIM (mccmnc=" + carrierconfig.mccMnc + ")"); + carrierconfig.mccMnc + ")"); } } return natKeepalive; return nattKeepaliveSec; } } private CarrierConfigInfo getCarrierConfig() { /** * Returns the carrier config for the underlying network, or null if not a cell network. */ @Nullable private CarrierConfigInfo getCarrierConfigForUnderlyingNetwork() { final int subId = getCellSubIdForNetworkCapabilities(mUnderlyingNetworkCapabilities); final int subId = getCellSubIdForNetworkCapabilities(mUnderlyingNetworkCapabilities); if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { Log.d(TAG, "Underlying network is not a cellular network"); Log.d(TAG, "Underlying network is not a cellular network"); Loading Loading
services/core/java/com/android/server/connectivity/Vpn.java +36 −9 Original line number Original line Diff line number Diff line Loading @@ -85,6 +85,7 @@ import android.net.NetworkScore; import android.net.NetworkSpecifier; import android.net.NetworkSpecifier; import android.net.RouteInfo; import android.net.RouteInfo; import android.net.TelephonyNetworkSpecifier; import android.net.TelephonyNetworkSpecifier; import android.net.TransportInfo; import android.net.UidRangeParcel; import android.net.UidRangeParcel; import android.net.UnderlyingNetworkInfo; import android.net.UnderlyingNetworkInfo; import android.net.Uri; import android.net.Uri; Loading @@ -107,6 +108,8 @@ import android.net.ipsec.ike.exceptions.IkeNetworkLostException; import android.net.ipsec.ike.exceptions.IkeNonProtocolException; import android.net.ipsec.ike.exceptions.IkeNonProtocolException; import android.net.ipsec.ike.exceptions.IkeProtocolException; import android.net.ipsec.ike.exceptions.IkeProtocolException; import android.net.ipsec.ike.exceptions.IkeTimeoutException; import android.net.ipsec.ike.exceptions.IkeTimeoutException; import android.net.vcn.VcnGatewayConnectionConfig; import android.net.vcn.VcnTransportInfo; import android.os.Binder; import android.os.Binder; import android.os.Build.VERSION_CODES; import android.os.Build.VERSION_CODES; import android.os.Bundle; import android.os.Bundle; Loading Loading @@ -3556,39 +3559,63 @@ public class Vpn { } } private int guessEspIpVersionForNetwork() { private int guessEspIpVersionForNetwork() { final CarrierConfigInfo carrierconfig = getCarrierConfig(); if (mUnderlyingNetworkCapabilities.getTransportInfo() instanceof VcnTransportInfo) { Log.d(TAG, "Running over VCN, esp IP version is auto"); return ESP_IP_VERSION_AUTO; } final CarrierConfigInfo carrierconfig = getCarrierConfigForUnderlyingNetwork(); final int ipVersion = (carrierconfig != null) final int ipVersion = (carrierconfig != null) ? carrierconfig.ipVersion : ESP_IP_VERSION_AUTO; ? carrierconfig.ipVersion : ESP_IP_VERSION_AUTO; if (carrierconfig != null) { if (carrierconfig != null) { Log.d(TAG, "Get customized IP version(" + ipVersion + ") on SIM(" Log.d(TAG, "Get customized IP version (" + ipVersion + ") on SIM (mccmnc=" + carrierconfig.mccMnc + ")"); + carrierconfig.mccMnc + ")"); } } return ipVersion; return ipVersion; } } private int guessEspEncapTypeForNetwork() { private int guessEspEncapTypeForNetwork() { final CarrierConfigInfo carrierconfig = getCarrierConfig(); if (mUnderlyingNetworkCapabilities.getTransportInfo() instanceof VcnTransportInfo) { Log.d(TAG, "Running over VCN, encap type is auto"); return ESP_ENCAP_TYPE_AUTO; } final CarrierConfigInfo carrierconfig = getCarrierConfigForUnderlyingNetwork(); final int encapType = (carrierconfig != null) final int encapType = (carrierconfig != null) ? carrierconfig.encapType : ESP_ENCAP_TYPE_AUTO; ? carrierconfig.encapType : ESP_ENCAP_TYPE_AUTO; if (carrierconfig != null) { if (carrierconfig != null) { Log.d(TAG, "Get customized encap type(" + encapType + ") on SIM(" Log.d(TAG, "Get customized encap type (" + encapType + ") on SIM (mccmnc=" + carrierconfig.mccMnc + ")"); + carrierconfig.mccMnc + ")"); } } return encapType; return encapType; } } private int guessNattKeepaliveTimerForNetwork() { private int guessNattKeepaliveTimerForNetwork() { final CarrierConfigInfo carrierconfig = getCarrierConfig(); final TransportInfo transportInfo = mUnderlyingNetworkCapabilities.getTransportInfo(); final int natKeepalive = (carrierconfig != null) if (transportInfo instanceof VcnTransportInfo) { final int nattKeepaliveSec = ((VcnTransportInfo) transportInfo).getMinUdpPort4500NatTimeoutSeconds(); Log.d(TAG, "Running over VCN, keepalive timer : " + nattKeepaliveSec + "s"); if (VcnGatewayConnectionConfig.MIN_UDP_PORT_4500_NAT_TIMEOUT_UNSET != nattKeepaliveSec) { return nattKeepaliveSec; } // else fall back to carrier config, if any } final CarrierConfigInfo carrierconfig = getCarrierConfigForUnderlyingNetwork(); final int nattKeepaliveSec = (carrierconfig != null) ? carrierconfig.keepaliveDelayMs : AUTOMATIC_KEEPALIVE_DELAY_SECONDS; ? carrierconfig.keepaliveDelayMs : AUTOMATIC_KEEPALIVE_DELAY_SECONDS; if (carrierconfig != null) { if (carrierconfig != null) { Log.d(TAG, "Get customized keepalive(" + natKeepalive + ") on SIM(" Log.d(TAG, "Get customized keepalive (" + nattKeepaliveSec + "s) on SIM (mccmnc=" + carrierconfig.mccMnc + ")"); + carrierconfig.mccMnc + ")"); } } return natKeepalive; return nattKeepaliveSec; } } private CarrierConfigInfo getCarrierConfig() { /** * Returns the carrier config for the underlying network, or null if not a cell network. */ @Nullable private CarrierConfigInfo getCarrierConfigForUnderlyingNetwork() { final int subId = getCellSubIdForNetworkCapabilities(mUnderlyingNetworkCapabilities); final int subId = getCellSubIdForNetworkCapabilities(mUnderlyingNetworkCapabilities); if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { Log.d(TAG, "Underlying network is not a cellular network"); Log.d(TAG, "Underlying network is not a cellular network"); Loading