package se.sics.asdistances;
import java.io.Serializable;
/**
* Internal representation of IP prefixes.
*
* @author Niklas Wahlén <nwahlen@kth.se>
*/
public class InternalPrefix implements Serializable {
private static final long serialVersionUID = 2;
private int prefix;
private byte prefixLength;
public InternalPrefix() {
}
public InternalPrefix(int prefix, byte prefixLength) {
if (prefixLength < 0 || prefixLength > 32) {
throw new IllegalArgumentException("Invalid prefix length");
}
this.prefix = ((prefix >>> (32-prefixLength)) << (32-prefixLength));
this.prefixLength = prefixLength;
}
public int getPrefix() {
return prefix;
}
public void setPrefix(int ip) {
this.prefix = ip;
}
public byte getPrefixLength() {
return prefixLength;
}
public void setPrefixLength(byte prefixLength) {
if (prefixLength < 0 || prefixLength > 32) {
throw new IllegalArgumentException("Invalid prefix length");
}
this.prefixLength = prefixLength;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final InternalPrefix other = (InternalPrefix) obj;
if (this.prefix != other.prefix) {
return false;
}
if (this.prefixLength != other.prefixLength) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 7;
hash = 67 * hash + this.prefix;
hash = 67 * hash + this.prefixLength;
return hash;
}
}