Ensure MTU is set for new interfaces.
Setting the MTU for an interface should not be skipped when the interface names are different. This occurs when a VPN network creates a new interface with identical MTU. Bug: 246398088 Test: atest ConnectivityServiceTest Test: Manual test: Connect to VPN network and switch networks Test: Confirm MTU of interface is set correctly with `adb shell ip addr` Change-Id: I811a01feca2fb2130c57c6c924145314180434c5
This commit is contained in:
parent
edbf34a182
commit
0425203152
1 changed files with 10 additions and 10 deletions
|
|
@ -3116,22 +3116,23 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||
private void updateMtu(@NonNull LinkProperties newLp, @Nullable LinkProperties oldLp) {
|
||||
final String iface = newLp.getInterfaceName();
|
||||
final int mtu = newLp.getMtu();
|
||||
if (oldLp == null && mtu == 0) {
|
||||
if (mtu == 0) {
|
||||
// Silently ignore unset MTU value.
|
||||
return;
|
||||
}
|
||||
if (oldLp != null && newLp.isIdenticalMtu(oldLp)) {
|
||||
if (VDBG) log("identical MTU - not setting");
|
||||
if (oldLp != null && newLp.isIdenticalMtu(oldLp)
|
||||
&& TextUtils.equals(oldLp.getInterfaceName(), iface)) {
|
||||
if (VDBG) log("identical MTU and iface - not setting");
|
||||
return;
|
||||
}
|
||||
if (!LinkProperties.isValidMtu(mtu, newLp.hasGlobalIpv6Address())) {
|
||||
if (mtu != 0) loge("Unexpected mtu value: " + mtu + ", " + iface);
|
||||
// Cannot set MTU without interface name
|
||||
if (TextUtils.isEmpty(iface)) {
|
||||
if (VDBG) log("Setting MTU size with null iface.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Cannot set MTU without interface name
|
||||
if (TextUtils.isEmpty(iface)) {
|
||||
loge("Setting MTU size with null iface.");
|
||||
if (!LinkProperties.isValidMtu(mtu, newLp.hasGlobalIpv6Address())) {
|
||||
loge("Unexpected mtu value: " + mtu + ", " + iface);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue