Search in sources :

Example 1 with IpV4Packet

use of org.pcap4j.packet.IpV4Packet in project trex-stateless-gui by cisco-system-traffic-generator.

the class PortInfoTabConfig method runPingCmd.

private void runPingCmd(Event event) {
    ExecutorService executor = Executors.newSingleThreadExecutor();
    executor.submit(() -> {
        trexClient.serviceMode(port.getIndex(), true);
        savedPingIPv4 = textFieldTabConfigPortPingIPv4.getText();
        guiLogger.appendText(LogType.PING, " Start ping " + savedPingIPv4 + ":");
        AsyncResponseManager.getInstance().muteLogger();
        try {
            int icmp_id = new Random().nextInt(100);
            for (int icmp_sec = 1; icmp_sec < 6; icmp_sec++) {
                EthernetPacket reply = trexClient.sendIcmpEcho(port.getIndex(), savedPingIPv4, icmp_id, icmp_sec, 1000);
                if (reply != null) {
                    IpV4Packet ip = reply.get(IpV4Packet.class);
                    String ttl = String.valueOf(ip.getHeader().getTtlAsInt());
                    IcmpV4CommonPacket echoReplyPacket = reply.get(IcmpV4CommonPacket.class);
                    IcmpV4Type replyType = echoReplyPacket.getHeader().getType();
                    if (IcmpV4Type.ECHO_REPLY.equals(replyType)) {
                        guiLogger.appendText(LogType.PING, " Reply from " + savedPingIPv4 + " size=" + reply.getRawData().length + " ttl=" + ttl + " icmp_sec=" + icmp_sec);
                    } else if (IcmpV4Type.DESTINATION_UNREACHABLE.equals(replyType)) {
                        guiLogger.appendText(LogType.PING, " Destination host unreachable");
                    }
                } else {
                    guiLogger.appendText(LogType.PING, " Request timeout for icmp_seq " + icmp_sec);
                }
            }
        } catch (UnknownHostException e) {
            guiLogger.appendText(LogType.PING, " Unknown host");
        } finally {
            trexClient.serviceMode(port.getIndex(), false);
            AsyncResponseManager.getInstance().unmuteLogger();
        }
    });
}
Also used : IcmpV4CommonPacket(org.pcap4j.packet.IcmpV4CommonPacket) IcmpV4Type(org.pcap4j.packet.namednumber.IcmpV4Type) Random(java.util.Random) UnknownHostException(java.net.UnknownHostException) EthernetPacket(org.pcap4j.packet.EthernetPacket) ExecutorService(java.util.concurrent.ExecutorService) IpV4Packet(org.pcap4j.packet.IpV4Packet) Paint(javafx.scene.paint.Paint)

Example 2 with IpV4Packet

use of org.pcap4j.packet.IpV4Packet in project trex-stateless-gui by cisco-system-traffic-generator.

the class PortLayerConfiguration method runPingCmd.

private void runPingCmd(Event event) {
    if (model.getPortStatus().equalsIgnoreCase("tx")) {
        guiLogger.appendText(LogType.ERROR, "Port " + model.getIndex() + " is in TX mode. Please stop traffic first.");
        return;
    }
    if (Strings.isNullOrEmpty(pingDestination.getText())) {
        guiLogger.appendText(LogType.ERROR, "Empty ping destination address.");
        return;
    }
    if (!model.getL3LayerConfiguration().getState().equalsIgnoreCase("resolved")) {
        guiLogger.appendText(LogType.ERROR, "ARP resolution required. Configure L3 mode properly.");
        return;
    }
    pingCommandBtn.setDisable(true);
    Task<Void> pingTask = new Task<Void>() {

        @Override
        public Void call() {
            TRexClient trexClient = ConnectionManager.getInstance().getTrexClient();
            trexClient.serviceMode(model.getIndex(), true);
            String savedPingIPv4 = pingDestination.getText();
            guiLogger.appendText(LogType.PING, " Start ping " + savedPingIPv4 + ":");
            AsyncResponseManager.getInstance().muteLogger();
            try {
                int icmp_id = new Random().nextInt(100);
                for (int icmp_sec = 1; icmp_sec < 6; icmp_sec++) {
                    EthernetPacket reply = trexClient.sendIcmpEcho(model.getIndex(), savedPingIPv4, icmp_id, icmp_sec, 1000);
                    if (reply != null) {
                        IpV4Packet ip = reply.get(IpV4Packet.class);
                        String ttl = String.valueOf(ip.getHeader().getTtlAsInt());
                        IcmpV4CommonPacket echoReplyPacket = reply.get(IcmpV4CommonPacket.class);
                        IcmpV4Type replyType = echoReplyPacket.getHeader().getType();
                        if (IcmpV4Type.ECHO_REPLY.equals(replyType)) {
                            guiLogger.appendText(LogType.PING, " Reply from " + savedPingIPv4 + " size=" + reply.getRawData().length + " ttl=" + ttl + " icmp_sec=" + icmp_sec);
                        } else if (IcmpV4Type.DESTINATION_UNREACHABLE.equals(replyType)) {
                            guiLogger.appendText(LogType.PING, " Destination host unreachable");
                        }
                    } else {
                        guiLogger.appendText(LogType.PING, " Request timeout for icmp_seq " + icmp_sec);
                    }
                }
                guiLogger.appendText(LogType.PING, " Ping finished.");
            } catch (UnknownHostException e) {
                guiLogger.appendText(LogType.PING, " Unknown host");
            } finally {
                pingCommandBtn.setDisable(false);
                trexClient.serviceMode(model.getIndex(), false);
                AsyncResponseManager.getInstance().unmuteLogger();
            }
            return null;
        }
    };
    pingTask.setOnSucceeded(e -> pingCommandBtn.setDisable(false));
    new Thread(pingTask).start();
}
Also used : Task(javafx.concurrent.Task) IcmpV4CommonPacket(org.pcap4j.packet.IcmpV4CommonPacket) TRexClient(com.cisco.trex.stateless.TRexClient) UnknownHostException(java.net.UnknownHostException) EthernetPacket(org.pcap4j.packet.EthernetPacket) IcmpV4Type(org.pcap4j.packet.namednumber.IcmpV4Type) Random(java.util.Random) IpV4Packet(org.pcap4j.packet.IpV4Packet)

Example 3 with IpV4Packet

use of org.pcap4j.packet.IpV4Packet in project trex-stateless-gui by cisco-system-traffic-generator.

the class AbstractIPV4Test method buildIPV4Packet.

/**
     * Build IPV4 packet
     *
     * @param packetData
     * @return
     * @throws IOException
     * @throws InterruptedException
     * @throws PcapNativeException
     * @throws NotOpenException
     * @throws java.net.URISyntaxException
     */
public TrexEthernetPacket buildIPV4Packet(PacketData packetData) throws IOException, InterruptedException, PcapNativeException, NotOpenException, URISyntaxException {
    LOG.info("create ethernet packet");
    int packetLength = PacketBuilderHelper.getPacketLength(packetData.getPacketLength().getLengthType(), packetData.getPacketLength().getFrameLength(), packetData.getPacketLength().getMaxLength());
    Payload payload = packetUtil.getPayload(packetData.getPayload());
    TrexEthernetPacket ethernetPacket = packetUtil.prepareEthernetPacket(packetData, packetLength, payload);
    // define VLAN 
    IpV4Packet.Builder ipV4Packet = getIPV4PacketBuilder(PacketBuilderHelper.getIPV4TotalLength(packetData.isTaggedVlan()), packetLength, payload, packetData);
    if (!packetData.isTaggedVlan()) {
        LOG.info("Add IPV4 packet");
        ethernetPacket.buildPacket(ipV4Packet);
    } else {
        packetUtil.addVlanToPacket(ethernetPacket, ipV4Packet);
    }
    return ethernetPacket;
}
Also used : TrexEthernetPacket(com.exalttech.trex.packets.TrexEthernetPacket) TrexIpV4Packet(com.exalttech.trex.packets.TrexIpV4Packet) IpV4Packet(org.pcap4j.packet.IpV4Packet) Payload(com.exalttech.trex.ui.views.streams.builder.Payload)

Aggregations

IpV4Packet (org.pcap4j.packet.IpV4Packet)3 UnknownHostException (java.net.UnknownHostException)2 Random (java.util.Random)2 EthernetPacket (org.pcap4j.packet.EthernetPacket)2 IcmpV4CommonPacket (org.pcap4j.packet.IcmpV4CommonPacket)2 IcmpV4Type (org.pcap4j.packet.namednumber.IcmpV4Type)2 TRexClient (com.cisco.trex.stateless.TRexClient)1 TrexEthernetPacket (com.exalttech.trex.packets.TrexEthernetPacket)1 TrexIpV4Packet (com.exalttech.trex.packets.TrexIpV4Packet)1 Payload (com.exalttech.trex.ui.views.streams.builder.Payload)1 ExecutorService (java.util.concurrent.ExecutorService)1 Task (javafx.concurrent.Task)1 Paint (javafx.scene.paint.Paint)1