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(); }
@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)); } }