Patrice Auffret > Net-Packet-3.27 > Net::Packet::IPv4

Download:
Net-Packet-3.27.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  1
Open  1
View/Report Bugs
Source  

NAME ^

Net::Packet::IPv4 - Internet Protocol v4 layer 3 object

SYNOPSIS ^

   use Net::Packet::Consts qw(:ipv4);
   require Net::Packet::IPv4;

   # Build a layer
   my $ip = Net::Packet::IPv4->new(
      flags => NP_IPv4_DONT_FRAGMENT,
      dst   => "192.168.0.1",
   );
   $layer->pack;

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

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

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::Packet::VLAN 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).

METHODS ^

new

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

version: 4

tos: 0

id: getRandom16bitsInt()

length: NP_IPv4_HDR_LEN

hlen: 5

flags: 0

offset: 0

ttl: 128

protocol: NP_IPv4_PROTOCOL_TCP

checksum: 0

src: $Env->ip

dst: "127.0.0.1"

options: ""

noFixLen: 0

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
isProtocolIpv6
isProtocolOspf
isProtocolIgmpv4
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
NP_IPv4_PROTOCOL_IPv6
NP_IPv4_PROTOCOL_OSPF
NP_IPv4_PROTOCOL_IGMPv4

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-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

syntax highlighting: