final IpV4Packet defragmentedIpV4Packet = IpV4Helper.defragment(list);
ipV4Builder.identification((short) i); for (final Packet ipV4Packet : IpV4Helper.fragment(ipV4Builder.build(), MTU)) { etherBuilder.payloadBuilder( new AbstractBuilder() {
for (IpV4Packet p : IpV4Helper.fragment((IpV4Packet) orgPacket.getPayload(), 987)) { EthernetPacket ep = eb.payloadBuilder(new SimpleBuilder(p)).build(); dumper.dump(ep, ts); orgPacket, eb.payloadBuilder(new SimpleBuilder(IpV4Helper.defragment(list))).build());
list.add(packet1); list.add(packet2); sr = new StringReader(IpV4Helper.defragment(list).toString()); sbr = new BufferedReader(sr);
) { List<IpV4Packet> fragmentedPackets = org.pcap4j.util.IpV4Helper.fragment( (IpV4Packet)packet, NetworkPropertiesLoader.getMtu() );
final IpV4Packet defragmentedIpV4Packet = IpV4Helper.defragment(list);
ipV4Builder.identification((short) i); for (final Packet ipV4Packet : IpV4Helper.fragment(ipV4Builder.build(), MTU)) { etherBuilder.payloadBuilder( new AbstractBuilder() {
@Override public void onEvent(PacketContainer container, long sequence, boolean endOfBatch) throws Exception { IpV4Packet ipV4Packet = container.getIpV4Packet(); if (ipV4Packet == null) { return; } IpV4Packet.IpV4Header ipV4Header = ipV4Packet.getHeader(); if (!ipV4Header.getMoreFragmentFlag() && ipV4Header.getFragmentOffset() == 0) { return; } int identification = ipV4Header.getIdentificationAsInt(); if (shouldSkipEvent(identification, order, total)) { return; } // It seems to be the best place to call 'checkExpired()'... checkExpired(); FragmentedPackets fragmentedPackets = accumulator.computeIfAbsent(identification, i -> new FragmentedPackets()); fragmentedPackets.addPacket(ipV4Packet); if (fragmentedPackets.isAllPacketsReceived()) { try { container.setIpV4Packet(IpV4Helper.defragment(fragmentedPackets.getPackets())); } finally { accumulator.remove(identification); } } else { container.setIpV4Packet(null); } }