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

Commit ab571a1b authored by Jayachandran C's avatar Jayachandran C
Browse files

Fix up upstream interface types for case DUN_UNSPECIFIED

The existing logic will add TYPE_MOBILE and TYPE_MOBILE_HIPRI
even if the carrier config has TYPE_DUN for DUN_UNSPECIFIED.

A check is added not to modify the upstream interface types
if there is already a cellular interface type. Add TYPE_MOBILE
and TYPE_MOBILE_HIPRI if there is no cellular types found.

Test: Hotspot on Verizon and T-Mobile US.
      Verified the requestNetwork has the DUN capability.

Bug: 38186915
Change-Id: I74fc5c791fee2885bf66df8975e92c2b48f1668c
parent b2bd3292
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -163,20 +163,31 @@ public class TetheringConfiguration {
        }

        // Fix up upstream interface types for DUN or mobile. NOTE: independent
        // of the value of |requiresDun|, cell data of one form or another is
        // of the value of |dunCheck|, cell data of one form or another is
        // *always* an upstream, regardless of the upstream interface types
        // specified by configuration resources.
        if (dunCheck == DUN_REQUIRED) {
            if (!upstreamIfaceTypes.contains(TYPE_MOBILE_DUN)) {
                upstreamIfaceTypes.add(TYPE_MOBILE_DUN);
            }
        } else {
        } else if (dunCheck == DUN_NOT_REQUIRED) {
            if (!upstreamIfaceTypes.contains(TYPE_MOBILE)) {
                upstreamIfaceTypes.add(TYPE_MOBILE);
            }
            if (!upstreamIfaceTypes.contains(TYPE_MOBILE_HIPRI)) {
                upstreamIfaceTypes.add(TYPE_MOBILE_HIPRI);
            }
        } else {
            // Fix upstream interface types for case DUN_UNSPECIFIED.
            // Do not modify if a cellular interface type is already present in the
            // upstream interface types. Add TYPE_MOBILE and TYPE_MOBILE_HIPRI if no
            // cellular interface types are found in the upstream interface types.
            if (!(upstreamIfaceTypes.contains(TYPE_MOBILE_DUN)
                    || upstreamIfaceTypes.contains(TYPE_MOBILE)
                    || upstreamIfaceTypes.contains(TYPE_MOBILE_HIPRI))) {
                upstreamIfaceTypes.add(TYPE_MOBILE);
                upstreamIfaceTypes.add(TYPE_MOBILE_HIPRI);
            }
        }

        return upstreamIfaceTypes;
+3 −0
Original line number Diff line number Diff line
@@ -128,5 +128,8 @@ public class TetheringConfigurationTest {
        assertTrue(cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_DUN));
        // Just to prove we haven't clobbered Wi-Fi:
        assertTrue(cfg.preferredUpstreamIfaceTypes.contains(TYPE_WIFI));
        // Check that we have not added new cellular interface types
        assertFalse(cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE));
        assertFalse(cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_HIPRI));
    }
}