logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

NetPacket::ICMP - Assemble and disassemble ICMP (Internet Control Message Protocol) packets.

Author

       Tim Potter <tpot@samba.org>

       Stephanie Wehner <atrak@itsx.com>

perl v5.36.0                                       2022-11-19                               NetPacket::ICMP(3pm)

Description

       "NetPacket::ICMP" provides a set of routines for assembling and disassembling packets using ICMP
       (Internet Control Message Protocol).

   Methods
       "NetPacket::ICMP->decode([RAW PACKET])"
           Decode  the  raw  packet  data given and return an object containing instance data.  This method will
           quite happily decode garbage input.  It is the responsibility  of  the  programmer  to  ensure  valid
           packet data is passed to this method.

       "NetPacket::ICMP->encode()"
           Return an ICMP packet encoded with the instance data specified.

   Functions
       "NetPacket::ICMP::strip([RAW PACKET])"
           Return the encapsulated data (or payload) contained in the ICMP packet.

   Instancedata
       The instance data for the "NetPacket::ICMP" object consists of the following fields.

       type
           The ICMP message type of this packet.

       code
           The ICMP message code of this packet.

       cksum
           The checksum for this packet.

       data
           The encapsulated data (payload) for this packet.

   Exports
       default
           none

       exportable
           ICMP message types:
               ICMP_ECHOREPLY ICMP_UNREACH ICMP_SOURCEQUENCH
               ICMP_REDIRECT ICMP_ECHO ICMP_ROUTERADVERT
               ICMP_ROUTERSOLICIT ICMP_TIMXCEED ICMP_PARAMPROB
               ICMP_TSTAMP ICMP_TSTAMPREPLY ICMP_IREQ ICMP_IREQREPLY
               ICMP_MASKREQ ICMP_MASKREPLY

       tags
           The following tags group together related exportable items.

           ":types"
                 ICMP_ECHOREPLY ICMP_UNREACH ICMP_SOURCEQUENCH
                 ICMP_REDIRECT ICMP_ECHO ICMP_ROUTERADVERT
                 ICMP_ROUTERSOLICIT ICMP_TIMXCEED ICMP_PARAMPROB
                 ICMP_TSTAMP ICMP_TSTAMPREPLY ICMP_IREQ
                 ICMP_IREQREPLY ICMP_MASKREQ ICMP_MASKREPLY

           ":strip"
               Import the strip function "icmp_strip".

           ":ALL"
               All the above exportable items.

Example

       The following example prints the ICMP type, code, and checksum fields.

         #!/usr/bin/perl -w

         use strict;
         use Net::PcapUtils;
         use NetPacket::Ethernet qw(:strip);
         use NetPacket::IP qw(:strip);
         use NetPacket::ICMP;

         sub process_pkt {
             my ($user, $hdr, $pkt) = @_;

             my $ip_obj = NetPacket::IP->decode(eth_strip($pkt));
             my $icmp_obj = NetPacket::ICMP->decode(ip_strip($ip_obj));

             print("Type: $icmp_obj->{type}\n");
             print("Code: $icmp_obj->{code}\n");
             print("Checksum: $icmp_obj->{cksum}\n\n");
         }

         Net::PcapUtils::loop(\&process_pkt, FILTER => 'icmp');

Name

       NetPacket::ICMP - Assemble and disassemble ICMP (Internet Control Message Protocol) packets.

Synopsis

         use NetPacket::ICMP;

         $icmp_obj = NetPacket::ICMP->decode($raw_pkt);
         $icmp_pkt = NetPacket::ICMP->encode();
         $icmp_data = NetPacket::ICMP::strip($raw_pkt);

Todo

       Create constants

Version

       version 1.7.2

See Also