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

Commit 8afddad7 authored by Robert Greenwalt's avatar Robert Greenwalt
Browse files

DO NOT MERGE Fixing Connectivity

Passing Gateway addr info from telephony into ConnectivityService so it can
add/remove the default route as needed.  Fixed differently on master.

bug:2927822
Change-Id: I9a3ee7cd23c4717e7c60098f0595aa3f77c44b15
parent bccfcd95
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -240,6 +240,7 @@ public class MobileDataStateTracker extends NetworkStateTracker {
                                if (mInterfaceName == null) {
                                    Log.d(TAG, "CONNECTED event did not supply interface name.");
                                }
                                mDefaultGatewayAddr = intent.getIntExtra(Phone.DATA_GATEWAY_KEY, 0);
                                setDetailedState(DetailedState.CONNECTED, reason, apnName);
                                break;
                        }
+15 −0
Original line number Diff line number Diff line
@@ -128,4 +128,19 @@ public class NetworkUtils {
                |  (addrBytes[0] & 0xff);
        return addr;
    }

    public static int v4StringToInt(String str) {
        int result = 0;
        String[] array = str.split("\\.");
        if (array.length != 4) return 0;
        try {
            result = Integer.parseInt(array[3]);
            result = (result << 8) + Integer.parseInt(array[2]);
            result = (result << 8) + Integer.parseInt(array[1]);
            result = (result << 8) + Integer.parseInt(array[0]);
        } catch (NumberFormatException e) {
            return 0;
        }
        return result;
    }
}
+11 −3
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.server;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.NetworkUtils;
import android.os.Binder;
import android.os.Bundle;
import android.os.IBinder;
@@ -348,7 +349,8 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
    }

    public void notifyDataConnection(int state, boolean isDataConnectivityPossible,
            String reason, String apn, String[] apnTypes, String interfaceName, int networkType) {
            String reason, String apn, String[] apnTypes, String interfaceName, int networkType,
            String gateway) {
        if (!checkNotifyPermission("notifyDataConnection()" )) {
            return;
        }
@@ -372,7 +374,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
            }
        }
        broadcastDataConnectionStateChanged(state, isDataConnectivityPossible, reason, apn,
                apnTypes, interfaceName);
                apnTypes, interfaceName, gateway);
    }

    public void notifyDataConnectionFailed(String reason) {
@@ -535,7 +537,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {

    private void broadcastDataConnectionStateChanged(int state,
            boolean isDataConnectivityPossible,
            String reason, String apn, String[] apnTypes, String interfaceName) {
            String reason, String apn, String[] apnTypes, String interfaceName, String gateway) {
        // Note: not reporting to the battery stats service here, because the
        // status bar takes care of that after taking into account all of the
        // required info.
@@ -558,6 +560,12 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
        }
        intent.putExtra(Phone.DATA_APN_TYPES_KEY, types);
        intent.putExtra(Phone.DATA_IFACE_NAME_KEY, interfaceName);
        int gatewayAddr = 0;
        if (gateway != null) {
            gatewayAddr = NetworkUtils.v4StringToInt(gateway);
        }
        intent.putExtra(Phone.DATA_GATEWAY_KEY, gatewayAddr);

        mContext.sendStickyBroadcast(intent);
    }

+2 −1
Original line number Diff line number Diff line
@@ -102,7 +102,8 @@ public class DefaultPhoneNotifier implements PhoneNotifier {
                    sender.getActiveApnTypes(),
                    sender.getInterfaceName(null),
                    ((telephony!=null) ? telephony.getNetworkType() :
                    TelephonyManager.NETWORK_TYPE_UNKNOWN));
                    TelephonyManager.NETWORK_TYPE_UNKNOWN),
                    sender.getGateway(null));
        } catch (RemoteException ex) {
            // system process is dead
        }
+2 −1
Original line number Diff line number Diff line
@@ -32,7 +32,8 @@ interface ITelephonyRegistry {
    void notifyCallForwardingChanged(boolean cfi);
    void notifyDataActivity(int state);
    void notifyDataConnection(int state, boolean isDataConnectivityPossible,
            String reason, String apn, in String[] apnTypes, String interfaceName, int networkType);
            String reason, String apn, in String[] apnTypes, String interfaceName, int networkType,
            String gateway);
    void notifyDataConnectionFailed(String reason);
    void notifyCellLocation(in Bundle cellLocation);
}
Loading