package org.zarroboogs.smartzpn.dns; import java.nio.ByteBuffer; public class Resource { public String Domain; public short Type; public short Class; public int TTL; public short DataLength; public byte[] Data; private int offset; public int Offset() { return offset; } private int length; public int Length() { return length; } public static Resource FromBytes(ByteBuffer buffer) { Resource r = new Resource(); r.offset = buffer.arrayOffset() + buffer.position(); r.Domain = DnsPacket.ReadDomain(buffer, buffer.arrayOffset()); r.Type = buffer.getShort(); r.Class = buffer.getShort(); r.TTL = buffer.getInt(); r.DataLength = buffer.getShort(); r.Data = new byte[r.DataLength & 0xFFFF]; buffer.get(r.Data); r.length = buffer.arrayOffset() + buffer.position() - r.offset; return r; } public void ToBytes(ByteBuffer buffer) { if (this.Data == null) { this.Data = new byte[0]; } this.DataLength = (short) this.Data.length; this.offset = buffer.position(); DnsPacket.WriteDomain(this.Domain, buffer); buffer.putShort(this.Type); buffer.putShort(this.Class); buffer.putInt(this.TTL); buffer.putShort(this.DataLength); buffer.put(this.Data); this.length = buffer.position() - this.offset; } }