Net::Frame::Layer::IPv4 - Internet Protocol v4 layer object
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;
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.
- 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
- 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
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.
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.