File Coverage

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


line stmt bran cond sub pod time code
1             package Net::DNS::RR::CSYNC;
2              
3 1     1   9 use strict;
  1         2  
  1         44  
4 1     1   5 use warnings;
  1         2  
  1         112  
5             our $VERSION = (qw$Id: CSYNC.pm 2003 2025-01-21 12:06:06Z willem $)[2];
6              
7 1     1   7 use base qw(Net::DNS::RR);
  1         3  
  1         157  
8              
9              
10             =head1 NAME
11              
12             Net::DNS::RR::CSYNC - DNS CSYNC resource record
13              
14             =cut
15              
16 1     1   9 use integer;
  1         2  
  1         8  
17              
18 1     1   757 use Net::DNS::RR::NSEC;
  1         3  
  1         679  
19              
20              
21             sub _decode_rdata { ## decode rdata from wire-format octet string
22 1     1   4 my ( $self, $data, $offset ) = @_;
23              
24 1         2 my $limit = $offset + $self->{rdlength};
25 1         5 @{$self}{qw(soaserial flags)} = unpack "\@$offset Nn", $$data;
  1         5  
26 1         2 $offset += 6;
27 1         5 $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   9 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   7 my $self = shift;
41              
42 3         9 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         8 $self->soaserial( shift @argument );
51 2         7 $self->flags( shift @argument );
52 2         8 $self->typelist(@argument);
53 2         6 return;
54             }
55              
56              
57             sub soaserial {
58 13     13 1 30 my ( $self, @value ) = @_;
59 13         27 for (@value) { $self->{soaserial} = 0 + $_ }
  3         14  
60 13   100     68 return $self->{soaserial} || 0;
61             }
62              
63              
64             sub flags {
65 13     13 1 3178 my ( $self, @value ) = @_;
66 13         26 for (@value) { $self->{flags} = 0 + $_ }
  3         10  
67 13   100     66 return $self->{flags} || 0;
68             }
69              
70              
71             sub immediate {
72 4     4 1 1393 my ( $self, @value ) = @_;
73 4 100       15 if ( scalar @value ) {
74 2         7 for ( $self->{flags} |= 0x0001 ) {
75 2 100       11 $_ ^= 0x0001 unless shift @value;
76             }
77             }
78 4         39 return $self->{flags} & 0x0001;
79             }
80              
81              
82             sub soaminimum {
83 4     4 1 959 my ( $self, @value ) = @_;
84 4 100       16 if ( scalar @value ) {
85 2         8 for ( $self->{flags} |= 0x0002 ) {
86 2 100       8 $_ ^= 0x0002 unless shift @value;
87             }
88             }
89 4         20 return $self->{flags} & 0x0002;
90             }
91              
92              
93             sub typelist {
94 8     8 1 2327 return &Net::DNS::RR::NSEC::typelist;
95             }
96              
97              
98             1;
99             __END__