package es.tid.rsvp.objects.subobjects;

import java.net.Inet4Address;
import java.net.UnknownHostException;

public class IPv4AddressRROSubobject extends RROSubobject {

	public Inet4Address ipv4address;//IPv4 address
	public int prefix;//IPv4 prefix
	
	public IPv4AddressRROSubobject(){
		super();
		this.setType(SubObjectValues.ERO_SUBOBJECT_IPV4PREFIX);
		this.setRrosolength(8);
	}
	public IPv4AddressRROSubobject(byte [] bytes, int offset){
		super(bytes, offset);
		decode();
	}
	
	public void encode(){
		this.rrosolength=8;
		this.subobject_bytes=new byte[this.rrosolength];
		encodeSoHeader();
		System.arraycopy(ipv4address.getAddress(), 0, this.subobject_bytes, 2, 4);
		this.subobject_bytes[6]=(byte)prefix;
		this.subobject_bytes[7]=0x00;
	}
	
	public void decode(){
		byte[] ipadd=new byte[4]; 
		System.arraycopy(this.subobject_bytes,2, ipadd, 0, 4);
		try {
			ipv4address=(Inet4Address)Inet4Address.getByAddress(ipadd);
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
		prefix=(int)this.subobject_bytes[6];
	}

	public Inet4Address getIpv4address() {
		return ipv4address;
	}

	public void setIpv4address(Inet4Address ipv4address) {
		this.ipv4address = ipv4address;
	}

	public int getPrefix() {
		return prefix;
	}

	public void setPrefix(int prefix) {
		this.prefix = prefix;
	}
	
	public String toString(){
		return ipv4address.getHostAddress();
	}

}