File Coverage

blib/lib/Net/DNS/RR/CSYNC.pm
Criterion Covered Total %
statement 51 51 100.0
branch 8 8 100.0
path n/a
condition 4 4 100.0
subroutine 14 14 100.0
pod 5 5 100.0
total 82 82 100.0


line stmt bran path cond sub pod time code
1               package Net::DNS::RR::CSYNC;
2                
3 1       1   9 use strict;
  1           2  
  1           45  
4 1       1   6 use warnings;
  1           2  
  1           160  
5               our $VERSION = (qw$Id: CSYNC.pm 2003 2025-01-21 12:06:06Z willem $)[2];
6                
7 1       1   9 use base qw(Net::DNS::RR);
  1           3  
  1           160  
8                
9                
10               =head1 NAME
11                
12               Net::DNS::RR::CSYNC - DNS CSYNC resource record
13                
14               =cut
15                
16 1       1   8 use integer;
  1           2  
  1           20  
17                
18 1       1   727 use Net::DNS::RR::NSEC;
  1           3  
  1           721  
19                
20                
21               sub _decode_rdata { ## decode rdata from wire-format octet string
22 1       1   3 my ( $self, $data, $offset ) = @_;
23                
24 1           3 my $limit = $offset + $self->{rdlength};
25 1           4 @{$self}{qw(soaserial flags)} = unpack "\@$offset Nn", $$data;
  1           3  
26 1           2 $offset += 6;
27 1           4 $self->{typebm} = substr $$data, $offset, $limit - $offset;
28 1           4 return;
29               }
30                
31                
32               sub _encode_rdata { ## encode rdata as wire-format octet string
33 5       5   11 my $self = shift;
34                
35 5           14 return pack 'N n a*', $self->soaserial, $self->flags, $self->{typebm};
36               }
37                
38                
39               sub _format_rdata { ## format rdata portion of RR string.
40 3       3   5 my $self = shift;
41                
42 3           8 my @rdata = ( $self->soaserial, $self->flags, $self->typelist );
43 3           15 return @rdata;
44               }
45                
46                
47               sub _parse_rdata { ## populate RR from rdata in argument list
48 2       2   8 my ( $self, @argument ) = @_;
49                
50 2           25 $self->soaserial( shift @argument );
51 2           7 $self->flags( shift @argument );
52 2           7 $self->typelist(@argument);
53 2           6 return;
54               }
55                
56                
57               sub soaserial {
58 13       13 1 29 my ( $self, @value ) = @_;
59 13           30 for (@value) { $self->{soaserial} = 0 + $_ }
  3           15  
60 13     100     61 return $self->{soaserial} || 0;
61               }
62                
63                
64               sub flags {
65 13       13 1 1787 my ( $self, @value ) = @_;
66 13           27 for (@value) { $self->{flags} = 0 + $_ }
  3           9  
67 13     100     77 return $self->{flags} || 0;
68               }
69                
70                
71               sub immediate {
72 4       4 1 2681 my ( $self, @value ) = @_;
73 4 100         14 if ( scalar @value ) {
74 2           7 for ( $self->{flags} |= 0x0001 ) {
75 2 100         10 $_ ^= 0x0001 unless shift @value;
76               }
77               }
78 4           21 return $self->{flags} & 0x0001;
79               }
80                
81                
82               sub soaminimum {
83 4       4 1 1247 my ( $self, @value ) = @_;
84 4 100         13 if ( scalar @value ) {
85 2           8 for ( $self->{flags} |= 0x0002 ) {
86 2 100         7 $_ ^= 0x0002 unless shift @value;
87               }
88               }
89 4           17 return $self->{flags} & 0x0002;
90               }
91                
92                
93               sub typelist {
94 8       8 1 1368 return &Net::DNS::RR::NSEC::typelist;
95               }
96                
97                
98               1;
99               __END__