Net-Frame-Layer-ICMPv6-MLD
view release on metacpan or search on metacpan
lib/Net/Frame/Layer/ICMPv6/MLD.pm view on Meta::CPAN
}
sub getLength { 20 }
sub pack {
my $self = shift;
my $raw = $self->SUPER::pack('nna*',
$self->maxResp,
$self->reserved,
inet6Aton($self->groupAddress)
) or return;
return $self->raw($raw);
}
sub unpack {
my $self = shift;
my ($maxResp, $reserved, $group, $payload) =
$self->SUPER::unpack('nna16 a*', $self->raw)
or return;
$self->maxResp($maxResp);
$self->reserved($reserved);
$self->groupAddress(inet6Ntoa($group));
$self->payload($payload);
return $self;
}
sub encapsulate {
my $self = shift;
return $self->nextLayer if $self->nextLayer;
lib/Net/Frame/Layer/ICMPv6/MLD/Query.pm view on Meta::CPAN
my $qrv = Bit::Vector->new_Dec(3, $self->qrv);
my $bvlist = $resv->Concat_List($sFlag, $qrv);
my $raw = $self->SUPER::pack('CCn',
$bvlist->to_Dec,
$self->qqic,
$self->numSources
) or return;
for ($self->sourceAddress) {
$raw .= inet6Aton($_);
}
return $self->raw($raw);
}
sub unpack {
my $self = shift;
my ($bv, $qqic, $numSources, $payload) =
$self->SUPER::unpack('CCn a*', $self->raw)
lib/Net/Frame/Layer/ICMPv6/MLD/Query.pm view on Meta::CPAN
$self->sFlag ($bvlist->Chunk_Read(1, 3));
$self->qrv ($bvlist->Chunk_Read(3, 0));
$self->qqic($qqic);
$self->numSources($numSources);
my @sourceAddress = ();
for my $num (0..$numSources-1) {
if (defined($payload) && (length($payload) >= 16)) {
my $addr = unpack 'a16', $payload;
push @sourceAddress, inet6Ntoa($addr);
$payload = substr $payload, 16;
}
}
$self->sourceAddress(\@sourceAddress);
$self->payload($payload);
return $self;
}
lib/Net/Frame/Layer/ICMPv6/MLD/Report/Record.pm view on Meta::CPAN
return $len;
}
sub pack {
my $self = shift;
my $raw = $self->SUPER::pack('CCna16',
$self->type,
$self->auxDataLen,
$self->numSources,
inet6Aton($self->multicastAddress),
) or return;
for ($self->sourceAddress) {
$raw .= inet6Aton($_);
}
if ($self->auxData ne "") {
$raw .= $self->SUPER::pack('a*',
$self->auxData,
) or return;
}
return $self->raw($raw);
}
lib/Net/Frame/Layer/ICMPv6/MLD/Report/Record.pm view on Meta::CPAN
sub unpack {
my $self = shift;
my ($type, $auxDataLen, $numSources, $multicastAddress, $payload) =
$self->SUPER::unpack('CCna16 a*', $self->raw)
or return;
$self->type($type);
$self->auxDataLen($auxDataLen);
$self->numSources($numSources);
$self->multicastAddress(inet6Ntoa($multicastAddress));
my @sourceAddress = ();
for my $num (0..$numSources-1) {
if (defined($payload) && (length($payload) >= 16)) {
my $addr = unpack 'a16', $payload;
push @sourceAddress, inet6Ntoa($addr);
$payload = substr $payload, 16;
}
}
$self->sourceAddress(\@sourceAddress);
$self->auxData("");
# auxDataLen is length in 32-bit words so extra math (/4, *4)
if (($self->auxDataLen > 0) && defined($payload) && ((length($payload)/4) >= $self->auxDataLen)) {
my $auxData = substr $payload, 0, $self->auxDataLen*4;
$self->auxData($auxData);
( run in 1.456 second using v1.01-cache-2.11-cpan-87723dcf8b7 )