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

Commit da02d98c authored by Jayachandran Chinnakkannu's avatar Jayachandran Chinnakkannu Committed by Automerger Merge Worker
Browse files

Merge "QOS: check for portRange validity before filter matching" into sc-dev am: 5e7fc264

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/15115630

Change-Id: Ie777699c241ad968b3f79a4ad8072e7e6e358c20
parents c56a8074 5e7fc264
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -207,15 +207,19 @@ public class QosCallbackTracker {

        for (final QosBearerFilter sessionFilter : qosBearerSession.getQosBearerFilterList()) {
           if (!sessionFilter.getLocalAddresses().isEmpty()
                   && !sessionFilter.getRemoteAddresses().isEmpty()) {
                   && !sessionFilter.getRemoteAddresses().isEmpty()
                   && sessionFilter.getLocalPortRange().isValid()
                   && sessionFilter.getRemotePortRange().isValid()) {
               if (matchesByRemoteAndLocalAddress(sessionFilter, filter)) {
                   qosFilter = getFilterByPrecedence(qosFilter, sessionFilter);
               }
           } else if (!sessionFilter.getRemoteAddresses().isEmpty()) {
           } else if (!sessionFilter.getRemoteAddresses().isEmpty()
                   && sessionFilter.getRemotePortRange().isValid()) {
               if (matchesByRemoteAddress(sessionFilter, filter)) {
                   qosFilter = getFilterByPrecedence(qosFilter, sessionFilter);
               }
           } else if (!sessionFilter.getLocalAddresses().isEmpty()) {
           } else if (!sessionFilter.getLocalAddresses().isEmpty()
                   && sessionFilter.getLocalPortRange().isValid()) {
               if (matchesByLocalAddress(sessionFilter, filter)) {
                   qosFilter = getFilterByPrecedence(qosFilter, sessionFilter);
               }
+29 −0
Original line number Diff line number Diff line
@@ -457,5 +457,34 @@ public class QosCallbackTrackerTest extends TelephonyTest {
        verify(mDcNetworkAgent, times(1)).notifyQosSessionLost(eq(1), eq(1234), eq(1));
        verify(mDcNetworkAgent, times(1)).notifyQosSessionLost(eq(2), eq(1235), eq(1));
    }

    @Test
    @SmallTest
    public void testQosSessionWithInvalidPortRange() throws Exception {
        // Non-matching QosBearerFilter
        ArrayList<QosBearerFilter> qosFilters1 = new ArrayList<>();
        qosFilters1.add(createIpv4QosFilter("155.55.55.55",
                new QosBearerFilter.PortRange(0,0), 45));

        ArrayList<QosBearerSession> qosSessions = new ArrayList<>();
        qosSessions.add(new QosBearerSession(1234, createEpsQos(5, 6, 7, 8), qosFilters1));

        // Matching QosBearerFilter
        ArrayList<QosBearerFilter> qosFilters2 = new ArrayList<>();
        qosFilters2.add(createIpv4QosFilter("122.22.22.22",
                new QosBearerFilter.PortRange(-1, 1), 45));
        qosSessions.add(new QosBearerSession(1235, createEpsQos(5, 6, 7, 8), qosFilters2));

        mQosCallbackTracker.updateSessions(qosSessions);

        // Add filter after updateSessions
        Filter filter = new Filter(new InetSocketAddress(
                InetAddresses.parseNumericAddress("122.22.22.22"), 2222));
        mQosCallbackTracker.addFilter(1, filter);

        verify(mDcNetworkAgent, never()).notifyQosSessionAvailable(eq(1),
                eq(1235), any(EpsBearerQosSessionAttributes.class));

    }
}