Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a12aa4d8 authored by Sarah Chin's avatar Sarah Chin Committed by Gerrit Code Review
Browse files

Merge "Support IPv6 MTU API/HAL changes"

parents a94ba362 709a225b
Loading
Loading
Loading
Loading
+43 −24
Original line number Diff line number Diff line
@@ -1440,7 +1440,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
        // ServiceState.RIL_RADIO_TECHNOLOGY_XXXX.
        dpi.bearerBitmap = ServiceState.convertNetworkTypeBitmaskToBearerBitmask(
                dp.getBearerBitmask()) << 1;
        dpi.mtu = dp.getMtu();
        dpi.mtu = dp.getMtuV4();
        dpi.mvnoType = MvnoType.NONE;
        dpi.mvnoMatchData = "";

@@ -1474,7 +1474,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
        // ServiceState.RIL_RADIO_TECHNOLOGY_XXXX.
        dpi.bearerBitmap = ServiceState.convertNetworkTypeBitmaskToBearerBitmask(
                dp.getBearerBitmask()) << 1;
        dpi.mtu = dp.getMtu();
        dpi.mtu = dp.getMtuV4();
        dpi.persistent = dp.isPersistent();
        dpi.preferred = dp.isPreferred();

@@ -1494,29 +1494,30 @@ public class RIL extends BaseCommands implements CommandsInterface {
        android.hardware.radio.V1_5.DataProfileInfo dpi =
                new android.hardware.radio.V1_5.DataProfileInfo();

        dpi.base.apn = dp.getApn();
        dpi.base.protocol = dp.getProtocolType();
        dpi.base.roamingProtocol = dp.getRoamingProtocolType();
        dpi.base.authType = dp.getAuthType();
        dpi.base.user = dp.getUserName();
        dpi.base.password = dp.getPassword();
        dpi.base.type = dp.getType();
        dpi.base.maxConnsTime = dp.getMaxConnectionsTime();
        dpi.base.maxConns = dp.getMaxConnections();
        dpi.base.waitTime = dp.getWaitTime();
        dpi.base.enabled = dp.isEnabled();
        dpi.apn = dp.getApn();
        dpi.protocol = dp.getProtocolType();
        dpi.roamingProtocol = dp.getRoamingProtocolType();
        dpi.authType = dp.getAuthType();
        dpi.user = dp.getUserName();
        dpi.password = dp.getPassword();
        dpi.type = dp.getType();
        dpi.maxConnsTime = dp.getMaxConnectionsTime();
        dpi.maxConns = dp.getMaxConnections();
        dpi.waitTime = dp.getWaitTime();
        dpi.enabled = dp.isEnabled();
        dpi.supportedApnTypesBitmap = dp.getSupportedApnTypesBitmask();
        // Shift by 1 bit due to the discrepancy between
        // android.hardware.radio.V1_0.RadioAccessFamily and the bitmask version of
        // ServiceState.RIL_RADIO_TECHNOLOGY_XXXX.
        dpi.base.bearerBitmap = ServiceState.convertNetworkTypeBitmaskToBearerBitmask(
        dpi.bearerBitmap = ServiceState.convertNetworkTypeBitmaskToBearerBitmask(
            dp.getBearerBitmask()) << 1;
        dpi.base.mtu = dp.getMtu();
        dpi.base.persistent = dp.isPersistent();
        dpi.base.preferred = dp.isPreferred();
        dpi.mtuV4 = dp.getMtuV4();
        dpi.mtuV6 = dp.getMtuV6();
        dpi.persistent = dp.isPersistent();
        dpi.preferred = dp.isPreferred();

        // profile id is only meaningful when it's persistent on the modem.
        dpi.base.profileId = (dpi.base.persistent) ? dp.getProfileId() : DataProfileId.INVALID;
        dpi.profileId = (dpi.persistent) ? dp.getProfileId() : DataProfileId.INVALID;

        return dpi;
    }
@@ -6325,7 +6326,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
    }

    /**
     * Convert SetupDataCallResult defined in 1.0 or 1.4/types.hal into DataCallResponse
     * Convert SetupDataCallResult defined in 1.0, 1.4, or 1.5 types.hal into DataCallResponse
     * @param dcResult setup data call result
     * @return converted DataCallResponse object
     */
@@ -6333,7 +6334,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
    public static DataCallResponse convertDataCallResult(Object dcResult) {
        if (dcResult == null) return null;

        int cause, suggestedRetryTime, cid, active, mtu;
        int cause, suggestedRetryTime, cid, active, mtu, mtuV4, mtuV6;
        String ifname;
        int protocolType;
        String[] addresses = null;
@@ -6342,7 +6343,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
        String[] pcscfs = null;

        List<LinkAddress> laList = new ArrayList<>();
        int version = 0;
        int version;

        if (dcResult instanceof android.hardware.radio.V1_0.SetupDataCallResult) {
            final android.hardware.radio.V1_0.SetupDataCallResult result =
@@ -6366,6 +6367,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
                pcscfs = result.pcscf.split("\\s+");
            }
            mtu = result.mtu;
            mtuV4 = mtuV6 = 0;
            version = 0;
        } else if (dcResult instanceof android.hardware.radio.V1_4.SetupDataCallResult) {
            final android.hardware.radio.V1_4.SetupDataCallResult result =
@@ -6381,6 +6383,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
            gateways = result.gateways.stream().toArray(String[]::new);
            pcscfs = result.pcscf.stream().toArray(String[]::new);
            mtu = result.mtu;
            mtuV4 = mtuV6 = 0;
            version = 4;
        } else if (dcResult instanceof android.hardware.radio.V1_5.SetupDataCallResult) {
            final android.hardware.radio.V1_5.SetupDataCallResult result =
@@ -6398,7 +6401,9 @@ public class RIL extends BaseCommands implements CommandsInterface {
            dnses = result.dnses.stream().toArray(String[]::new);
            gateways = result.gateways.stream().toArray(String[]::new);
            pcscfs = result.pcscf.stream().toArray(String[]::new);
            mtu = result.mtu;
            mtu = 0;
            mtuV4 = result.mtuV4;
            mtuV6 = result.mtuV6;
            version = 5;
        } else {
            Rlog.e(RILJ_LOG_TAG, "Unsupported SetupDataCallResult " + dcResult);
@@ -6476,8 +6481,22 @@ public class RIL extends BaseCommands implements CommandsInterface {
            }
        }

        return new DataCallResponse(cause, suggestedRetryTime, cid, active, protocolType, ifname,
                laList, dnsList, gatewayList, pcscfList, mtu);
        return new DataCallResponse.Builder()
                .setCause(cause)
                .setSuggestedRetryTime(suggestedRetryTime)
                .setId(cid)
                .setLinkStatus(active)
                .setProtocolType(protocolType)
                .setInterfaceName(ifname)
                .setAddresses(laList)
                .setDnsAddresses(dnsList)
                .setGatewayAddresses(gatewayList)
                .setPcscfAddresses(pcscfList)
                .setMtu(mtu)
                .setMtuV4(mtuV4)
                .setMtuV6(mtuV6)
                .setVersion(version)
                .build();
    }

    /**
+11 −5
Original line number Diff line number Diff line
@@ -644,10 +644,13 @@ public class DataConnection extends StateMachine {

        // Check if we should fake an error.
        if (mDcTesterFailBringUpAll.getDcFailBringUp().mCounter  > 0) {
            DataCallResponse response = new DataCallResponse(
                    mDcTesterFailBringUpAll.getDcFailBringUp().mFailCause,
                    mDcTesterFailBringUpAll.getDcFailBringUp().mSuggestedRetryTime, 0, 0, 0, "",
                    null, null, null, null, PhoneConstants.UNSET_MTU);
            DataCallResponse response = new DataCallResponse.Builder()
                    .setCause(mDcTesterFailBringUpAll.getDcFailBringUp().mFailCause)
                    .setSuggestedRetryTime(
                            mDcTesterFailBringUpAll.getDcFailBringUp().mSuggestedRetryTime)
                    .setMtuV4(PhoneConstants.UNSET_MTU)
                    .setMtuV6(PhoneConstants.UNSET_MTU)
                    .build();

            Message msg = obtainMessage(EVENT_SETUP_DATA_CONNECTION_DONE, cp);
            AsyncResult.forMessage(msg, response, null);
@@ -1474,14 +1477,17 @@ public class DataConnection extends StateMachine {
                }

                for (InetAddress gateway : response.getGatewayAddresses()) {
                    int mtu = linkProperties.hasGlobalIPv6Address() ? response.getMtuV6()
                            : response.getMtuV4();
                    // Allow 0.0.0.0 or :: as a gateway;
                    // this indicates a point-to-point interface.
                    linkProperties.addRoute(new RouteInfo(null, gateway, null,
                            RouteInfo.RTN_UNICAST));
                            RouteInfo.RTN_UNICAST, mtu));
                }

                // set interface MTU
                // this may clobber the setting read from the APN db, but that's ok
                // TODO: remove once LinkProperties#setMtu is deprecated
                linkProperties.setMtu(response.getMtu());

                result = SetupResult.SUCCESS;
+19 −10
Original line number Diff line number Diff line
@@ -1633,17 +1633,26 @@ public class RILTest extends TelephonyTest {
        result10.pcscf = "fd00:976a:c206:20::6   fd00:976a:c206:20::9    fd00:976a:c202:1d::9";
        result10.mtu = 1500;

        DataCallResponse response = new DataCallResponse(0, -1, 0, 2, ApnSetting.PROTOCOL_IPV4V6,
                "ifname",
                Arrays.asList(new LinkAddress(InetAddresses.parseNumericAddress("10.0.2.15"), 32),
                        new LinkAddress("2607:fb90:a620:651d:eabe:f8da:c107:44be/64")),
                Arrays.asList(InetAddresses.parseNumericAddress("10.0.2.3"),
                        InetAddresses.parseNumericAddress("fd00:976a::9")),
                Arrays.asList(InetAddresses.parseNumericAddress("10.0.2.15"),
                        InetAddresses.parseNumericAddress("fe80::2")),
                Arrays.asList(InetAddresses.parseNumericAddress("fd00:976a:c206:20::6"),
        DataCallResponse response = new DataCallResponse.Builder()
                .setCause(0)
                .setSuggestedRetryTime(-1)
                .setId(0)
                .setLinkStatus(2)
                .setProtocolType(ApnSetting.PROTOCOL_IPV4V6)
                .setInterfaceName("ifname")
                .setAddresses(Arrays.asList(
                        new LinkAddress(InetAddresses.parseNumericAddress("10.0.2.15"), 32),
                        new LinkAddress("2607:fb90:a620:651d:eabe:f8da:c107:44be/64")))
                .setDnsAddresses(Arrays.asList(InetAddresses.parseNumericAddress("10.0.2.3"),
                        InetAddresses.parseNumericAddress("fd00:976a::9")))
                .setGatewayAddresses(Arrays.asList(InetAddresses.parseNumericAddress("10.0.2.15"),
                        InetAddresses.parseNumericAddress("fe80::2")))
                .setPcscfAddresses(Arrays.asList(
                        InetAddresses.parseNumericAddress("fd00:976a:c206:20::6"),
                        InetAddresses.parseNumericAddress("fd00:976a:c206:20::9"),
                        InetAddresses.parseNumericAddress("fd00:976a:c202:1d::9")), 1500);
                        InetAddresses.parseNumericAddress("fd00:976a:c202:1d::9")))
                .setMtu(1500)
                .build();

        assertEquals(response, RIL.convertDataCallResult(result10));

+67 −30
Original line number Diff line number Diff line
@@ -36,13 +36,22 @@ public class DataCallResponseTest extends AndroidTestCase {

    @SmallTest
    public void testParcel() throws Exception {
        DataCallResponse response = new DataCallResponse(0, -1, 1, 2,
                ApnSetting.PROTOCOL_IP, FAKE_IFNAME,
                Arrays.asList(new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0)),
                Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS)),
                Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY)),
                Arrays.asList(InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS)),
                1440);
        DataCallResponse response = new DataCallResponse.Builder()
                .setCause(0)
                .setSuggestedRetryTime(-1)
                .setId(1)
                .setLinkStatus(2)
                .setProtocolType(ApnSetting.PROTOCOL_IP)
                .setInterfaceName(FAKE_IFNAME)
                .setAddresses(Arrays.asList(
                        new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0)))
                .setDnsAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS)))
                .setGatewayAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY)))
                .setPcscfAddresses(
                        Arrays.asList(InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS)))
                .setMtuV4(1440)
                .setMtuV6(1440)
                .build();

        Parcel p = Parcel.obtain();
        response.writeToParcel(p, 0);
@@ -54,34 +63,62 @@ public class DataCallResponseTest extends AndroidTestCase {

    @SmallTest
    public void testEquals() throws Exception {
        DataCallResponse response = new DataCallResponse(0, -1, 1, 2,
                ApnSetting.PROTOCOL_IP, FAKE_IFNAME,
                Arrays.asList(new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0)),
                Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS)),
                Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY)),
                Arrays.asList(InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS)),
                1440);
        DataCallResponse response = new DataCallResponse.Builder()
                .setCause(0)
                .setSuggestedRetryTime(-1)
                .setId(1)
                .setLinkStatus(2)
                .setProtocolType(ApnSetting.PROTOCOL_IP)
                .setInterfaceName(FAKE_IFNAME)
                .setAddresses(Arrays.asList(
                        new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0)))
                .setDnsAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS)))
                .setGatewayAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY)))
                .setPcscfAddresses(
                        Arrays.asList(InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS)))
                .setMtuV4(1440)
                .setMtuV6(1400)
                .build();

        DataCallResponse response1 = new DataCallResponse(0, -1, 1, 2,
                ApnSetting.PROTOCOL_IP, FAKE_IFNAME,
                Arrays.asList(new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0)),
                Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS)),
                Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY)),
                Arrays.asList(InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS)),
                1440);
        DataCallResponse response1 = new DataCallResponse.Builder()
                .setCause(0)
                .setSuggestedRetryTime(-1)
                .setId(1)
                .setLinkStatus(2)
                .setProtocolType(ApnSetting.PROTOCOL_IP)
                .setInterfaceName(FAKE_IFNAME)
                .setAddresses(Arrays.asList(
                        new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0)))
                .setDnsAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS)))
                .setGatewayAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY)))
                .setPcscfAddresses(
                        Arrays.asList(InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS)))
                .setMtuV4(1440)
                .setMtuV6(1400)
                .build();

        assertEquals(response, response);
        assertEquals(response, response1);

        DataCallResponse response2 = new DataCallResponse(1, -1, 1, 3,
                ApnSetting.PROTOCOL_IP, FAKE_IFNAME,
                Arrays.asList(new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0)),
                Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS),
                        InetAddresses.parseNumericAddress(FAKE_DNS)),
                Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY)),
                Arrays.asList(InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS),
                        InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS)),
                1441);
        DataCallResponse response2 = new DataCallResponse.Builder()
                .setCause(1)
                .setSuggestedRetryTime(-1)
                .setId(1)
                .setLinkStatus(3)
                .setProtocolType(ApnSetting.PROTOCOL_IP)
                .setInterfaceName(FAKE_IFNAME)
                .setAddresses(Arrays.asList(
                        new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0)))
                .setDnsAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS),
                        InetAddresses.parseNumericAddress(FAKE_DNS)))
                .setGatewayAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY)))
                .setPcscfAddresses(Arrays.asList(
                        InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS),
                        InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS)))
                .setMtuV4(1441)
                .setMtuV6(1440)
                .build();

        assertNotSame(response1, response2);
        assertNotSame(response1, null);
        assertNotSame(response1, new String[1]);
+158 −77

File changed.

Preview size limit exceeded, changes collapsed.

Loading