1
2
3
4
5
6
7
8
9
10
11
use pnet_packet::icmp::echo_request::MutableEchoRequestPacket;
use pnet_packet::icmp::IcmpTypes;
use pnet_packet::Packet;

pub fn build_icmpv4_packet(icmp_packet: &mut MutableEchoRequestPacket) {
    icmp_packet.set_icmp_type(IcmpTypes::EchoRequest);
    icmp_packet.set_sequence_number(rand::random::<u16>());
    icmp_packet.set_identifier(rand::random::<u16>());
    let icmp_check_sum = pnet_packet::util::checksum(&icmp_packet.packet(), 1);
    icmp_packet.set_checksum(icmp_check_sum);
}