Net::Packet::IPv4

NAME

Net::Packet::IPv4

SYNOPSIS

use Net::Packet::IPv4 :short;

my $frame = Buf.new([...]); my $ip = IPv4.new($frame);

say sprintf '%s -> %s: %s', $ip.src.Str, $ip.dst.Str, $ip.proto;

EXPORTS

Net::Packet::IPv4

:short trait adds exports:

constant IPv4 ::= Net::Packet::IPv4; constant IPv4_addr ::= Net::Packet::IPv4_addr; constant IP_proto ::= Net::Packet::IP_proto;

class Net::Packet::IPv4

is Net::Packet::Base

Attributes

 $.src              is rw is Net::Packet::IPv4_addr
$.dst              is rw is Net::Packet::IPv4_addr
  Source/destination ip address field.

$.proto            is rw is Net::Packet::IP_proto
  Protocol field. 

$.id               is rw is Int
$.fragment_offset  is rw is Int
$.flags            is rw is Int
  Identification/Fragment offset/Flags field. All these things
  control fragmentation of IP packets.

$.ihl              is rw is Int
  Internet Header Length field. Used to specify length of the header.
  IPv4 has extra field for options (option fields are NOT YET
  IMPLEMENTED)
  
$.dscp             is rw is Int
$.ecn              is rw is Int
  DSCP/ECN field.  

$.total_length     is rw is Int
  Total length of packet (fragment) size including header and payload in
  bytes.

$.ttl              is rw is Int
  Time To Live field. Helps prevent datagrams from going in circles. It
  limits the datagrams lifetime.

$.hdr_chksum       is rw is Int
  Header checksum field.

Methods

.decode($frame, Net::Packet::Base $parent?) returns Net::Packet::IPv4
  Returns the IPv4 packet corresponding to $frame.
.pl() returns Proxy is rw
  Returns a Proxy for the payload of this packet.
  Usage:
    $eth.pl = ...
    my $ip = $eth.pl.

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.