Merge "Configure MTU based on network MTU parameter" into lmp-dev

This commit is contained in:
Robert Greenwalt
2014-08-15 22:11:28 +00:00
committed by Android (Google) Code Review
2 changed files with 24 additions and 1 deletions

View File

@@ -56,6 +56,10 @@ public final class LinkProperties implements Parcelable {
private ProxyInfo mHttpProxy; private ProxyInfo mHttpProxy;
private int mMtu; private int mMtu;
private static final int MIN_MTU = 68;
private static final int MIN_MTU_V6 = 1280;
private static final int MAX_MTU = 10000;
// Stores the properties of links that are "stacked" above this link. // Stores the properties of links that are "stacked" above this link.
// Indexed by interface name to allow modification and to prevent duplicates being added. // Indexed by interface name to allow modification and to prevent duplicates being added.
private Hashtable<String, LinkProperties> mStackedLinks = private Hashtable<String, LinkProperties> mStackedLinks =
@@ -996,4 +1000,17 @@ public final class LinkProperties implements Parcelable {
return new LinkProperties[size]; return new LinkProperties[size];
} }
}; };
/**
* Check the valid MTU range based on IPv4 or IPv6.
* @hide
*/
public static boolean isValidMtu(int mtu, boolean ipv6) {
if (ipv6) {
if ((mtu >= MIN_MTU_V6 && mtu <= MAX_MTU)) return true;
} else {
if ((mtu >= MIN_MTU && mtu <= MAX_MTU)) return true;
}
return false;
}
} }

View File

@@ -1534,11 +1534,17 @@ public class ConnectivityService extends IConnectivityManager.Stub {
return; return;
} }
if (mtu < 68 || mtu > 10000) { if (LinkProperties.isValidMtu(mtu, newLp.hasGlobalIPv6Address())) {
loge("Unexpected mtu value: " + mtu + ", " + iface); loge("Unexpected mtu value: " + mtu + ", " + iface);
return; return;
} }
// Cannot set MTU without interface name
if (TextUtils.isEmpty(iface)) {
loge("Setting MTU size with null iface.");
return;
}
try { try {
if (VDBG) log("Setting MTU size: " + iface + ", " + mtu); if (VDBG) log("Setting MTU size: " + iface + ", " + mtu);
mNetd.setMtu(iface, mtu); mNetd.setMtu(iface, mtu);