NAME

Net::Packet::PPPoE - PPP-over-Ethernet layer 3 object

SYNOPSIS

use Net::Packet::Consts qw(:pppoe);
require Net::Packet::PPPoE;

# Build a layer
my $layer = Net::Packet::PPPoE->new(
   version       => 1,
   type          => 1,
   code          => 0,
   sessionId     => 1,
   payloadLength => 0,
   pppProtocol   => NP_PPPoE_PPP_PROTOCOL_IPv4,
);
$layer->pack;

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

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

See also Net::Packet::Layer and Net::Packet::Layer3 for other attributes and methods.

ATTRIBUTES

version - 4 bits
code - 4 bits
type - 8 bits
sessionId - 16 bits
payloadLength - 16 bits
pppProtocol - 16 bits

For this last attribute, we can note that it is included in the computation of payloadLength.

METHODS

new

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

version: 1

type: 1

code: 0

sessionId: 1

payloadLength: 0

pppProtocol: NP_PPPoE_PPP_PROTOCOL_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.

CONSTANTS

Load them: use Net::Packet::Consts qw(:pppoe);

NP_PPPoE_HDR_LEN

PPPoE header length.

NP_PPPoE_PPP_PROTOCOL_IPv4
NP_PPPoE_PPP_PROTOCOL_PPPLCP

Various supported encapsulated PPP protocols.

AUTHOR

Patrice <GomoR> Auffret

COPYRIGHT AND LICENSE

Copyright (c) 2004-2015, 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