Merge "DO NOT MERGE Pick upstream intf with valid IP conf" into gingerbread

This commit is contained in:
Irfan Sheriff
2011-03-25 11:01:02 -07:00
committed by Android (Google) Code Review
2 changed files with 22 additions and 4 deletions

View File

@@ -51,6 +51,24 @@ public class InterfaceConfiguration implements Parcelable {
append(addr & 0xff);
}
/**
* 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")) {
if (ipAddr != 0) return true;
}
} catch (NullPointerException e) {
return false;
}
return false;
}
/** Implement the Parcelable interface {@hide} */
public int describeContents() {
return 0;

View File

@@ -1173,18 +1173,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;
}
}
}
}