public IcmpV6CommonPacketTest() { UnknownPacket.Builder unknownb = new UnknownPacket.Builder(); unknownb.rawData(new byte[] {(byte) 0, (byte) 1, (byte) 2, (byte) 3}); IcmpV6EchoRequestPacket.Builder echob = new IcmpV6EchoRequestPacket.Builder(); echob.identifier((short) 100).sequenceNumber((short) 10).payloadBuilder(unknownb); this.type = IcmpV6Type.ECHO_REQUEST; this.code = IcmpV6Code.NO_CODE; this.checksum = (short) 0x1234; try { this.srcAddr = (Inet6Address) InetAddress.getByName("2001:db8::3:2:1"); this.dstAddr = (Inet6Address) InetAddress.getByName("2001:db8::3:2:2"); } catch (UnknownHostException e) { throw new AssertionError(); } IcmpV6CommonPacket.Builder b = new IcmpV6CommonPacket.Builder(); b.type(type) .code(code) .checksum(checksum) .srcAddr(srcAddr) .dstAddr(dstAddr) .correctChecksumAtBuild(false) .payloadBuilder(echob); this.packet = b.build(); }
.code(IcmpV6Code.NO_CODE) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(new SimpleBuilder(packet)) .correctChecksumAtBuild(true);
.code(IcmpV6Code.NO_CODE) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(new SimpleBuilder(packet)) .correctChecksumAtBuild(true);
.code(IcmpV6Code.UNRECOGNIZED_IP_V6_OPT) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(new SimpleBuilder(packet)) .correctChecksumAtBuild(true);
.code(IcmpV6Code.NO_CODE) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(new SimpleBuilder(packet)) .correctChecksumAtBuild(true);
.code(IcmpV6Code.NO_CODE) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(new SimpleBuilder(packet)) .correctChecksumAtBuild(true);
.code(IcmpV6Code.NO_CODE) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(echob) .correctChecksumAtBuild(true);
.code(IcmpV6Code.NO_CODE) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(echob) .correctChecksumAtBuild(true);
.code(IcmpV6Code.NO_CODE) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(new SimpleBuilder(packet)) .correctChecksumAtBuild(true);
.code(IcmpV6Code.NO_CODE) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(new SimpleBuilder(packet)) .correctChecksumAtBuild(true);
.code(IcmpV6Code.NO_CODE) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(new SimpleBuilder(packet)) .correctChecksumAtBuild(true);
.code(IcmpV6Code.PORT_UNREACHABLE) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(new SimpleBuilder(packet)) .correctChecksumAtBuild(true);
.code(IcmpV6Code.NO_CODE) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(new SimpleBuilder(packet)) .correctChecksumAtBuild(true);
.code(IcmpV6Code.NO_CODE) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(new SimpleBuilder(packet)) .correctChecksumAtBuild(true);
.code(IcmpV6Code.NO_CODE) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(new SimpleBuilder(packet)) .correctChecksumAtBuild(true);
.code(IcmpV6Code.FRAGMENT_REASSEMBLY_TIME_EXCEEDED) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(new SimpleBuilder(packet)) .correctChecksumAtBuild(true);
.code(IcmpV6Code.NO_CODE) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(new SimpleBuilder(packet)) .correctChecksumAtBuild(true);
.code(IcmpV6Code.NO_CODE) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(new SimpleBuilder(packet)) .correctChecksumAtBuild(true);
@Override protected Packet getWholePacket() { IpV6Packet.Builder ipv6b = new IpV6Packet.Builder(); ipv6b .version(IpVersion.IPV6) .trafficClass(IpV6SimpleTrafficClass.newInstance((byte) 0x12)) .flowLabel(IpV6SimpleFlowLabel.newInstance(0x12345)) .nextHeader(IpNumber.ICMPV6) .hopLimit((byte) 100) .srcAddr(srcAddr) .dstAddr(dstAddr) .correctLengthAtBuild(true) .payloadBuilder( packet.getBuilder().srcAddr(srcAddr).dstAddr(dstAddr).correctChecksumAtBuild(true)); EthernetPacket.Builder eb = new EthernetPacket.Builder(); eb.dstAddr(MacAddress.getByName("fe:00:00:00:00:02")) .srcAddr(MacAddress.getByName("fe:00:00:00:00:01")) .type(EtherType.IPV6) .payloadBuilder(ipv6b) .paddingAtBuild(true); return eb.build(); }
@Test public void testHasValidChecksum() { IcmpV6CommonPacket.Builder b = packet.getBuilder(); b.srcAddr(srcAddr).dstAddr(dstAddr); IcmpV6CommonPacket p = b.correctChecksumAtBuild(false).build(); assertFalse(packet.hasValidChecksum(srcAddr, dstAddr, false)); assertFalse(packet.hasValidChecksum(srcAddr, dstAddr, true)); b.checksum((short) 0).correctChecksumAtBuild(false); p = b.build(); assertFalse(p.hasValidChecksum(srcAddr, dstAddr, false)); assertTrue(p.hasValidChecksum(srcAddr, dstAddr, true)); b.checksum((short) 1234).correctChecksumAtBuild(true); p = b.build(); assertTrue(p.hasValidChecksum(srcAddr, dstAddr, false)); assertTrue(p.hasValidChecksum(srcAddr, dstAddr, true)); } }