Clear IPv4 address on tethering teardown.
Test: as follows
- built
- flashed
- booted
- runtest frameworks-net passes
- wlan0 in STA mode, wlan1 up/down in AP mode
no lingering IPv4 mode
- USB tethering up/down works
- bluetooth tethering yields:
05-18 17:50:49.726 719 756 D TetherController: untetherInterface(bt-pan)
05-18 17:50:49.729 1194 1230 E Tethering: [bt-pan] ERROR Failed to clear IPv4 address on interface bt-pan: java.lang.IllegalStateException: command '224 interface setcfg bt-pan 0.0.0.0 0' failed with '400 224 Failed to clear address (No such device)'
which is acceptable (no actual crash, just a log message)
Bug: 79905644
Merged-In: Ie898adc4efbb7376f0297abacdfe39c8700f0722
Merged-In: I9eb44eaf4e99fa85fff2909524ee88673bdcf1fd
Merged-In: Iaf29788a6692d810f3160e3f21d06b7452ecbaa6
(cherry picked from commit 472276a874)
Change-Id: Icb5c4f7971af4715c7662f80194b4c1ce369a135
This commit is contained in:
@@ -185,7 +185,12 @@ public class TetherInterfaceStateMachine extends StateMachine {
|
||||
|
||||
private boolean startIPv4() { return configureIPv4(true); }
|
||||
|
||||
private void stopIPv4() { configureIPv4(false); }
|
||||
private void stopIPv4() {
|
||||
configureIPv4(false);
|
||||
// NOTE: All of configureIPv4() will be refactored out of existence
|
||||
// into calls to InterfaceController, shared with startIPv4().
|
||||
mInterfaceCtrl.clearIPv4Address();
|
||||
}
|
||||
|
||||
// TODO: Refactor this in terms of calls to InterfaceController.
|
||||
private boolean configureIPv4(boolean enabled) {
|
||||
|
||||
@@ -779,11 +779,12 @@ public class TetheringTest {
|
||||
sendWifiApStateChanged(WIFI_AP_STATE_ENABLED, TEST_WLAN_IFNAME, IFACE_IP_MODE_TETHERED);
|
||||
mLooper.dispatchAll();
|
||||
|
||||
// We verify get/set called twice here: once for setup and once during
|
||||
// We verify get/set called thrice here: once for setup and twice during
|
||||
// teardown because all events happen over the course of the single
|
||||
// dispatchAll() above.
|
||||
// dispatchAll() above. Note that once the TISM IPv4 address config
|
||||
// code is refactored the two calls during shutdown will revert to one.
|
||||
verify(mNMService, times(2)).getInterfaceConfig(TEST_WLAN_IFNAME);
|
||||
verify(mNMService, times(2))
|
||||
verify(mNMService, times(3))
|
||||
.setInterfaceConfig(eq(TEST_WLAN_IFNAME), any(InterfaceConfiguration.class));
|
||||
verify(mNMService, times(1)).tetherInterface(TEST_WLAN_IFNAME);
|
||||
verify(mWifiManager).updateInterfaceIpState(
|
||||
|
||||
@@ -173,6 +173,7 @@ public class TetherInterfaceStateMachineTest {
|
||||
dispatchCommand(TetherInterfaceStateMachine.CMD_TETHER_UNREQUESTED);
|
||||
InOrder inOrder = inOrder(mNMService, mStatsService, mTetherHelper);
|
||||
inOrder.verify(mNMService).untetherInterface(IFACE_NAME);
|
||||
inOrder.verify(mNMService).setInterfaceConfig(eq(IFACE_NAME), any());
|
||||
inOrder.verify(mTetherHelper).updateInterfaceState(
|
||||
mTestedSm, STATE_AVAILABLE, TETHER_ERROR_NO_ERROR);
|
||||
inOrder.verify(mTetherHelper).updateLinkProperties(
|
||||
@@ -270,6 +271,7 @@ public class TetherInterfaceStateMachineTest {
|
||||
inOrder.verify(mNMService).stopInterfaceForwarding(IFACE_NAME, UPSTREAM_IFACE);
|
||||
inOrder.verify(mNMService).disableNat(IFACE_NAME, UPSTREAM_IFACE);
|
||||
inOrder.verify(mNMService).untetherInterface(IFACE_NAME);
|
||||
inOrder.verify(mNMService).setInterfaceConfig(eq(IFACE_NAME), any());
|
||||
inOrder.verify(mTetherHelper).updateInterfaceState(
|
||||
mTestedSm, STATE_AVAILABLE, TETHER_ERROR_NO_ERROR);
|
||||
inOrder.verify(mTetherHelper).updateLinkProperties(
|
||||
|
||||
Reference in New Issue
Block a user