Net-Frame-Layer-ICMPv6
view release on metacpan or search on metacpan
lib/Net/Frame/Layer/ICMPv6.pm view on Meta::CPAN
if ($mob) {
$ipPayloadLength -= $mob->getLength;
}
# Build pseudo-header and pack ICMPv6 packet
my $zero = Bit::Vector->new_Dec(24, 0);
my $nextHeader = Bit::Vector->new_Dec( 8, $lastNextHeader);
my $v32 = $zero->Concat_List($nextHeader);
my $packed = $self->SUPER::pack('a*a*NNCCn',
inet6Aton($ip->src), inet6Aton($lastIpDst), $ipPayloadLength,
$v32->to_Dec, $self->type, $self->code, 0
) or return;
if (defined($last->payload) && length($last->payload)) {
$payload .= $last->payload;
}
if (length($payload)) {
$packed .= $self->SUPER::pack('a*', $payload)
or return;
}
lib/Net/Frame/Layer/ICMPv6/NeighborAdvertisement.pm view on Meta::CPAN
}
sub pack {
my $self = shift;
my $flags = Bit::Vector->new_Dec( 3, $self->flags);
my $reserved = Bit::Vector->new_Dec(29, $self->reserved);
my $v32 = $flags->Concat_List($reserved);
my $raw = $self->SUPER::pack('Na16',
$v32->to_Dec, inet6Aton($self->targetAddress),
) or return;
for ($self->options) {
$raw .= $_->pack;
}
return $self->raw($raw);
}
sub _unpackOptions {
lib/Net/Frame/Layer/ICMPv6/NeighborAdvertisement.pm view on Meta::CPAN
my $self = shift;
my ($flagsReserved, $targetAddress, $payload) =
$self->SUPER::unpack('Na16 a*', $self->raw)
or return undef;
my $v32 = Bit::Vector->new_Dec(32, $flagsReserved);
$self->reserved($v32->Chunk_Read(29, 0));
$self->flags ($v32->Chunk_Read( 3, 29));
$self->targetAddress(inet6Ntoa($targetAddress));
if (defined($payload) && length($payload)) {
$payload = $self->_unpackOptions($payload);
}
$self->payload($payload);
return $self;
}
lib/Net/Frame/Layer/ICMPv6/NeighborSolicitation.pm view on Meta::CPAN
sub getLength {
my $self = shift;
return 20 + $self->getOptionsLength;
}
sub pack {
my $self = shift;
my $raw = $self->SUPER::pack('Na16',
$self->reserved, inet6Aton($self->targetAddress),
) or return;
for ($self->options) {
$raw .= $_->pack;
}
return $self->raw($raw);
}
sub _unpackOptions {
lib/Net/Frame/Layer/ICMPv6/NeighborSolicitation.pm view on Meta::CPAN
}
sub unpack {
my $self = shift;
my ($reserved, $targetAddress, $payload) =
$self->SUPER::unpack('Na16 a*', $self->raw)
or return;
$self->reserved($reserved);
$self->targetAddress(inet6Ntoa($targetAddress));
if (defined($payload) && length($payload)) {
$payload = $self->_unpackOptions($payload);
}
$self->payload($payload);
return $self;
}
( run in 0.229 second using v1.01-cache-2.11-cpan-87723dcf8b7 )