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
- 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
AUTHOR
Patrice <GomoR> Auffret
COPYRIGHT AND LICENSE
Copyright (c) 2006-2018, Patrice <GomoR> Auffret
You may distribute this module under the terms of the Artistic license. See LICENSE.Artistic file in the source distribution archive.