File Coverage

blib/lib/Net/DNS/RR/DSYNC.pm
Criterion Covered Total %
statement 52 52 100.0
branch 4 4 100.0
condition 4 4 100.0
subroutine 14 14 100.0
pod 4 4 100.0
total 78 78 100.0


line stmt bran cond sub pod time code
1             package Net::DNS::RR::DSYNC;
2              
3 1     1   6 use strict;
  1         22  
  1         35  
4 1     1   4 use warnings;
  1         1  
  1         91  
5             our $VERSION = (qw$Id: DSYNC.pm 2003 2025-01-21 12:06:06Z willem $)[2];
6              
7 1     1   7 use base qw(Net::DNS::RR);
  1         2  
  1         101  
8              
9              
10             =head1 NAME
11              
12             Net::DNS::RR::DSYNC - DNS DSYNC resource record
13              
14             =cut
15              
16 1     1   5 use integer;
  1         1  
  1         7  
17              
18 1     1   27 use Net::DNS::Parameters qw(:type);
  1         1  
  1         161  
19 1     1   5 use Net::DNS::DomainName;
  1         1  
  1         495  
20              
21              
22             sub _decode_rdata { ## decode rdata from wire-format octet string
23 1     1   3 my ( $self, $data, $offset, @opaque ) = @_;
24              
25 1         4 @{$self}{qw(rrtype scheme port)} = unpack "\@$offset nCn", $$data;
  1         2  
26 1         3 $self->{target} = Net::DNS::DomainName->decode( $data, $offset + 5, @opaque );
27 1         3 return;
28             }
29              
30              
31             sub _encode_rdata { ## encode rdata as wire-format octet string
32 5     5   8 my $self = shift;
33              
34 5         6 my $target = $self->{target};
35 5         6 return pack 'nCn a*', @{$self}{qw(rrtype scheme port)}, $target->encode;
  5         13  
36             }
37              
38              
39             sub _format_rdata { ## format rdata portion of RR string.
40 3     3   7 my $self = shift;
41              
42 3         5 my @params = map { $self->$_ } qw(rrtype scheme port);
  9         19  
43 3         7 my $target = $self->{target};
44 3         13 return ( @params, $target->string );
45             }
46              
47              
48             sub _parse_rdata { ## populate RR from rdata in argument list
49 2     2   6 my ( $self, @argument ) = @_;
50              
51 2         7 $self->$_( shift @argument ) foreach qw(rrtype scheme port target);
52 2         5 return;
53             }
54              
55              
56             sub rrtype {
57 8     8 1 19 my ( $self, @value ) = @_;
58 8         14 for (@value) { $self->{rrtype} = typebyname($_) }
  3         9  
59 8         14 my $typecode = $self->{rrtype};
60 8 100       25 return defined $typecode ? typebyval($typecode) : undef;
61             }
62              
63              
64             sub scheme {
65 8     8 1 756 my ( $self, @value ) = @_;
66 8         9 for (@value) { $self->{scheme} = 0 + $_ }
  3         7  
67 8   100     25 return $self->{scheme} || 0;
68             }
69              
70              
71             sub port {
72 8     8 1 826 my ( $self, @value ) = @_;
73 8         10 for (@value) { $self->{port} = 0 + $_ }
  3         6  
74 8   100     30 return $self->{port} || 0;
75             }
76              
77              
78             sub target {
79 5     5 1 710 my ( $self, @value ) = @_;
80 5         8 for (@value) { $self->{target} = Net::DNS::DomainName->new($_) }
  3         9  
81 5 100       21 return $self->{target} ? $self->{target}->name : undef;
82             }
83              
84              
85             1;
86             __END__