Provided by: libnet-frame-perl_1.21-2_all bug

NAME

       Net::Frame::Layer::IPv4 - Internet Protocol v4 layer object

SYNOPSIS

          use Net::Frame::Layer::IPv4 qw(:consts);

          # Build a layer
          my $layer = Net::Frame::Layer::IPv4->new(
             version  => 4,
             tos      => 0,
             id       => getRandom16bitsInt(),
             length   => NF_IPv4_HDR_LEN,
             hlen     => 5,
             flags    => 0,
             offset   => 0,
             ttl      => 128,
             protocol => NF_IPv4_PROTOCOL_TCP,
             checksum => 0,
             src      => '127.0.0.1',
             dst      => '127.0.0.1',
             options  => '',
             noFixLen => 0,
          );
          $layer->pack;

          print 'RAW: '.$layer->dump."\n";

          # Read a raw layer
          my $layer = Net::Frame::Layer::IPv4->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 IPv4 layer.

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

       See also Net::Frame::Layer for other attributes and methods.

ATTRIBUTES

       id  IP ID of the datagram.

       ttl Time to live.

       src
       dst Source and destination IP addresses.

       protocol
           Of which type the layer 4 is.

       checksum
           IP checksum.

       flags
           IP Flags.

       offset
           IP fragment offset.

       version
           IP version, here it is 4.

       tos Type of service flag.

       length
           Total length in bytes of the packet, including IP headers (that is, layer 3 + layer 4
           + layer 7).

       hlen
           Header length in number of words, including IP options.

       options
           IP options, as a hexadecimal string.

       noFixLen
           Since the byte ordering of length attribute varies from system to system, a subroutine
           inside this module detects which byte order to use. Sometimes, like when you build
           Net::Frame::Layer::8021Q layers, you may have the need to avoid this. So set it to 1
           in order to avoid fixing. Default is 0 (that is to fix).

       The following are inherited attributes. See Net::Frame::Layer for more information.

       raw
       payload
       nextLayer

METHODS

       new
       new (hash)
           Object constructor. You can pass attributes that will overwrite default ones. See
           SYNOPSIS for default values.

       getHeaderLength
           Returns the header length in bytes, not including IP options.

       getOptionsLength
           Returns the length in bytes of IP options. 0 if none.

       computeLengths ({ payloadLength => VALUE })
           In order to compute lengths attributes within IPv4 header, you need to pass via a
           hashref the number of bytes contained in IPv4 payload (that is, the sum of all layers
           after the IPv4 one).

       computeChecksums
           Computes the IPv4 checksum.

       The following are inherited methods. Some of them may be overridden in this layer, and
       some others may not be meaningful in this layer. See Net::Frame::Layer for more
       information.

       layer
       computeLengths
       computeChecksums
       pack
       unpack
       encapsulate
       getLength
       getPayloadLength
       print
       dump

CONSTANTS

       Load them: use Net::Frame::Layer::IPv4 qw(:consts);

       NF_IPv4_PROTOCOL_ICMPv4
       NF_IPv4_PROTOCOL_IGMP
       NF_IPv4_PROTOCOL_IPIP
       NF_IPv4_PROTOCOL_TCP
       NF_IPv4_PROTOCOL_EGP
       NF_IPv4_PROTOCOL_IGRP
       NF_IPv4_PROTOCOL_CHAOS
       NF_IPv4_PROTOCOL_UDP
       NF_IPv4_PROTOCOL_IDP
       NF_IPv4_PROTOCOL_DCCP
       NF_IPv4_PROTOCOL_IPv6
       NF_IPv4_PROTOCOL_IPv6ROUTING
       NF_IPv4_PROTOCOL_IPv6FRAGMENT
       NF_IPv4_PROTOCOL_IDRP
       NF_IPv4_PROTOCOL_RSVP
       NF_IPv4_PROTOCOL_GRE
       NF_IPv4_PROTOCOL_ESP
       NF_IPv4_PROTOCOL_AH
       NF_IPv4_PROTOCOL_ICMPv6
       NF_IPv4_PROTOCOL_EIGRP
       NF_IPv4_PROTOCOL_OSPF
       NF_IPv4_PROTOCOL_ETHERIP
       NF_IPv4_PROTOCOL_PIM
       NF_IPv4_PROTOCOL_VRRP
       NF_IPv4_PROTOCOL_STP
       NF_IPv4_PROTOCOL_SCTP
       NF_IPv4_PROTOCOL_UDPLITE
           Various protocol type constants.

       NF_IPv4_MORE_FRAGMENT
       NF_IPv4_DONT_FRAGMENT
       NF_IPv4_RESERVED_FRAGMENT
           Various possible flags.

SEE ALSO

       Net::Frame::Layer

AUTHOR

       Patrice <GomoR> Auffret

COPYRIGHT AND LICENSE

       Copyright (c) 2006-2019, Patrice <GomoR> Auffret

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