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

Commit 2fb669e6 authored by Lorenzo Colitti's avatar Lorenzo Colitti Committed by Android (Google) Code Review
Browse files

Merge "Stop clat if it's no longer in use." into jb-mr2-dev

parents 326e8bf8 d2ef1e50
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -2285,9 +2285,17 @@ public class ConnectivityService extends IConnectivityManager.Stub {
        }

        // Update 464xlat state.
        // TODO: Move to handleConnect()
        NetworkStateTracker tracker = mNetTrackers[netType];
        if (mClat.requiresClat(netType, tracker)) {
            // If the connection was previously using clat, but is not using it now, stop the clat
            // daemon. Normally, this happens automatically when the connection disconnects, but if
            // the disconnect is not reported, or if the connection's LinkProperties changed for
            // some other reason (e.g., handoff changes the IP addresses on the link), it would
            // still be running. If it's not running, then stopping it is a no-op.
            if (Nat464Xlat.isRunningClat(curLp) && !Nat464Xlat.isRunningClat(newLp)) {
                mClat.stopClat();
            }
            // If the link requires clat to be running, then start the daemon now.
            if (mNetTrackers[netType].getNetworkInfo().isConnected()) {
                mClat.startClat(tracker);
            } else {
+4 −0
Original line number Diff line number Diff line
@@ -87,6 +87,10 @@ public class Nat464Xlat extends BaseNetworkObserver {
        return netType == TYPE_MOBILE && !lp.hasIPv4Address();
    }

    public static boolean isRunningClat(LinkProperties lp) {
      return lp != null && lp.getAllInterfaceNames().contains(CLAT_INTERFACE_NAME);
    }

    /**
     * Starts the clat daemon.
     * @param lp The link properties of the interface to start clatd on.