Merge "Pick an upstream interface with valid IP config" into honeycomb

This commit is contained in:
Irfan Sheriff
2011-01-17 14:14:07 -08:00
committed by Android (Google) Code Review
2 changed files with 28 additions and 6 deletions

View File

@@ -39,14 +39,36 @@ public class InterfaceConfiguration implements Parcelable {
public String toString() {
StringBuffer str = new StringBuffer();
str.append("ipddress "); str.append(addr.toString());
str.append(" netmask "); str.append(mask.toString());
str.append("ipddress ");
str.append((addr != null) ? addr.toString() : "NULL");
str.append(" netmask ");
str.append((mask != null) ? mask.toString() : "NULL");
str.append(" flags ").append(interfaceFlags);
str.append(" hwaddr ").append(hwAddr);
return str.toString();
}
/**
* This function determines if the interface is up and has a valid IP
* configuration (IP address has a non zero octet).
*
* Note: It is supposed to be quick and hence should not initiate
* any network activity
*/
public boolean isActive() {
try {
if(interfaceFlags.contains("up")) {
for (byte b : addr.getAddress()) {
if (b != 0) return true;
}
}
} catch (NullPointerException e) {
return false;
}
return false;
}
/** Implement the Parcelable interface {@hide} */
public int describeContents() {
return 0;

View File

@@ -1233,18 +1233,18 @@ public class Tethering extends INetworkManagementEventObserver.Stub {
for (String iface : ifaces) {
for (String regex : mUpstreamIfaceRegexs) {
if (iface.matches(regex)) {
// verify it is up!
// verify it is active
InterfaceConfiguration ifcg = null;
try {
ifcg = service.getInterfaceConfig(iface);
if (ifcg.isActive()) {
return iface;
}
} catch (Exception e) {
Log.e(TAG, "Error getting iface config :" + e);
// ignore - try next
continue;
}
if (ifcg.interfaceFlags.contains("up")) {
return iface;
}
}
}
}