NAME
Net::Packet::IPv4 - Internet Protocol v4 layer 3 object
SYNOPSIS
use Net::Packet::IPv4;
use Net::Packet::Consts qw(:ipv4);
# Build layer to inject to network
my $ip = Net::Packet::IPv4->new(
flags => NP_IPv4_DONT_FRAGMENT,
dst => "192.168.0.1",
);
# Decode from network to create the object
# Usually, you do not use this, it is used by Net::Packet::Frame
my $ip2 = Net::Packet::IPv4->new(raw => $rawFromNetwork);
print $ip->print, "\n";
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::Packet::Layer and Net::Packet::Layer3 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.
- 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.
METHODS
- new
-
Object constructor. You can pass attributes that will overwrite default ones. Default values:
version: 4
tos: 0
id: getRandom16bitsInt()
length: 0
hlen: 0
flags: 0
ttl: 128
protocol: NP_IPv4_PROTOCOL_TCP
checksum: 0
src: $Env->ip
dst: "127.0.0.1"
options: ""
- 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.
- getHeaderLength
-
Returns the header length in bytes, not including IP options.
- getPayloadLength
-
Returns the length in bytes of encapsulated layers (that is, layer 4 + layer 7).
- getOptionsLength
-
Returns the length in bytes of IP options.
- haveFlagDf
- haveFlagMf
- haveFlagRf
-
Returns 1 if the specified flag is set in flags attribute, 0 otherwise.
- isProtocolTcp
- isProtocolUdp
- isProtocolIcmpv4
-
Returns 1 if the specified protocol is used at layer 4, 0 otherwise.
CONSTANTS
Load them: use Net::Packet::Consts qw(:ipv4);
- NP_IPv4_PROTOCOL_TCP
- NP_IPv4_PROTOCOL_UDP
- NP_IPv4_PROTOCOL_ICMPv4
-
Various protocol type constants.
- NP_IPv4_MORE_FRAGMENT
- NP_IPv4_DONT_FRAGMENT
- NP_IPv4_RESERVED_FRAGMENT
-
Various possible flags.
AUTHOR
Patrice <GomoR> Auffret
COPYRIGHT AND LICENSE
Copyright (c) 2004-2005, Patrice <GomoR> Auffret
You may distribute this module under the terms of the Artistic license. See Copying file in the source distribution archive.
RELATED MODULES
NetPacket, Net::RawIP, Net::RawSock
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 252:
Non-ASCII character seen before =encoding in '# Build'. Assuming CP1252