blob: eda4502b33e41fff3c298e82fe02cda9666fc4fe [file] [log] [blame]
package net.floodlightcontroller.util;
import org.openflow.util.HexString;
import net.floodlightcontroller.util.serializers.IPv6Deserializer;
import net.floodlightcontroller.util.serializers.IPv6Serializer;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
import org.codehaus.jackson.map.annotate.JsonSerialize;
/**
* The class representing an IPv6 address.
*/
@JsonDeserialize(using=IPv6Deserializer.class)
@JsonSerialize(using=IPv6Serializer.class)
public class IPv6 {
private long valueHigh; // The higher (more significant) 64 bits
private long valueLow; // The lower (less significant) 64 bits
/**
* Default constructor.
*/
public IPv6() {
this.valueHigh = 0;
this.valueLow = 0;
}
/**
* Constructor from integer values.
*
* @param valueHigh the higher (more significant) 64 bits of the address.
* @param valueLow the lower (less significant) 64 bits of the address.
*/
public IPv6(long valueHigh, long valueLow) {
this.valueHigh = valueHigh;
this.valueLow = valueLow;
}
/**
* Constructor from a string.
*
* @param value the value to use.
*/
public IPv6(String value) {
// TODO: Implement it!
this.valueHigh = 0;
this.valueLow = 0;
}
/**
* Get the value of the higher (more significant) 64 bits of the address.
*
* @return the value of the higher (more significant) 64 bits of the
* address.
*/
public long valueHigh() { return valueHigh; }
/**
* Set the value of the higher (more significant) 64 bits of the address.
*
* @param valueHigh the higher (more significant) 64 bits of the address.
*/
public void setValueHigh(long valueHigh) {
this.valueHigh = valueHigh;
}
/**
* Get the value of the lower (less significant) 64 bits of the address.
*
* @return the value of the lower (less significant) 64 bits of the
* address.
*/
public long valueLow() { return valueLow; }
/**
* Get the value of the lower (less significant) 64 bits of the address.
*
* @param valueLow the lower (less significant) 64 bits of the address.
*/
public void setValueLow(long valueLow) {
this.valueLow = valueLow;
}
/**
* Set the value of the IPv6 address.
*
* @param valueHigh the higher (more significant) 64 bits of the address.
* @param valueLow the lower (less significant) 64 bits of the address.
*/
public void setValue(long valueHigh, long valueLow) {
this.valueHigh = valueHigh;
this.valueLow = valueLow;
}
/**
* Convert the IPv6 value to a ':' separated string.
*
* @return the IPv6 value as a ':' separated string.
*/
@Override
public String toString() {
return HexString.toHexString(this.valueHigh) + ":" +
HexString.toHexString(this.valueLow);
}
}