Remove BaseNetworkObserver from Nat464Xlat
Let ConnectivityService talk to Nat464Xlat through NetworkAgnetInfo directly: - Nat464Xlat will be created once there is a new network bringing up, but Netd doesn't expose the method for unregistering unsolicited event. - ConnectivityService has already registered netd unsolicited event listener, so Nat464Xlat doesn't need to register unsolicited event listenser by itself, it can get the unsolicited event from ConnectivityService directly. Bug: 174837473 Test: atest FrameworksNetTests Change-Id: I751526e8ffa7d25591696ecd8d93b1585c4c20c7
This commit is contained in:
@@ -8662,6 +8662,20 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
long timestampNs, int uid) {
|
||||
mNetworkActivityTracker.setAndReportNetworkActive(isActive, timerLabel, timestampNs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInterfaceLinkStateChanged(String iface, boolean up) {
|
||||
for (NetworkAgentInfo nai: mNetworkAgentInfos) {
|
||||
nai.clatd.interfaceLinkStateChanged(iface, up);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInterfaceRemoved(String iface) {
|
||||
for (NetworkAgentInfo nai: mNetworkAgentInfos) {
|
||||
nai.clatd.interfaceRemoved(iface);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private final LegacyNetworkActivityTracker mNetworkActivityTracker;
|
||||
|
||||
@@ -36,7 +36,6 @@ import android.util.Log;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.net.module.util.NetworkStackConstants;
|
||||
import com.android.server.net.BaseNetworkObserver;
|
||||
|
||||
import java.net.Inet6Address;
|
||||
import java.util.Objects;
|
||||
@@ -48,7 +47,7 @@ import java.util.Objects;
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class Nat464Xlat extends BaseNetworkObserver {
|
||||
public class Nat464Xlat {
|
||||
private static final String TAG = Nat464Xlat.class.getSimpleName();
|
||||
|
||||
// This must match the interface prefix in clatd.c.
|
||||
@@ -174,13 +173,6 @@ public class Nat464Xlat extends BaseNetworkObserver {
|
||||
* and set internal state.
|
||||
*/
|
||||
private void enterStartingState(String baseIface) {
|
||||
try {
|
||||
mNMService.registerObserver(this);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Can't register iface observer for clat on " + mNetwork.toShortString());
|
||||
return;
|
||||
}
|
||||
|
||||
mNat64PrefixInUse = selectNat64Prefix();
|
||||
String addrStr = null;
|
||||
try {
|
||||
@@ -216,11 +208,6 @@ public class Nat464Xlat extends BaseNetworkObserver {
|
||||
* Unregister as a base observer for the stacked interface, and clear internal state.
|
||||
*/
|
||||
private void leaveStartedState() {
|
||||
try {
|
||||
mNMService.unregisterObserver(this);
|
||||
} catch (RemoteException | IllegalStateException e) {
|
||||
Log.e(TAG, "Error unregistering clatd observer on " + mBaseIface + ": " + e);
|
||||
}
|
||||
mNat64PrefixInUse = null;
|
||||
mIface = null;
|
||||
mBaseIface = null;
|
||||
@@ -507,12 +494,10 @@ public class Nat464Xlat extends BaseNetworkObserver {
|
||||
stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void interfaceLinkStateChanged(String iface, boolean up) {
|
||||
mNetwork.handler().post(() -> { handleInterfaceLinkStateChanged(iface, up); });
|
||||
}
|
||||
|
||||
@Override
|
||||
public void interfaceRemoved(String iface) {
|
||||
mNetwork.handler().post(() -> handleInterfaceRemoved(iface));
|
||||
}
|
||||
|
||||
@@ -206,7 +206,6 @@ public class Nat464XlatTest {
|
||||
// Start clat.
|
||||
nat.start();
|
||||
|
||||
verify(mNms).registerObserver(eq(nat));
|
||||
verify(mNetd).clatdStart(eq(BASE_IFACE), eq(NAT64_PREFIX));
|
||||
|
||||
// Stacked interface up notification arrives.
|
||||
@@ -225,7 +224,6 @@ public class Nat464XlatTest {
|
||||
|
||||
verify(mNetd).clatdStop(eq(BASE_IFACE));
|
||||
verify(mConnectivity, times(2)).handleUpdateLinkProperties(eq(mNai), c.capture());
|
||||
verify(mNms).unregisterObserver(eq(nat));
|
||||
assertTrue(c.getValue().getStackedLinks().isEmpty());
|
||||
assertFalse(c.getValue().getAllInterfaceNames().contains(STACKED_IFACE));
|
||||
verify(mDnsResolver).stopPrefix64Discovery(eq(NETID));
|
||||
@@ -346,7 +344,6 @@ public class Nat464XlatTest {
|
||||
|
||||
nat.start();
|
||||
|
||||
verify(mNms).registerObserver(eq(nat));
|
||||
verify(mNetd).clatdStart(eq(BASE_IFACE), eq(NAT64_PREFIX));
|
||||
|
||||
// Stacked interface up notification arrives.
|
||||
@@ -365,7 +362,6 @@ public class Nat464XlatTest {
|
||||
|
||||
verify(mNetd).clatdStop(eq(BASE_IFACE));
|
||||
verify(mConnectivity, times(2)).handleUpdateLinkProperties(eq(mNai), c.capture());
|
||||
verify(mNms).unregisterObserver(eq(nat));
|
||||
verify(mDnsResolver).stopPrefix64Discovery(eq(NETID));
|
||||
assertTrue(c.getValue().getStackedLinks().isEmpty());
|
||||
assertFalse(c.getValue().getAllInterfaceNames().contains(STACKED_IFACE));
|
||||
@@ -386,7 +382,6 @@ public class Nat464XlatTest {
|
||||
|
||||
nat.start();
|
||||
|
||||
verify(mNms).registerObserver(eq(nat));
|
||||
verify(mNetd).clatdStart(eq(BASE_IFACE), eq(NAT64_PREFIX));
|
||||
|
||||
// ConnectivityService immediately stops clat (Network disconnects, IPv4 addr appears, ...)
|
||||
@@ -394,7 +389,6 @@ public class Nat464XlatTest {
|
||||
nat.stop();
|
||||
|
||||
verify(mNetd).clatdStop(eq(BASE_IFACE));
|
||||
verify(mNms).unregisterObserver(eq(nat));
|
||||
verify(mDnsResolver).stopPrefix64Discovery(eq(NETID));
|
||||
assertIdle(nat);
|
||||
|
||||
@@ -430,7 +424,6 @@ public class Nat464XlatTest {
|
||||
|
||||
nat.start();
|
||||
|
||||
verify(mNms).registerObserver(eq(nat));
|
||||
verify(mNetd).clatdStart(eq(BASE_IFACE), eq(NAT64_PREFIX));
|
||||
|
||||
// ConnectivityService immediately stops clat (Network disconnects, IPv4 addr appears, ...)
|
||||
@@ -438,7 +431,6 @@ public class Nat464XlatTest {
|
||||
nat.stop();
|
||||
|
||||
verify(mNetd).clatdStop(eq(BASE_IFACE));
|
||||
verify(mNms).unregisterObserver(eq(nat));
|
||||
verify(mDnsResolver).stopPrefix64Discovery(eq(NETID));
|
||||
assertIdle(nat);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user