package net.floodlightcontroller.packet;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import org.junit.Test;
import org.projectfloodlight.openflow.types.IPv6Address;
import org.projectfloodlight.openflow.types.IpProtocol;
/**
* @author Jacob Chappell (jacob.chappell@uky.edu)
*/
public class IPv6Test {
@Test
public void testSerializeWithoutPayload() {
byte[] expected = new byte[] {
0x64, 0x2B, 0x16, (byte) 0x95, 0x00, 0x00,
0x11, (byte) 0xE1, (byte) 0xFE, (byte) 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7A, (byte) 0xC5, (byte) 0xFF, (byte) 0xFE,
0x2E, 0x77, 0x35, (byte) 0xFE, (byte) 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x77, 0x5D, (byte) 0xFF, (byte) 0xFE,
(byte) 0xC2, 0x30, (byte) 0xFD
};
IPv6 packet = (new IPv6())
.setTrafficClass((byte) 0x42)
.setFlowLabel(0xB1695)
.setPayloadLength((short) 0)
.setNextHeader(IpProtocol.of((short) 0x11))
.setHopLimit((byte) 0xE1)
.setSourceAddress(IPv6Address.of("fe80::7a:c5ff:fe2e:7735"))
.setDestinationAddress(IPv6Address.of("fe80::77:5dff:fec2:30fd"));
byte[] actual = packet.serialize();
assertTrue(Arrays.equals(expected, actual));
}
@Test
public void testDeserialize() throws PacketParsingException {
byte[] spudPacket = {
0x64, 0x2B, 0x16, (byte) 0x95, 0x00, 0x15,
0x11, (byte) 0xE1, (byte) 0xFE, (byte) 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7A, (byte) 0xC5, (byte) 0xFF, (byte) 0xFE,
0x2E, 0x77, 0x35, (byte) 0xFE, (byte) 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x77, 0x5D, (byte) 0xFF, (byte) 0xFE,
(byte) 0xC2, 0x30, (byte) 0xFD, (byte) 0xD2,
0x01, 0x05, 0x7A, 0x00, 0x15, (byte) 0xF6,
(byte) 0xC8, (byte) 0xD8, 0x00, 0x00,
(byte) 0xD8, 0x4A, (byte) 0xC3, (byte) 0xF2,
0x02, 0x44, 0x75, (byte) 0x97, 0x69, 0x40
};
IPv6 packet = new IPv6();
packet.deserialize(spudPacket, 0, spudPacket.length);
byte[] packetSerialized = packet.serialize();
assertTrue(Arrays.equals(spudPacket, packetSerialized));
}
}