|
Packit |
e6c8bb |
# $Id: 31-NSEC-typelist.t 1595 2017-09-12 09:10:56Z willem $ -*-perl-*-
|
|
Packit |
e6c8bb |
#
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
use strict;
|
|
Packit |
e6c8bb |
use Test::More;
|
|
Packit |
e6c8bb |
use Net::DNS;
|
|
Packit |
e6c8bb |
use Net::DNS::Parameters;
|
|
Packit |
e6c8bb |
local $Net::DNS::Parameters::DNSEXTLANG; # suppress Extlang type queries
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
my @prerequisite = qw(
|
|
Packit |
e6c8bb |
Net::DNS::RR::NSEC
|
|
Packit |
e6c8bb |
Net::DNS::DomainName
|
|
Packit |
e6c8bb |
);
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
foreach my $package (@prerequisite) {
|
|
Packit |
e6c8bb |
next if eval "use $package; 1;";
|
|
Packit |
e6c8bb |
plan skip_all => "$package not installed";
|
|
Packit |
e6c8bb |
exit;
|
|
Packit |
e6c8bb |
}
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
plan tests => 79;
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
my $rr = new Net::DNS::RR(
|
|
Packit |
e6c8bb |
type => 'NSEC',
|
|
Packit |
e6c8bb |
nxtdname => 'irrelevant',
|
|
Packit |
e6c8bb |
);
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
foreach my $rrtype ( 0, 256, 512, 768, 1024 ) {
|
|
Packit |
e6c8bb |
my $type = typebyval($rrtype);
|
|
Packit |
e6c8bb |
$rr->typelist($type);
|
|
Packit |
e6c8bb |
my $rdata = $rr->rdata;
|
|
Packit |
e6c8bb |
my ( $name, $offset ) = decode Net::DNS::DomainName( \$rdata );
|
|
Packit |
e6c8bb |
my ( $w, $l, $bitmap ) = unpack "\@$offset CCa*", $rdata;
|
|
Packit |
e6c8bb |
is( $w, $rrtype >> 8, "expected window number for $type" );
|
|
Packit |
e6c8bb |
}
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
foreach my $rrtype ( 0, 7, 8, 15, 16, 23, 24, 31, 32, 39 ) {
|
|
Packit |
e6c8bb |
my $type = typebyval($rrtype);
|
|
Packit |
e6c8bb |
$rr->typelist($type);
|
|
Packit |
e6c8bb |
my $rdata = $rr->rdata;
|
|
Packit |
e6c8bb |
my ( $name, $offset ) = decode Net::DNS::DomainName( \$rdata );
|
|
Packit |
e6c8bb |
my ( $w, $l, $bitmap ) = unpack "\@$offset CCa*", $rdata;
|
|
Packit |
e6c8bb |
is( $l, 1 + ( $rrtype >> 3 ), "expected map length for $type" );
|
|
Packit |
e6c8bb |
}
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
foreach my $rrtype ( 0 .. 40, 42 .. 64 ) {
|
|
Packit |
e6c8bb |
my $type = typebyval($rrtype);
|
|
Packit |
e6c8bb |
$rr->typelist($type);
|
|
Packit |
e6c8bb |
my $rdata = $rr->rdata;
|
|
Packit |
e6c8bb |
my ( $name, $offset ) = decode Net::DNS::DomainName( \$rdata );
|
|
Packit |
e6c8bb |
my ( $w, $l, $bitmap ) = unpack "\@$offset CCa*", $rdata;
|
|
Packit |
e6c8bb |
my $last = unpack 'C', reverse $bitmap;
|
|
Packit |
e6c8bb |
is( $last, ( 0x80 >> ( $rrtype % 8 ) ), "expected map bit for $type" );
|
|
Packit |
e6c8bb |
}
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
exit;
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
__END__
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
|