Remove more use of netmask

bug:2542681
Change-Id: Ifd75672739ee8262d4df22afd8173e4f3f67260d
This commit is contained in:
Robert Greenwalt
2011-02-11 17:01:02 -08:00
parent 5c733977a4
commit 7fae12cc19

View File

@@ -19,6 +19,7 @@ package android.net;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import java.net.Inet4Address;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.InterfaceAddress; import java.net.InterfaceAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
@@ -38,12 +39,13 @@ public class LinkAddress implements Parcelable {
*/ */
private final int prefixLength; private final int prefixLength;
public LinkAddress(InetAddress address, InetAddress mask) {
this.address = address;
this.prefixLength = computeprefixLength(mask);
}
public LinkAddress(InetAddress address, int prefixLength) { public LinkAddress(InetAddress address, int prefixLength) {
if (address == null || prefixLength < 0 ||
((address instanceof Inet4Address) && prefixLength > 32) ||
(prefixLength > 128)) {
throw new IllegalArgumentException("Bad LinkAddress params " + address +
prefixLength);
}
this.address = address; this.address = address;
this.prefixLength = prefixLength; this.prefixLength = prefixLength;
} }
@@ -53,18 +55,6 @@ public class LinkAddress implements Parcelable {
this.prefixLength = interfaceAddress.getNetworkPrefixLength(); this.prefixLength = interfaceAddress.getNetworkPrefixLength();
} }
private static int computeprefixLength(InetAddress mask) {
int count = 0;
for (byte b : mask.getAddress()) {
for (int i = 0; i < 8; ++i) {
if ((b & (1 << i)) != 0) {
++count;
}
}
}
return count;
}
@Override @Override
public String toString() { public String toString() {
return (address == null ? "" : (address.getHostAddress() + "/" + prefixLength)); return (address == null ? "" : (address.getHostAddress() + "/" + prefixLength));