Net::Packet::ICMPv4

Section: User Contributed Perl Documentation (3pm)
Updated: 2009-11-09
Index Return to Main Contents
 

NAME

Net::Packet::ICMPv4 - Internet Control Message Protocol v4 layer 4 object  

SYNOPSIS

   use Net::Packet::Consts qw(:icmpv4);
   require Net::Packet::ICMPv4;

   # Build echo-request header
   my $echo = Net::Packet::ICMPv4->new(data => '0123456789');

   # Build information-request header
   my $info = Net::Packet::ICMPv4->new(
      type => NP_ICMPv4_TYPE_INFORMATION_REQUEST,
      data => '0123456789',
   );

   # Build address-mask request header
   my $mask = Net::Packet::ICMPv4->new(
      type => NP_ICMPv4_TYPE_ADDRESS_MASK_REQUEST,
      data => '0123456789',
   );

   # Build timestamp request header
   my $timestamp = Net::Packet::ICMPv4->new(
      type => NP_ICMPv4_TYPE_TIMESTAMP_REQUEST,
      data => '0123456789',
   );
   $timestamp->pack;

   print 'RAW: '.unpack('H*', $timestamp->raw)."\n";

   # Read a raw layer
   my $layer = Net::Packet::ICMPv4->new(raw => $raw);

   print $layer->print."\n";
   print 'PAYLOAD: '.unpack('H*', $layer->payload)."\n"
      if $layer->payload;

 

DESCRIPTION

This modules implements the encoding and decoding of the ICMPv4 layer.

RFC: ftp://ftp.rfc-editor.org/in-notes/rfc792.txt

See also Net::Packet::Layer and Net::Packet::Layer4 for other attributes a nd methods.  

ATTRIBUTES

type
code
Type and code fields. See CONSTANTS.
checksum
The checksum of ICMPv4 header.
identifier
Identification number.
sequenceNumber
Sequence number.
originateTimestamp
receiveTimestamp
transmitTimestamp
Three timestamps used by the NP_ICMPv4_TYPE_TIMESTAMP_REQUEST message.
addressMask
Used by the NP_ICMPv4_TYPE_ADDRESS_MASK_REQUEST message.
gateway
Used by the NP_ICMPv4_TYPE_REDIRECT message.
unused
Zero value field used in various ICMP messages.
error
A pointer to a Net::Packet::Frame object, usually set when an ICMP error message has been returned.
data
Additionnal data can be added to an ICMP message, traditionnaly used in NP_ICMPv4_TYPE_ECHO_REQUEST.
 

METHODS

new
Object constructor. You can pass attributes that will overwrite default ones. Default values:

type: NP_ICMPv4_TYPE_ECHO_REQUEST

code: NP_ICMPv4_CODE_ZERO

checksum: 0

identifier: getRandom16bitsInt()

sequenceNumber: getRandom16bitsInt()

originateTimestamp: time()

receiveTimestamp: 0

transmitTimestamp: 0

addressMask: 0

gateway: ``127.0.0.1''

unused: 0

data: ""

recv
Will search for a matching replies in framesSorted or frames from a Net::Packet::Dump object.
getDataLength
Returns the length in bytes of data attribute.
pack
Packs all attributes into a raw format, in order to inject to network. Returns 1 on success, undef otherwise.
unpack
Unpacks raw data from network and stores attributes into the object. Returns 1 on success, undef otherwise.
isTypeEchoRequest
isTypeEchoReply
isTypeTimestampRequest
isTypeTimestampReply
isTypeInformationRequest
isTypeInformationReply
isTypeAddressMaskRequest
isTypeAddressMaskReply
isTypeDestinationUnreachable
Returns 1 if the type attribute is of specified type.
 

CONSTANTS

Load them: use Net::Packet::Consts qw(:icmpv4);
NP_ICMPv4_CODE_ZERO
ICMP code zero, used by various ICMP messages.
NP_ICMPv4_TYPE_DESTINATION_UNREACHABLE
NP_ICMPv4_CODE_NETWORK
NP_ICMPv4_CODE_HOST
NP_ICMPv4_CODE_PROTOCOL
NP_ICMPv4_CODE_PORT
NP_ICMPv4_CODE_FRAGMENTATION_NEEDED
NP_ICMPv4_CODE_SOURCE_ROUTE_FAILED
Destination unreachable type, with possible code numbers.
NP_ICMPv4_TYPE_REDIRECT
NP_ICMPv4_CODE_FOR_NETWORK
NP_ICMPv4_CODE_FOR_HOST
NP_ICMPv4_CODE_FOR_TOS_AND_NETWORK
NP_ICMPv4_CODE_FOR_TOS_AND_HOST
Redirect type message, with possible code numbers.
NP_ICMPv4_TYPE_TIME_EXCEEDED
NP_ICMPv4_CODE_TTL_IN_TRANSIT
NP_ICMPv4_CODE_FRAGMENT_REASSEMBLY
Time exceeded message, with possible code numbers.
NP_ICMPv4_TYPE_ECHO_REQUEST
NP_ICMPv4_TYPE_ECHO_REPLY
NP_ICMPv4_TYPE_TIMESTAMP_REQUEST
NP_ICMPv4_TYPE_TIMESTAMP_REPLY
NP_ICMPv4_TYPE_INFORMATION_REQUEST
NP_ICMPv4_TYPE_INFORMATION_REPLY
NP_ICMPv4_TYPE_ADDRESS_MASK_REQUEST
NP_ICMPv4_TYPE_ADDRESS_MASK_REPLY
Other request/reply ICMP messages types.
 

AUTHOR

Patrice <GomoR> Auffret  

COPYRIGHT AND LICENSE

Copyright (c) 2004-2009, Patrice <GomoR> Auffret

You may distribute this module under the terms of the Artistic license. See LICENSE.Artistic file in the source distribution archive.  

RELATED MODULES

NetPacket, Net::RawIP, Net::RawSock


 

Index

NAME
SYNOPSIS
DESCRIPTION
ATTRIBUTES
METHODS
CONSTANTS
AUTHOR
COPYRIGHT AND LICENSE
RELATED MODULES

This document was created by