Net::Packet::ETH - Ethernet/802.3 layer 2 object
use Net::Packet::Consts qw(:eth);
require Net::Packet::ETH;
# Build a layer
my $layer = Net::Packet::ETH->new(
type => NP_ETH_TYPE_IPv6,
dst => "00:11:22:33:44:55",
);
$layer->pack;
print 'RAW: '.unpack('H*', $layer->raw)."\n";
# Read a raw layer
my $layer = Net::Packet::ETH->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 Ethernet/802.3 layer.
RFC: ftp://ftp.rfc-editor.org/in-notes/rfc894.txt
See also Net::Packet::Layer and Net::Packet::Layer2
for other attributes and methods.
- src
- dst
- Source and destination MAC addresses, in classical format
(00:11:22:33:44:55).
- type
- The encapsulated layer type (IPv4, IPv6 ...) for Ethernet. Values for
Ethernet types are greater than 1500. If it is less than 1500, you should
use the length attribute (which is an alias of this one), because
the layer is considered a 802.3 one. See
http://www.iana.org/assignments/ethernet-numbers .
- length
- The length of the payload when this layer is a 802.3 one. This is the same
attribute as type, but you cannot use it when calling new
(you can only use it as an accessor after that).
- new
- Object constructor. You can pass attributes that will overwrite default
ones. Default values:
src: $Env->mac (see
Net::Packet::Env)
dst: NP_ETH_ADDR_BROADCAST
type/length: NP_ETH_TYPE_IPv4
- 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.
- isTypeArp
- isTypeIpv4
- isTypeIpv6
- isTypeIp - is type IPv4 or IPv6
- isTypeVlan
- isTypePppoe
- Helper methods. Return true is the encapsulated layer is of specified
type, false otherwise.
Load them: use Net::Packet::Consts qw(:eth);
- NP_ETH_HDR_LEN
- Ethernet header length in bytes.
- NP_ETH_ADDR_BROADCAST
- Ethernet broadcast address.
- NP_ETH_TYPE_IPv4
- NP_ETH_TYPE_IPv6
- NP_ETH_TYPE_ARP
- NP_ETH_TYPE_VLAN
- NP_ETH_TYPE_PPPoE
- Various supported Ethernet types.
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.
NetPacket, Net::RawIP, Net::RawSock
Hey! The above document had some coding errors, which are explained
below:
- Around line 140:
- Non-ASCII character seen before =encoding in '# Build'. Assuming
CP1252